Зарезервированные слова языка Паскаль
Идентификаторы (имена) используются для обозначения программ, переменных и постоянных величин, процедур, функций.
Общие правила написания идентификаторов
1. Идентификатор может состоять только из букв, цифр и символа подчеркивания.
2. Идентификатор начинается только с буквы или символа подчеркивания (исключение составляют метки, которые могут начинаться с цифры).
3. Максимальная длина идентификатора 127 символов, но значимы только первые 63.
4. Между двумя идентификаторами должен быть, по крайней мере, один пробел.
Стандартные идентификаторы предназначены для обозначения стандартных, т.е. заранее определенных, объектов (констант, процедур и функций), например, integer, sin, cos, write.
Идентификаторы пользователя применяются для обозначения объектов, определенных самим программистом. При их записи следует учитывать, что: 1) идентификаторы в программе должны быть уникальными; 2) нельзя использовать в качестве идентификаторов пользователя зарезервированные слова и стандартные имена; 3) имена для объектов программы надо выбирать так, чтобы они наилучшим образом отражали их значение.
Примеры записи идентификаторов пользователя:
a, t1, r_756, summa – правильно;
cos, while, c#, сумма – неправильно.
Общая структура программы на Паскале
В Паскаль – программе могут быть написаны следующие разделы (рис.1):
Тело программы (основной блок программы).
Заголовок программы состоит из зарезервированного слова program и идентификатора программы.
Раздел объявлений может включать в себя любое количество объявлений используемых библиотек, меток, констант, типов, переменных, процедур и функций.
Правило. В любом месте программы можно использовать лишь те элементы, которые были объявлены ранее по тексту программы.
Основной блок – это собственно программа, использующая всё, что было объявлено. Он начинается словом begin и заканчивается словом end с точкой. После завершающей точки любой текст игнорируется.
Основной блок состоит из операторов (предложений языка программирования), записанных в соответствии с алгоритмом. Операторы отделяются друг от друга символом “ ; ”.
p rogram
СТРУКТУРА ПРОГРАММЫ
Синтаксически программа состоит из необязательного заголовка и блока. Блок состоит из двух частей: описательной и исполнительной. Первая часть может отсутствовать, без второй блок не имеет смысла. Блок, который не входит ни в какой другой, называется глобальным. Если в глобальном блоке находятся другие блоки, они называются локальными. Глобальный блок — это основная программа, он должен присутствовать в любом случае. Локальные блоки — это процедуры и функции, их присутствие необязательно. Объекты программы (типы, переменные, константы и т. д.) соответственно называются глобальными и локальными. Область действия объектов — блок, где они описаны, и все вложенные в него блоки.
ЗАГОЛОВОК И КОММЕНТАРИИ
В начала программы находится заголовок, состоящий в общем случае из зарезервированного слова PROGRAM, имени программы и точки с запятой. После имени программы можно в круглых скобках указать имена стандартных файлов ввода и вывода (INPUT, OUTPUT).
После заголовка обычно пишут комментарий, в котором сказано, для чего программа предназначена, кто ее автор. Комментарий заключается в < >или (* *).
После заголовка следует программный блок, состоящий в общем случае из 6 разделов: описания меток, описания констант, определения типов данных, описания переменных, описания процедур и функций, операторов.
Структура программного блока в общем случае выглядит следующим образом:
Любой раздел , кроме раздела операторов основной программы, может отсутствовать
Раздел описания меток
Перед любым оператором языка PASCAL можно поставить метку, что позволяет выполнить прямой переход на этот оператор с помощью оператора перехода GOTO из любого места блока. Перед употреблением метка должна быть описана. Раздел описания меток начинается зарезервированным словом LABEL (метка), за которым следуют имена меток, разделенные запятыми. За последним именем ставится точка с запятой. Формат:
Пример….. Label 1,2,3,4,15;
Если метка описана, но в разделе операторов не используется, то ошибки при этом не возникает, т. е. Метки можно описывать и применять по мере расширения программы.
Раздел описания констант
В разделе описания констант производится присваивание идентификаторам констант постоянных значений. Раздел начинается зарезервированным словом CONST, за которым следует ряд выражений, присваивающих идентификаторам постоянные числовые или символьные значения.
Пример. CONST k=15;
Раздел описания типов данных
Раздел описания типов данных начинается зарезервированным словом TYPE, за которым следует одно или несколько определений типов, разделенных точкой с запятой.
Matr= array[1..10] of real;
Раздел описания переменных
Каждая встречающаяся в программе переменная должна быть описана. Описание обязательно предшествует использованию переменной. Раздел описания переменных начинается зарезервированным словом VAR (переменная), затем через запятую перечисляются имена переменных, через двоеточие следует их тип и точка с запятой.
Пример. VAR a,b,c : integer;
Раздел описания процедур и функций
В этом разделе размещаются подпрограммы, роль которых и языке PASCAL выполняют процедуры и функции. В общем случае подпрограмма имеет ту же структуру, что и программа. Для описания подпрограмм используются зарезервированные слова PROCEDURE и FUNCTION, которые записываются в начале подпрограммы. Процедура имеет следующий формат:
PROCEDURE< имя процедуры> (<параметры >);
FUNCTION < имя функции > ( <параметры >) : <тип результата >;
Процедуры и функции подразделяются на стандартные и определенные пользователем.стандартные процедуры и функции являются частью языка и могут вызываться без предварительного описания. Описание процедур и функций пользователя обязательно.
Раздел операторов начинается зарезервированным словом BEGIN (начало), далее следуют операторы языка, отделенные друг от друга точкой с запятой. Завершают раздел зарезервированное слово END (конец) и точка:
koder.kz
Так уж случилось что сайт простаивает, а в свое время я занимался им активно, идея просто отличная и забросить ее не в коем случае нельзя, поэтому мной было принято решение о продаже этого сайта.
Что получает в итоге покупатель:
- Весь контент сайта(все содержимое хостинга)
- Полные права на доменное имя сайта(сделаем трансфер)
- Копирайт сайта на большом количестве сторонних ресурсов так как сайту уже более 4-х лет
- Готовый движок форума и все исходные тексты системы управления сайтом
- Все исходные тексты ПО которое опубликовано на сайте
- Все почтовые ящики доменного имени
- Все домены третьего уровня
Дополнительную информацию о статистике посещения, клиентах, вы можете узнать написав на почту koder@koder.kz
Урок 1 — введение
Добавил admin | Категория Pascal за 12 уроков, перевод | 17 Декабря 2013
В программе Вы должны всегда соблюдать правила языка, в нашем случае, языке Паскаля. У естественного языка есть свои собственные правила грамматики, правописание и структуры предложения. Язык программирования Паскаль — язык высокого уровня, у которого есть его собственные правила синтаксиса и правила грамматики. Поскольку вы соглашаетесь с уроками, вы должны отметить то, что вы можете сделать и что вы не можете сделать в письменной форме программы Паскаля. Смотрим пример:
Программа написана только, чтобы показать сообщение ‘Hello World. Prepare to learn PASCAL!!’ — вводное сообщение, которое показано Вам каждый раз, когда Вы собираетесь выучить новый язык программирования. Чтобы показать любое сообщение на экране, Вы должны использовать, ‘ Write’ (или ‘writeln’). Процедура ‘readln’, здесь используется, чтобы ‘остановить’ программу и ждать, пока пользователь не нажмет, Enter. Если процедура ‘readln’ отсутствует в, то сообщение появится на экране на долю секунды, после чего программа завершит свою работу, сообщение естественно нам увидеть не удастся. Удалите строку с Readln; и посмотрите на результат выполнения программы.
Теперь, смотрите на это:
Эта программа так же работает как и первый пример. Единственная разница: неправильное написание кода, код не читаем, так писать некошерно.
Программа в Паскале всегда начинается зарезервированным словом ‘Program’ после чего идет название программы. Есть различные ограничения на то, как нужно объявлять название в программе. Ниже простой пример маленькой программы.
Давайте посмотрим на то что мы написали.
Программа в Паскале начинается с зарезервированного слова ‘Program’ (хотя это явно не требуется), и заканчивается ‘End’, с точкой. Точка никогда не используется в рамках программы, с помощью последнего End с точкой мы говорим компилятору о том что наша программа завершилась.
Раздел ‘Var’, используется, чтобы определить переменные которые будут использованы в программе. Переменные в программе необходимы для того что бы хранить какие то значения, текстовые, числовые, булевые. В нашей программе, переменные ‘Num1’, ‘Num2’ and ‘Sum’ являются числовыми, и имеют тип Integer, данных тип имеет ограничение на размер числа в нем, числа могут быть от -32 768 до 32 767. Таким образом значения которые не входят в указанный диапазон не могут быть сохранены в переменную типа Integer. В паскале есть более большие числовые типы данных, но на данный момент нам этого типа вполне достаточно. Переменные ‘Num1’, ‘Num2’ и ‘Sum’ не являются зарезервированными словами, поэтому могут быть использованы как переменные для хранения и манипуляции над данными. Переменная в программе может изменять свое значение.
Кроме того возможно использование переменных вида ‘number1’, ‘number2’ и ‘totalsum’, в переменных не должно быть пробела, и переменная не должна начинаться с цифры.
После объявления всех переменных, которые требуются, чтобы использоваться в программе, идет ключевое слово ‘Begin’ (первый Begin это начало программы). Без этого слова компилятор не сможет скомпилировать исходный код программы.
Далее в исходном коде нашей программы идет процедура Write(); процедура Write(); отличается от процедуры Writeln(); тем что она выводит сообщение на экран и оставляет курсор мыши на этой же строке, а Writeln(); выводит сообщение на экран и переводит курсор на новую строку. Попробуйте переписать программу c использованием Writeln(); и посмотрите что получается. Для того что бы вывести сообщение процедурой Write нужно в скобках и одинарных кавычках написать какой то текст, например Writeln(‘привет мир’); на экране в этом случае появится сообщение «Привет мир» и курсор переместиться на следующею строку. Так же с помощью Write можно выводить значения переменных на экран, вот как это реализовано у нас в программе Writeln(Sum); Другой важной вещью, которая должна быть замечена, является точка с запятой (;).Точка с запятой используется после каждой процедуры в программе. Однако в примере выше, после ‘Begin’, нет точки с запятой. Это вызвано тем, что поток программы только что начался.
Для описания действий в своем коде используются так называемые комментарии, они объявляются с помощью фигурных скобок <>.
комментарии обычно пишутся для пояснений в коде, в больших участках кода где логика работы может быть запутанной. Например, код, который был написан несколько лет назад и вы не помните, как он работает. Что бы понять его быстрей достаточно оставить описания его работы в комментариях.
Оператор readln в программе выше используется для ввода данных в программу, так же его можно использовать для так называемой остановки программы. Для того что бы ввести значение в переменную Num1 мы пишем Readln(Num1); и программа ждет пока мы введем какое то число с клавиатуры и нажмем Enter, стоит отметить что если ввести не цифры а буквы, программа выдаст ошибку и прекратит свою работу. В дальнейших уроках мы поговорим о том как избежать ошибок во время выполнения программы.
После вывода всех сообщений и ввода необходимых значений в нашей программе идет математическая операция
Использование program, begin…end, write, readln, Uses Crt, Clrscr.
В этом уроке мы напишем самую простую программу, состоящую всего из пяти строк. Эта программа будет выводить сообщение на экран. Для написания программы нам необходимо знать как работают операторы Write, Readln, а также понять для чего нужны зарезервированные в Паскаль слова Program, Begin, End.
В строке №1 записывается заголовок программы. Все программы, написанные на языке Pascal, начинаются со служебного слова program. Слово program зарезервировано в Pascal, т.е. оно может использоваться только для объявления имени программы. Далее, через пробел записывается название программы, которое мы придумываем сами. Для примера назовем нашу первую программу «number1». В конце первой строки ставится точка с запятой.
Строка №2. Тело программы начинается с зарезервированного в Pascal слова begin. После него не ставится точка с запятой. Заканчивается программа зарезервированным словом end. (строка №5). После слова end ставится точка. Конструкция begin…end является разделом операторов. Внутри этого раздела находятся операторы, которые будут выполняться программой. В любой программе должны присутствовать слова begin…end.
В строке №3 записывается первый оператор, который будет выполнять программа. Оператор Write служит для вывода на экран какого-либо сообщения. Текст этого сообщения записывается после слова Write, заключается в круглые скобки и в апострофы. В конце обязательна точка с запятой (все операторы в программе должны отделяться друг от друга точкой с запятой). Таким образом, в результате работы оператора Write на экран будет выведено сообщение «Привет.»
В строке №4 записывается оператор readln. Этот оператор служит для задержки экрана, чтобы мы могли увидеть результаты выполнения программы на экране. Если его не использовать, то после того как программа будет выполнена экран сразу свернется и мы не успеем увидеть выводимое на экран сообщение. Кстати, оператор Readln можно не использовать. А для того чтобы увидеть результаты выполнения программы можно нажать Alt+F5. После оператора Readln у нас не стоит точка с запятой т. к. далее идет оператор end. (перед End. точка с запятой не обязательна). Теперь наберем нашу программу в Паскале.

Сохраним, нажав F2 (или в командной строке File-Save) и запустим ее, нажав Ctrl+F9 (либо в панели команд Run-Run).
Получим следующий результат.
Самая нижняя строка и есть наш результат.
Теперь нажмем Enter (для завершения выполнения программы) и еще раз запустим программу.
Получим следующий результат.
Этим примером я хочу показать Вам, что каждый раз при запуске программы старые результаты программы тоже будут выводиться на экран. Для того чтобы этого избежать, используется оператор очистки экрана clrscr (сокращенно от англ. Clear Screen (очистить экран)), который ставится вначале программы после слова begin. Для того чтобы этот оператор работал необходимо подключить модуль CRT с помощью команды USES.
Программа будет выглядеть так:
Заметьте, что после Uses Crt и после Clrscr ставится точка с запятой.
После запуска (ctrl+F9) окно вывода сообщения будет иметь вид:
Дополнение к материалу.
1. Программа, запущенная в Free Pascal обрабатывается какое-то количество времени. Поэтому после запуска необходимо подождать несколько секунд. Вы увидите сообщение о том, что выполняется программа, а через несколько секунд (1-20) увидите результат выполнения программы.
2. При запуске программ, которые должны выводить на экран текст на русском языке может возникнуть проблема с кодировкой. В консольном окне вы увидите непонятные символы. Для того чтобы этого избежать небходимо кликнуть правой кнопкой мыши по верхней части консольного окна (там, где написано C:\FPC\2.2.2\bin\i386-win32\fp.exe), выбрать «Свойства» и перейти на вкладку «Шрифт». Здесь выбираем «точечные шрифты» и нажимаем Ok.
3. Компилятору Pascal абсолютно безразлично какими буквами Вы будете набирать программу, заглавными или строчными, т.е. регистр при наборе программ роли не играет.
4. Имя программы (в нашем случае «number1») не играет какой-либо роли в программе, поэтому не обязательно объявлять имя программы с помощью слова «Program». Таким образом, первую строку программы можно не писать и это никак не повлияет на работу программы.
5. Как уже было сказано, слово «Program» является зарезервированным словом в Pascal. Зарезервированные слова можно использовать только по их прямому назначению. При наборе программ в редакторе Pascal все зарезервированные слова подсвечиваются белым цветом. Название программы «number1» является идентификатором (именем). Идентификаторы – это последовательности символов, которые придумывает сам программист. В нашем примере нам необходимо было придумать название программы. При написании идентификаторов используются определенные правила:
- Идентификатор начинается с буквы, или знака подчеркивания.
- Содержит только буквы, цифры или знак подчеркивания.
- Между двумя идентификаторами должен стоять разделитель.
- Максимальная длина 127 символов. Все символы значимы.
- Идентификатор не может повторять зарезервированное слово.
Комментарии
Zhenko! Боюсь тут тебе не помогут никак. Большая часть народа либо просто хвастается либо умеет но делать такие простейшие программы как a:=1+1; Обратись лучше на какой нибудь форум, а лучше изучи сам.
Вот один не плохой форум: http://www.cyberforum.ru/
Желаю удачки тебе! Творческих успехов
Вот программа, которая меняет системную дату и время. никак не могу сделать так, чтобы ClrScr заработала. помогите кто в этом шарит.
uses Crt;
Uses Dos;
CONST
days:ARRAY [0..6] of string [11] = (‘Voskr.’, ‘Ponedel.’, ‘Vtornik’, ‘Sreda’, ‘4etverg’, ‘Pyatnica’, ‘Subbota’);
VAR
year, month, day, day_of_week : WORD;
VAR hour, minute, second, hund : WORD;
BEGIN
Writeln (‘_________________________________________’);
Writeln (‘————- ————— ————-‘) ;
ClrScr;
Write(‘Cleared Screen!’);
PROCEDURE Get_Date;
BEGIN
GetDate (year, month, day, day_of_week);
Writeln (‘Segodnya: ‘, days[day_of_wee k], ‘,’, day,’/’, month,’/’,year);
Writeln (‘————- ————— ————-‘) ;
END;
PROCEDURE Set_Date;
BEGIN
Writeln(‘Vvedit e daty: ‘);
Readln(day, month, year);
SetDate (year, month, day);
Writeln (‘_________________________________________’);
Writeln (‘————- ————— ————-‘) ;
END;
PROCEDURE Get_Time;
BEGIN
GetTime (hour, minute, second, hund);
Writeln (‘Sey4as: ‘, hour,’:’, minute,’:’, second,’:’, hund);
Writeln (‘————- ————— ————-‘) ;
END;
PROCEDURE Set_Time;
BEGIN
Writeln (‘Vvedite vremya’);
Readln(hour, minute, second, hund);
SetTime(hour, minute, second, hund);
END;
BEGIN
Get_Date;
Set_Date;
Get_Time;
Set_Time;
Get_Time;
Writeln (‘OK!’);
Writeln;
Writeln (‘Najmite Enter dlya vihoda . ‘);
Readln;
End.
подскажите, переписал все один в один как тут написано, все точки с запятой и все такое. но при запуске программы выскакивает такое сообщение
Error: Identifier not found «readIn»
гуглил не помогло, не смог найти причины.
var
p7, p4, p1, p8, p5, p2, p9, p6, p3, st1, st2, st3, vod1, vod2, ind,ind2,pam, shet, shet1: integer;hod, ris1, ris2, ris3, ris4, ris5, ris6, ris7, ris8, ris9: string;
begin
write(‘Игра башня!’);
writeln(‘Цель игры:пирамидку из левой части перетащить в правую!’);
writeln(‘Как играть! Вы вводите два числа от 1 до 3. ПЕРВОЕ число означает столбец откуда будет взята часть. ВТОРОЕ число означает в какой столбец будет положена.’);
ind2:=1;
while ind2=1 do
begin
shet:=0;
ris1 := ‘(0000)’;ris2 := ‘__|__ ‘;ris3 := ‘__|__ ‘;ris4 := ‘ (00) ‘;ris5 := ‘ | ‘;ris6 := ‘ | ‘;ris7 := ‘ () ‘;ris8 := ‘ | ‘;ris9 := ‘ | ‘;
p1 := 4;p2 := 0;p3 := 0;p4 := 2;p5 := 0;p6 := 0;p7 := 1;p8 := 0;p9 := 0;
writeln(‘Начнем !’);
writeln(‘ () | | ‘);
writeln(‘ (00) | | ‘);
writeln(‘(0000) __|__ __|__ ‘);
writeln(‘ 1 2 3 ‘);
writeln();
ind:=0;
while ind = 0 do
begin
st1 := p7 + p4 + p1;
st2 := p8 + p5 + p2;
st3 := p9 + p6 + p3;
vod1 := 0;
vod2 := 0;
writeln(‘Вводит е ПЕРВОЕ число!’);
while (vod1 > 3) or (vod1 = 0) do
begin
if vod1 > 3 then writeln(‘Число должно быть от 1 до 3,вводите еще раз.’);
readln(vod1);
end;
writeln(‘Вводит е ВТОРОЕ число!’);
while (vod2 > 3) or (vod2 = 0) or (vod2 = vod1) do
begin
if (vod2 > 3) or (vod1 = vod2) then writeln(‘Число должно быть от 1 до 3 и не равно 1 числу,вводите еще раз.’);
readln(vod2);
end;
case vod1 of
1:
begin
case st1 of
1:
begin
if (vod2 = 2) then
case st2 of
0: begin p2 := p1;p1 := 0;shet := shet + 1; end;
2: begin p5 := p1;p1 := 0;shet := shet + 1; end;
4: begin p5 := p1;p1 := 0;shet := shet + 1; end;
6: begin p8 := p1;p1 := 0;shet := shet + 1; end;
end;
if (vod2 = 3) then
case st3 of
0: begin p3 := p1;p1 := 0;shet := shet + 1; end;
2: begin p6 := p1;p1 := 0;shet := shet + 1; end;
4: begin p6 := p1;p1 := 0;shet := shet + 1; end;
6: begin p9 := p1;p1 := 0;shet := shet + 1; end;
end;
end;
2:
begin
if (vod2 = 2) then
case st2 of
0: begin p2 := p1;p1 := 0;shet := shet + 1; end;
1: begin writeln(‘Нельзя так!’); end;
4: begin p5 := p1;p1 := 0;shet := shet + 1; end;
5: begin writeln(‘Нельзя так!’); end;
end;
if (vod2 = 3) then
case st3 of
0: begin p3 := p1;p1 := 0;shet := shet + 1; end;
1: begin writeln(‘Нельзя так!’); end;
4: begin p6 := p1;p1 := 0;shet := shet + 1; end;
5: begin writeln(‘Нельзя так!’); end;
end;
end;
3:
begin
if (vod2 = 2) then
case st2 of
0: begin p2 := p4;p4 := 0; shet := shet + 1; end;
4: begin p5 := p4;p4 := 0;shet := shet + 1; end;
end;
if (vod2 = 3) then
case st3 of
0: begin p3 := p4;p4 := 0;shet := shet + 1; end;
4: begin p6 := p4;p4 := 0;shet := shet + 1; end;
end;
end;
4:
begin
if (vod2 = 2) then
case st2 of
0: begin p2 := p1;p1 := 0;shet := shet + 1; end;
1: begin writeln(‘Нельзя так’); end;
2: begin writeln(‘Нельзя так’); end;
3: begin writeln(‘Нельзя так’); end;
end;
if (vod2 = 3) then
case st3 of
0: begin p3 := p1;p1 := 0;shet := shet + 1; end;
1: begin writeln(‘Нельзя так’); end;
2: begin writeln(‘Нельзя так’); end;
3: begin writeln(‘Нельзя так’); end;
end; end;
5:
begin
if (vod2 = 2) then
case st2 of
0: begin p2 := p4;p4 := 0; shet := shet + 1; end;
2: begin p5 := p4;p4 := 0;shet := shet + 1; end;
end;
if (vod2 = 3) then
case st3 of
0: begin p3 := p4;p4 := 0; shet := shet + 1; end;
2: begin p6 := p4;p4 := 0; shet := shet + 1; end;
end; end;
6:
begin
if (vod2 = 2) then
case st2 of
0: begin p2 := p4;p4 := 0;shet := shet + 1; end;
1: begin writeln(‘Нельзя так’); end;
end;
if (vod2 = 3) then
case st3 of
0: begin p3 := p4;p4 := 0;shet := shet + 1; end;
1: begin writeln(‘Нельзя так’); end;
end; end;
7:
begin
if (vod2 = 2) then begin p2 := p7;p7 := 0;shet := shet + 1; end; if (vod2 = 3) then begin p3 := p7;p7 := 0; shet := shet + 1; end;
end;end; end;
2:
begin
case st2 of
1:
begin
if (vod2 = 1) then
case st1 of
0: begin p1 := p2;p2 := 0;shet := shet + 1; end;
2: begin p4 := p2;p2 := 0; shet := shet + 1; end;
4: begin p4 := p2;p2 := 0;shet := shet + 1; end;
6: begin p7 := p2;p2 := 0;shet := shet + 1; end;
end;
if (vod2 = 3) then
case st3 of
0: begin p3 := p2;p2 := 0;shet := shet + 1; end;
2: begin p6 := p2;p2 := 0;shet := shet + 1; end;
4: begin p6 := p2;p2 := 0;shet := shet + 1; end;
6: begin p9 := p2;p2 := 0;shet := shet + 1; end;
end; end;
2:
begin
if (vod2 = 1) then
case st1 of
0: begin p1 := p2;p2 := 0;shet := shet + 1; end;
1: begin writeln(‘Нельзя так!’); end;
4: begin p4 := p2;p2 := 0;shet := shet + 1; end;
5: begin writeln(‘Нельзя так!’); end;
end;
if (vod2 = 3) then
case st3 of
0: begin p3 := p2;p2 := 0;shet := shet + 1; end;
1: begin writeln(‘Нельзя так!’); end;
4: begin p6 := p2;p2 := 0;shet := shet + 1; end;
5: begin writeln(‘Нельзя так!’); end;
end; end;
3:
begin
if (vod2 = 1) then
case st1 of
0: begin p1 := p5;p5 := 0;shet := shet + 1; end;
4: begin p4 := p5;p5 := 0;shet := shet + 1; end;
end;
if (vod2 = 3) then
case st3 of
0: begin p3 := p5;p5 := 0;shet := shet + 1; end;
4: begin p6 := p5;p5 := 0;shet := shet + 1; end;
end; end;
4:
begin
if (vod2 = 1) then
case st1 of
0: begin p1 := p2;p2 := 0;shet := shet + 1; end;
1: begin writeln(‘Нельзя так’); end;
2: begin writeln(‘Нельзя так’); end;
3: begin writeln(‘Нельзя так’); end;
end;
if (vod2 = 3) then
case st3 of
0: begin p3 := p2;p2 := 0;shet := shet + 1; end;
1: begin writeln(‘Нельзя так’); end;
2: begin writeln(‘Нельзя так’); end;
3: begin writeln(‘Нельзя так’); end;
end; end;
5:
begin
if (vod2 = 1) then
case st1 of
0: begin p1 := p5;p5 := 0;shet := shet + 1; end;
2: begin p4 := p5;p5 := 0;shet := shet + 1; end;
end;
if (vod2 = 3) then
case st3 of
0: begin p3 := p5;p5 := 0;shet := shet + 1; end;
2: begin p6 := p5;p5 := 0;shet := shet + 1; end;
end; end;
6:
begin
if (vod2 = 1) then
case st1 of
0: begin p1 := p5;p5 := 0;shet := shet + 1; end;
1: begin writeln(‘Нельзя так’); end;
end;
if (vod2 = 3) then
case st3 of
0: begin p3 := p5;p5 := 0;shet := shet + 1; end;
1: begin writeln(‘Нельзя так’); end;
end; end;
7:
begin
if (vod2 = 1) then begin p1 := p8;p8 := 0;shet := shet + 1; end;if (vod2 = 3) then begin p3 := p8;p8 := 0;shet := shet + 1; end;
end;end; end;
3:
begin
case st3 of
1:
begin
if (vod2 = 1) then
case st1 of
0: begin p1 := p3;p3 := 0;shet := shet + 1; end;
2: begin p4 := p3;p3 := 0; shet := shet + 1; end;
4: begin p4 := p3;p3 := 0;shet := shet + 1; end;
6: begin p7 := p3;p3 := 0;shet := shet + 1; end;
end;
if (vod2 = 2) then
case st2 of
0: begin p2 := p3;p3 := 0;shet := shet + 1; end;
2: begin p5 := p3;p3 := 0; shet := shet + 1; end;
4: begin p5 := p3;p3 := 0;shet := shet + 1; end;
6: begin p8 := p3;p3 := 0;shet := shet + 1; end;
end; end;
2:
begin
if (vod2 = 1) then
case st1 of
0: begin p1 := p3;p3 := 0;shet := shet + 1; end;
1: begin writeln(‘Нельзя так!’); end;
4: begin p4 := p3;p3 := 0;shet := shet + 1; end;
5: begin writeln(‘Нельзя так!’); end;
end;
if (vod2 = 2) then
case st2 of
0: begin p2 := p3;p3 := 0;shet := shet + 1; end;
1: begin writeln(‘Нельзя так!’); end;
4: begin p5 := p3;p3 := 0;shet := shet + 1; end;
5: begin writeln(‘Нельзя так!’); end;
end; end;
3:
begin
if (vod1 = 1) then
case st1 of
0: begin p1 := p6;p6 := 0;shet := shet + 1; end;
4: begin p4 := p6;p6 := 0;shet := shet + 1; end;
end;
if (vod2 = 2) then
case st2 of
0: begin p2 := p6;p6 := 0;shet := shet + 1; end;
4: begin p5 := p6;p6 := 0;shet := shet + 1; end;
end; end;
4:
begin
if (vod2 = 1) then
case st1 of
0: begin p1 := p3;p3 := 0;shet := shet + 1; end;
1: begin writeln(‘Нельзя так’); end;
2: begin writeln(‘Нельзя так’); end;
3: begin writeln(‘Нельзя так’); end;
end;
if (vod2 = 2) then
case st2 of
0: begin p2 := p3;p3 := 0;shet := shet + 1; end;
1: begin writeln(‘Нельзя так’); end;
2: begin writeln(‘Нельзя так’); end;
3: begin writeln(‘Нельзя так’); end;
end; end;
5:
begin
if (vod2 = 1) then
case st1 of
0: begin p1 := p6;p6 := 0;shet := shet + 1; end;
2: begin p4 := p6;p6 := 0;shet := shet + 1; end;
end;
if (vod2 = 2) then
case st2 of
0: begin p2 := p6;p6 := 0;shet := shet + 1; end;
2: begin p5 := p6;p6 := 0;shet := shet + 1; end;
end; end;
6:
begin
if (vod2 = 1) then
case st1 of
0: begin p1 := p6;p6 := 0;shet := shet + 1; end;
1: begin writeln(‘Нельзя так’); end;
end;
if (vod2 = 2) then
case st2 of
0: begin p2 := p6;p6 := 0;shet := shet + 1; end;
1: begin writeln(‘Нельзя так’); end;
end; end;
end;
end;
end;
if p1 = 1 then ris1 := ‘ () ‘;
if p2 = 1 then ris2 := ‘ () ‘;
if p3 = 1 then ris3 := ‘ () ‘;
if p4 = 1 then ris4 := ‘ () ‘;
if p5 = 1 then ris5 := ‘ () ‘;
if p6 = 1 then ris6 := ‘ () ‘;
if p7 = 1 then ris7 := ‘ () ‘;
if p8 = 1 then ris8 := ‘ () ‘;
if p9 = 1 then ris9 := ‘ () ‘;
if p1 = 2 then ris1 := ‘ (00) ‘;
if p2 = 2 then ris2 := ‘ (00) ‘;
if p3 = 2 then ris3 := ‘ (00) ‘;
if p4 = 2 then ris4 := ‘ (00) ‘;
if p5 = 2 then ris5 := ‘ (00) ‘;
if p6 = 2 then ris6 := ‘ (00) ‘;
if p1 = 4 then ris1 := ‘(0000)’;
if p2 = 4 then ris2 := ‘(0000)’;
if p3 = 4 then ris3 := ‘(0000)’;
if p1 = 0 then ris1 := ‘__|__ ‘;
if p2 = 0 then ris2 := ‘__|__ ‘;
if p3 = 0 then ris3 := ‘__|__ ‘;
if p4 = 0 then ris4 := ‘ | ‘;
if p5 = 0 then ris5 := ‘ | ‘;
if p6 = 0 then ris6 := ‘ | ‘;
if p7 = 0 then ris7 := ‘ | ‘;
if p8 = 0 then ris8 := ‘ | ‘;
if p9 = 0 then ris9 := ‘ | ‘;
writeln(ris7, ris8, ris9);
writeln(ris4, ris5, ris6);
writeln(ris1, ris2, ris3);
writeln(»);
st3 := p9 + p6 + p3;
if st3 = 7 then
begin
writeln(‘ВЫ ПОБЕДИТЕЛЬ. ‘) ;
shet1 := shet mod 10;
case shet1 of
1:hod:=’ ход.’;
2, 3, 4: hod:=’ хода.’;
5, 6, 7, 8, 9: hod:=’ ходов.’;
end;
writeln(‘Было сделано ‘, shet,hod);
shet1 := pam mod 10;
case shet1 of
1:hod:=’ ход.’;
2, 3, 4: hod:=’ хода.’;
end;
if pam>0 then
begin
if pamshet then writeln(‘В этот раз было лучше.До этого было ‘,pam,hod);
if pam=shet then writeln(‘Число ходов не отличается от того что было.’);
end;
pam:=shet;
ind := 2;
writeln(‘Хотите сыграть еще раз?’);
writeln(‘Да-1’) ;
writeln(‘Нет-2’ );
readln(ind2);
end;
end;
end;
end.