После какого зарезервированного слова указывается название программы
Перейти к содержимому

После какого зарезервированного слова указывается название программы

  • автор:

Структура программы в Pascal

Любая программа, написанная на языке Pascal состоит из заголовка программы и некоторого блока. Блок содержит раздел описаний, в котором определяются все локальные по отношению к данной программе объекты, и раздел операторов. Он задает действия, которые необходимо выполнять, над этими объектами.

program имя программы; uses Label . . . ; Const . ; . ; Type = ; Var :; Function . ; Procedure . ; begin . ; . ; end.

Заголовок программы

В заголовке программе дается некоторое имя. Обычно стараются выбирать имя, отражающее основную функцию, выполняемую программой. Заголовок всегда начинается со служебного слова program , после которого через пробел пишется имя программы. Оно может состоять из символов английского алфавита, цифр и знака подчеркивания. Имя программы всегда должно начинаться с буквы.

В имени программы нельзя использовать какие-либо предописанные имена (зарезервированные слова). Они используются в программе только в том значении, которое зафиксировано для них разработчиками языка Pascal. Ниже приведен список таких слов.

and end nil set
array file not then
begin for of to
case function or type
const goto packed until
div if procedure var
do in program while
downto label record with
else mod repeat

Заголовок носит чисто информативный характер и никак не влияет на программу. Программу можно написать и не используя его. После имени программы в ранних редакциях языка указывались круглые скобки и в них давались имена входных и выходных файлов задачи. В последних версиях языка Pascal имена входных и выходных файлов в заголовке программы отсутствуют.

Пример правильного написания заголовка:

program Perimetr; program Phone37; program one_two_3;

Пример неправильного написания заголовка:

program 9zet; program Samara-63; program repeat;

Label — раздел описания меток

Любой оператор программы можно маркировать, поставив перед ним через двоеточие метку, тем самым появляется возможность ссылаться на эту метку при помощи оператора перехода goto . Однако такая метка, прежде чем она будет использована, должна быть описана в разделе описания меток. Этот раздел начинается со слова Label .

Имя метки может включать в себя буквы английского алфавита, цифры и знак подчеркивания. При этом, в отличии от имени программы метка может начинаться с цифры, да и вообще состоять только из цифр, но это число должно представлять собой целое число без знака, лежащее в диапазоне от 0 до 9999.

Пример правильного написания меток:

label 13, 00100, 99, qwerty, x_y;

Раз уж разговор зашел про метки, то нужно сказать, что использование меток и оператора перехода goto не желательно при написании программы на Pascal. Применять его стоит только в необычных, исключительных ситуациях, когда приходится нарушать естественную структуру алгоритма. Частое появление в программе на Pascal оператора перехода свидетельствует о том, что программист еще не научился думать на Pascal.
Этот раздел необязателен, если у вас в программе не используются метки.

Const — раздел определения констант

Константы — это величины, которые не меняют своих значений в процессе выполнения программы. Допустим, в вашей программе часто приходится оперировать с числом 3,14 (число Пи). Чтобы каждый раз не вводить это число, мы определяем константу с именем Pi и в вычисления уже подставляем ее.

Использование имен констант делает программу более «читаемой» и способствует улучшению ее документируемости. Кроме того, это позволяет программисту сгруппировать в начале программы величины, зависящие от машины или характерные для данного примера: здесь они более заметны и их легче изменить. Тем самым улучшается переносимость программ и их модульность.

Начинается данный раздел со служебного слова Const . Далее идут описания констант, каждое из которых начинается с имени константы, затем идет символ = (равенство), после чего пишется константа или выражение, составленное из констант. Завершается каждое описание точкой с запятой.

Const = ;

Константа может иметь только предопределенный (стандартный) тип данных. Тип присваивается константе по внешнему виду значения и в соответствии с этим типом отводится память для хранения значения константы.

В качестве расширения стандартного Паскаля разрешено использовать выражения, составленные из ранее определенных констант и некоторых стандартных функций: Abs, Chr, Hi, Length, Lo, Odd, Ord, Pred, Prt, Round, SizeOf, Succ, Swap, Trunc . Константные выражения вычисляются компилятором без выполнения программы на этапе ее создания. Пример:

const Avogadro = 6.023Е23; PageLength = 60; MyMove = True; stroka = 'abcdefg'; Min = 0; Max = 250; Centr = (Max-Min) div 2; Beta = Chr(225); NumChars = Ord('2') - Ord('A')+l;

Этот раздел также необязателен, если у вас в программе не используются константы.

Type — раздел описания типов

Помимо стандартных типов данных в Pascal (Real, Integer, Boolean, Char) пользователь может задать новые типы. Структура раздела описания типов имеет вид:

Type = ; = ; … = ;

Имя типа представляет собой идентификатор, который может употребляться в других типах, описанных вслед за данным типом. Вообще, новые типы можно определять и в разделе переменных Var, поэтому можно обойтись без этого раздела. Приведу несколько примеров описания типов:

Type Year = 1800.. 2015; Alfavit = (‘А’, ‘B, ‘C’, ‘T, ‘L’); Matrica = array[1..12, ‘А’.. ‘Z’] of real;

Var — раздел описания переменных

Этот раздел является обязательным. Переменные отличаются от констант тем, что им можно присваивать новые значения при исполнении программы. Любая переменная, которая будет использована в программе должна быть описана. Что включает в себя описание переменной? Это значит, что переменной должен быть присвоен какой-либо тип данных, который характеризует множество значений, которые может принимать объект; множество операций, которые могут применяться к объекту; размер памяти, занимаемый объектом.

Начинается этот раздел с предописанного слова var . Следом идут описания переменных, каждое из которых начинается со списка имен переменных, разделяемых запятыми, затем идет символ : (двоеточие), затем указывается тип этих переменных. Завершается каждое описание точкой с запятой.

Структура раздела имеет вид:

Тип переменных представляет собой имя (идентификатор), описанный в разделе TYPE при явном описании типа, или собственно описание типа в случае его неявного задания. Примеры описания переменных:

Var Year: 1800.. 2000; А, В, C: Real; Istina: Boolean; Stroka: Char; I, J, К: Integer;

Function, Procedure — раздел описаний процедур и функций

В разделе Function и Procedure описываются пользовательские процедуры и функции, если таковые имеются. Если их нет, то этот раздел не обязателен в программе.

Процедура представляет собою подпрограмму и активируется (начинает выполняться) через оператор процедуры. Функция — это тоже подпрограмма, но она выдает некоторое значение — результат и поэтому используется, как компонента выражения.

Структура раздела имеет вид:

Procedure ();   Begin End; Function (): ; < заголовок >  Begin End;

Структура процедур и функций та же самая, что и у основной программы. Отличие описаний состоит в том, что идентификаторы констант, переменных, процедур и функций, описанных в соответствующих разделах описаний пользовательских процедур и функций, распространяются только на блоки, где они описаны и на блоки внутренние по отношению к ним. На внешние блоки, в том числе на тело основной программы, они не распространяются.

© program4you.ru 2015 — 2022
Копирование материалов сайта разрешено только при наличии активной ссылки на данный сайт

Основи алгоритмізації та програмування (Циммерман О.В.)

Алфавит – это набор знаков, состоящий из букв, десятичных и шестнадцатеричных цифр, специальных символов.

Алфавит Паскаля составляют:

· прописные и строчные буквы латинского алфавита: A, B, C…Y, Z, a, b,c,…y, z , знак подчеркивания _;

· десятичные цифры: 0, 1, 2,…9;

· специальные символы: + — * / = , ‘ . : ; < >[ ] ( ) < >^ @ $ # и пробел;

· комбинации специальных символов, которые нельзя разделять пробелами, если они используются как составные символы: «:=», «..», «<>», «=»

Неделимые последовательности знаков алфавита образуют слова, отделенные друг от друга разделителями: некоторыми специальными символами (пробел, комментарий, арифметическая операция и т.п.)

Словарь Паскаля можно разделить на три группы слов:

  • зарезервированные слова
  • стандартные идентификаторы
  • идентификаторы пользователя

Теоретический материал (Паскаль)

Язык программирования Паскаль. Знакомство со средой программирования Турбо Паскаль. Основные понятия. Первая программа

Паскаль — язык профессионального программирования, который назван в честь французского математика и философа Блеза Паскаля (1623-1662) и разработан в 1968-1971 гг. Никлаусом Виртом. Первоначально был разработан для обучения, но вскоре стал использоваться для разработки программных средств в профессиональном программировании.

Паскаль популярен среди программистов по следующим причинам:

  1. Прост для обучения.
  2. Отражает фундаментальные идеи алгоритмов в легко воспринимаемой форме, что предоставляет программисту средства, помогающие проектировать программы.
  3. Позволяет четко реализовать идеи структурного программирования и структурной организации данных.
  4. Использование простых и гибких структур управления: ветвлений, циклов.
  5. Надежность разрабатываемых программ.

Турбо Паскаль — это система программирования, созданная для повышения качества и скорости разработки программ (80-е гг.). Слово Турбо в названии системы программирования — это отражение торговой марки фирмы-разработчика Borland International (США).

Систему программирования Турбо Паскаль называют интегрированной (integration — объединение отдельных элементов в единое целое) средой программирования, т.к. она включает в себя редактор, компилятор, отладчик, имеет сервисные возможности.

Основные файлы Турбо Паскаля:

Turbo.exe — исполняемый файл интегрированной среды программирования;

Turbo.hlp — файл, содержащий данные для помощи;

Turbo.tp — файл конфигурации системы;

Turbo.tpl — библиотека стандартных модулей, в которых содержатся встроенные процедуры и функции (SYSTEM, CRT, DOS, PRINTER, GRAPH, TURBO3, GRAPH3).

Запуск интегрированной среды программирования

Для запуска интегрированной среды программирования нужно установить текущим каталог с Турбо Паскалем (TP7\BIN) и ввести команду: turbo.exe.

Задание. Запустите среду программирования и рассмотрите экран. Перед вами полоса меню, область окна и строка статуса. Нажмите клавишу F10 — теперь вам доступны все опции меню. Используя клавиши управления курсором, рассмотрите меню. С командами меню мы будем знакомиться постепенно. Нажмите клавишу Esc (вы вышли из меню). Перемещая курсор в окне, следите за строкой статуса. Какая информация отражается в этой строке?

Почти все, что вы видите и делаете в среде Турбо Паскаль, происходит в окнах.

Окно — это область экрана, которую можно перемещать, изменять в размере, перекрывать, закрывать и открывать.

Интегрированная среда программирования Турбо Паскаль позволяет иметь любое количество открытых окон, но в любой момент времени активным может быть только одно.

Активное окно – это окно, с которым вы в настоящий момент работаете.

Общие горячие клавиши:

F2 — сохраняет файл активного окна;

F3 — появление диалогового окна и возможность открыть файл;

F4 — запускает программу до строки, на которой стоит курсор;

F5 — масштабирует диалоговое окно;

F6 — переходит к следующему открытому окну;

F7 — запускает программу в режиме отладки с заходом внутрь процедур;

F8 — запускает программу в режиме отладки, минуя вызов процедур;

F9 — компилирование программы в текущем окне;

F10 — возвращение в меню.

Мы начнем изучение меню с наиболее важных и необходимых режимов.

Как войти в меню? Всего есть три возможности:

С помощью клавиш управления курсором подсветите слово FILE и нажмите клавишу «Enter». Что вы видите?

Появилась вертикальная таблица со списком команд, называемая выпадающим меню. Познакомимся с ним.

Open-F3 — открыть существующий файл (при активизации этой опции появляется окно со списком файлов, где можно выбрать необходимый),

New — создать новый файл (очищает память редактора и переводит в режим создания нового файла, которому присваивается имя Noname.pas; имя можно изменить при записи файла на диск),

Save-F2 — сохранить файл (переписывает файл из памяти редактора на диск),

Save as — сохранить с новым именем,

Save all — сохранить все в окнах (записывает содержимое всех окон редактора в соответствующие файлы),

Change dir — смена каталога (позволяет изменить установленный по умолчанию диск или каталог),

Print — печать файла,

Get info — выдача информации о текущем состоянии программы и используемой памяти,

DOS Shell — выход в DOS без выгрузки из памяти (для возврата ввести команду exit),

Exit — выход и выгрузка из памяти.

Программы на языке Паскаль имеют блочную структуру:

1. Блок типа PROGRAM — имеет имя, состоящее только из латинских букв и цифр. Его присутствие не обязательно, но рекомендуется записывать для быстрого распознавания нужной программы среди других листингов.

2. Программный блок, состоящий в общем случае из 7 разделов:

    раздел описания модулей (uses);

Общая структура программы на языке Паскаль следующая:

Начнем знакомство с Паскалем с программы, которая складывает два числа и выводит сумму на экран.

Откройте файл, в который Вы запишите эту программу. Для этого нажмите клавишу F10, чтобы выйти в главное меню, затем клавишами перемещения курсора выберите опцию File, а в выпавшем меню команду New.

Примечание. Обратите внимание на оформление текста программы.

    Найдите в этой программе заголовок, раздел описания переменных, признак начала программы, признак конца программы, тело программы, комментарий.

А теперь подведем итог вашим размышлениям.

Имя этой программы Summa2. Заметим, что требования к имени выполняются: оно отражает содержание программы, а также не содержит недопустимых символов.

Далее идет специально выделенный комментарий, в котором вы должны записать подробно условие задачи и указать, кто написал эту программу и когда.

Из разделов описаний имеется лишь один — раздел переменных. Он начинается со служебного слова Var. Мы описали три переменные: number1, number2, result. Все они переменные целого типа. Поэтому мы перечислили их через запятую, поставили двоеточие и указали тип переменных. Подобные объявления разделяются между собой точкой с запятой.

После описательной части идет раздел операторов, начинающийся со служебного слова Begin, после которого идут операторы языка.

Недостатком этой программы является то, что значения переменных постоянны. А нам нужно научиться писать такие программы, которые решают поставленные задачи в общем виде, т. е. для любых значений переменных. Для этого мы научимся запрашивать значения у пользователя, анализировать их и выдавать соответствующий результат.

Оператор присваивания. Арифметические выражения. Типы данных

Оператор присваивания

Первый оператор, с которым мы познакомимся,- оператор присваивания.

Оператор присваивания — основной оператор любого языка программирования. Общая форма записи оператора:

имя величины := выражение

Например, V:=A; или V:=A+1;

При помощи оператора присваивания переменной могут присваиваться константы и выражения, значения переменных любого типа.

Как только в программе встречается переменная, для неё в памяти отводится место. Оператор присваивания помещает значение выражения в место, отведённое переменной.

Если в процессе выполнения программы встречается переприсваивание (т.е. та же самая переменная принимает другое значение), то старое значение переменной стирается, на свободное место записывается новое значение. Команда присваивания позволяет лучше понять смысл слова переменная (т.е. меняющая своё значение по ходу программы).

Выражение может быть арифметическим, логическим или литерным. Важно, чтобы тип величины был согласован с видом выражения.

Арифметические выражения

Арифметические выражения должны быть записаны в так называемой линейной записи согласно следующим правилам:

    выражение должно быть записано в виде линейной цепочки символов;

НАЗВАНИЕ ОПЕРАЦИИ ФОРМА ЗАПИСИ
сложение x + y
вычитание x — y
умножение x * y
деление x / y
  • нельзя опускать знаки операций, например, писать 5b. Для записи произведения чисел 5 и b надо писать 5*b;

Порядок выполнения операций при вычислении арифметических выражений можно регулировать при помощи скобок по обычным правилам. Там, где скобки отсутствуют, ЭВМ выполняет операции в следующем порядке:

    вычисляет значение всех алгоритмов-функций и стандартных функций;

В нашем случае(*) сначала переменной number1 присваивается значение равное 3 и переменной number2 присваивается значение равное 4, затем вычисляется значение выражения (number1 + number2) и оно присваивается переменной result.

Сумма чисел посчитана.

Теперь надо вывести ее значение на экран. Для этого используют оператор Write — записать (вывести) на экран значение переменной, записанной в скобках. В нашем случае значение переменной number1, затем символ + , далее значение переменной number2, символ = и, наконец, значение результата result.

И, наконец, в конце раздела операторов стоит служебное слово End, после которого стоит точка.

Задание. Наберите текст программы на компьютере и выполните ее (для запуска программы воспользуйтесь комбинацией клавиш Ctrl и F9).

Внимание! Не забывайте о порядке на дискете и в файле:

    имя программы должно соответствовать ее содержанию,

Задание. Измените программу так, чтобы она подсчитывала сумму четырех чисел.

Сохраните файл на дискете, для этого из меню F10-File выберите команду Save и в предложенной строке наберите путь a:\Vvod\Summa (каталог Vvod должен быть уже организован для файлов, содержащих программы данной темы).

Основные определения

Познакомимся с основными понятиями языка.

Алгоритм — четкая последовательность действий, необходимая для решения задачи.

Программа — алгоритм, записанный на языке программирования.

Алфавит языка — набор элементарных символов, используемый для составления программ. Алфавит содержит:

    52 буквы латинского алфавита (строчные и заглавные);

Идентификатор (имя) – имя какого-либо элемента программы, которое должно удовлетворять следующим требованиям:

    длина имени не должна превышать 63 символов;

Правильно выбранные идентификаторы значительно облегчают чтение и понимание программы, а также уменьшают вероятность появления ошибок при модификации программ. Например, значение даты удобнее обозначить идентификатором Date, чем просто буквой D или любым другим символом.

Зарезервированные (служебные) слова — это слова, использующиеся только по своему прямому назначению. Их нельзя использовать в качестве имен переменных, так как они выполняют определенную смысловую нагрузку.

Примеры зарезервированных слов: AND, GOTO, PROGRAM, ELSE, IF, RECORD, NOT, ARRAY, REPEAT, UNTIL, BEGIN, IN, SET, END, CASE, CONST, USES, INTERFACE, STRING, LABEL, THEN, OF, DIV, TO, VAR, DO, TYPE, WHILE, DOWNTO, FILE, FUNCTION, PROCEDURE и другие.

Переменные (Var) — вид данных, который может изменять свое значение в ходе программы, описывают переменные после зарезервированного слова Var.

Константы (Const) — вид данных, который является постоянным на всем протяжении выполнения программы, описывают константы после зарезервированного слова Const.

Комментарии — некоторая запись, служащая для пояснения программы, которая записывается в фигурных скобках.

Типы данных

Для временного хранения информации в операторах памяти машины в языке Паскаль используются константы и переменные. Они могут быть различных типов:

    целых чисел (см. ниже);

Название Длина в байтах Диапазон значений
Byte 1 0 . 255
ShortInt 1 -128 . 127
Word 2 0 . 65535
Integer 2 -32768 . 32767
LongInt 4 -2147483648 . 2147483647

Над целыми типами определены такие операции:

  1. «+» — сложение;
  2. » * » — умножение;
  3. » — » вычитание;
  4. div — целочисленное деление;
  5. mod — получение остатка от целочисленного деления.

Вещественные типы:

Вещественные типы представляются с некоторой точностью, которая зависит от компьютера. Вам необходимо знать, что вещественный тип разделяется на несколько типов, но использовать мы будем вещественные данные только типа Real, которые занимают 6 байт, имеют диапазон возможных значений модуля от 2.9Е-39 до 1.7Е+38 и точность представления данных — 11. 12 значащих цифр.

Примечание. Несмотря на то, что в Turbo Pascal имеется широкий выбор вещественных типов, доступ к некоторым из них (single, double, extended) возможен при особых режимах компиляции. Особое положение в Turbo Pascal занимает тип comp, трактующийся как вещественное число без экспоненциальной и дробной частей. Он сохраняет 19 — 20 значащих цифр и знак числа. В то же время comp полностью совместим с любыми другими вещественными типами.

В языке Паскаль числа могут быть представлены в двух видах: с фиксированной точкой и плавающей точкой.

Числа с фиксированной точкой изображаются десятичным числом с дробной частью, которая может быть и нулевой. Например, 27.9, 5.00

Такие большие числа, как 137.000.000, можно записать в формате с десятичным порядком: 1.37 · 10 8 . В Turbo Pascal для подобных чисел принята форма записи mEp, где m — мантисса; E — признак записи числа с десятичным порядком; p — показатель степени числа 10. Такое представление чисел и называется форматом с плавающей точкой. Число 1.37 · 10 8 в этом формате запишется так: 1.37Е+8. Рассмотрим еще несколько примеров:

Математическая запись Запись на Паскале
4·10 -4 4E -4
0,62·10 5 0.62E+5
-10,88·10 12 -10.88E12

По умолчанию, действительные числа выводятся в виде чисел с плавающей точкой. Такое представление чисел не очень нравится пользователям. Поэтому мы будем “заставлять” компьютер выдавать действительные числа в более привычном варианте следующим образом:

R:m:n, где R – действительное число, m – общее количество позиций, отводимых числа, n – количество позиций, отводимых для дробной части.

Например, если мы хотим вывести на экран число Chislo с фиксированной точкой, причем знаем, что для вывода этого числа достаточно 7 мест, а вывод дробной части ограничим сотыми, то мы запишем вывод так:

Write (Chislo:7:2)

Символьный тип (char):

Значением величины данного типа является символ из множество всех символов компьютера: русская или латинская большая или маленькая буква, цифра, знак препинания, специальный знак (например, «+», «-«, «*», «/», «», «=» и др.) или пробел » «. Каждый из символов имеет уникальный номер от 0 до 255, т. е. внутренний код, который возвращает функция ORD. Символьная константа – любой символ языка, заключённый в одинарные кавычки. Например,

Var
Simvol : char;

Строковый тип (string):

Значением строковой величины является строка переменной длины (быть может, пустая). Строковая константа представляет собой произвольную последовательность символов, заключенную в одинарные кавычки. Например,

Var
Stroka : string;

Логический тип (boolean):

Логический тип данных часто называют булевым по имени английского математика Д. Буля, создателя математической логики. В языке Паскаль имеются две логические константы TRUE и FALSE. Логическая переменная принимает одно из этих значений и имеет тип Boolean. Для сравнения данных предусмотрены следующие операции отношения: , >, >= Результат операции отношения имеет логический тип, т.е. результат операции может быть истинным или ложным, например, 3>5 – ложь.

Над величинами этого типа можно выполнять специфические логические операции OR — или; AND — и; NOT — не.

Более подробно этот тип данных мы рассмотрим при изучении условного оператора.

Сложные типы:

К сложным или структурированным типам относятся массивы, записи, множества, которые требуют специального изучения и здесь рассматриваться не будут.

Задание. Откройте новый файл. Создадим программу, в которой опишем несколько переменных разного типа, введем в них значения и выведем на экран.

Program TipDann;
Uses
Crt
Var
Chislo1 : Integer;
Chislo2 : Real;
Simvol : Char;
Stroka : String;
Logika : Boolean;
Begin
ClrScr;
Chislo1:=12;
Chislo2:=Chislo1*2;
Chislo2:=Chislo2/5;
Simvol:=’d’;
Stroka:=’Строчка’;
Logika:= Chislo1> Chislo2;
WriteLn (‘Вывод значений:’);
WriteLn (‘Значение переменной Chislo1 : ‘,Chislo1);
WriteLn (‘Значение переменной Chislo2 : ‘,Chislo2:5:2);
WriteLn (‘Значение переменной Simvol : ‘,Simvol);
WriteLn (‘Значение переменной Stroka : ‘,Stroka);
WriteLn (‘Значение переменной Logika : ‘,Logika);
End.

Внимательно рассмотрите каждую строчку программы. Обратите особое внимание на описание переменных: Chislo1 — переменная целого типа, Chislo2 — действительного, Simvol — символьного, Stroka — строкового, Logika — логического. Далее в основной программе идет присвоение переменной Chislo1 целого числа 12, переменной Chislo2 — целого числа 24. Обратим внимание, что переменной действительного типа Chislo2 присвоено целое число; никакой ошибки нет, т. к. множество целых чисел является подмножеством множества действительных чисел. Следующая строчка еще более интересная: переменной Chislo2 присваивается значение той же переменной, только деленной на 5.

Такое присваивание используют в программах, если предыдущее значение этой переменной уже не понадобится и для более рационального использования описанных переменных. Для того чтобы переменной символьного типа присвоить какой-либо символ (например, d), надо этот символ записать в одинарных кавычках (знак «’»). Аналогично поступают с переменными строкового типа (смотри следующую строку программы). А про переменные логического типа мы знаем, что им можно присваивать только два значения: True и False. В этой программе мы присвоим значение результата сравнения двух переменных, здесь оно будет равно True. А теперь выведем присвоенные значения на экран.

Задание. Измените значения переменных и проанализируйте результаты выполнения программы. Сохраните программу на дискете под правильным именем в соответствующем каталоге. Распечатайте программу.

Ввод — вывод. Операторы Read (Readln), Write (Writeln). Простейшие линейные программы

Решим задачу, прокомментировав каждое свое действие в фигурных скобках. Напомним, что комментарий не воспринимается компьютером, а нам он нужен для того, чтобы лучше понять, как работает программа.

Задача. Напишите программу, которая бы очищала экран и вычисляла произведение двух чисел, вводимых пользователем.

Program Proizv2;
Uses
Crt;
Var
number1,
number2,
result
: integer;
Begin
ClrScr;
Write (‘Введите первое число ‘);

Readln (number1);

Write (‘Введите второе число ‘);

Readln (number2);

result := number1 * number2;

Write (‘Произведение чисел ‘, number1, ‘ и ‘, number2, ‘ равно ‘, result);

Readln;
End.

Чтобы лучше понять действие программы, наберите ее на компьютере и проверьте ее действие. Ответьте на вопросы:

    почему программу назвали Proizv2?

Задание. Измените программу так, чтобы она запрашивала у пользователя еще одну переменную и выводила результат произведения трех чисел.

Операторы Write и WriteLn

Мы уже использовали операторы Write и WriteLn, но нам необходимо подробнее остановиться на правилах применения этих операторов.

Write (англ. писать) — оператор, который используется для вывода информации на экран. Оператор WriteLn выполняет то же самое действие, но так как у него есть еще окончание Ln (line — англ. линия, строка), то после вывода на экран нужного сообщения, он дополнительно переводит курсор в начало следующей строки.

Общий вид:
Write (список выражений)
WriteLn (список выражений)

Процедуры Write и WriteLn используются не только для вывода результата, но и для вывода различных сообщений или запросов. Это позволяет вести диалог с пользователем, сообщать ему, когда ему нужно ввести значения, когда он получает результат, когда он ошибся и др.

Например, при выполнении процедуры WriteLn(‘Найденное число ‘,а), будет напечатана строчка, заключенная в апострофы, а затем выведено значение переменной а.

Оператор WriteLn можно применить и без параметров. В этом случае курсор просто будет переведен в начало следующей строки. Это иногда нам нужно для лучшего восприятия ввода данных.

Операторы Read и ReadLn

Вспомним, что основное назначение ЭВМ — сэкономить человеческий труд. Поэтому необходимо обеспечить возможность, однажды написав программу, многократно ее использовать, вводя каждый раз другие данные. Такая гибкость в языке обеспечивается операторами Read и ReadLn. Этими операторами вводится информация с клавиатуры.

Общий вид:
Read(переменная, переменная. )
ReadLn(переменная, переменная. )

При выполнении процедуры Read ожидается ввод перечисленных в скобках значений. Вводимые данные нужно отделить друг от друга пробелами. Присваивание значений идет по очереди.

Например, если вводятся значения 53 и Х, то при выполнении оператора Read(a,b) переменной а будет присвоено число 53, а переменной b — буква Х. Причем, отметим, чтобы не было аварийной ситуации, нужно правильно определить тип данных в разделе Var; в нашем случае а:integer, а b:char.

Особых различий при чтении и записи в использовании операторов Read и ReadLn нет. Часто процедуру ReadLn без параметров применяют в конце программы для задержки: до нажатия на клавишу результат выполнения программы остается на экране. Это очень полезно делать для анализа результатов.

Примечание. Когда Вы ставите задержку экрана, обратите внимание на предыдущий ввод. Если данные запрашивались процедурой Read, задержки не будет.

Решим задачу, в которой рассмотрим все возможные употребления этих процедур.

Задача. Найти среднее значение трех чисел.

Примечание. Чтобы найти среднее значение нескольких чисел, нужно сложить эти числа и сумму разделить на количество этих чисел.

Program Srednee;
Uses
Crt;
Var
First, Second, Third : integer;
Sum : real;
Begin
ClrScr;
Write (‘Введите первое число ‘);
ReadLn(First);
Write (‘Введите второе и третье числа через пробел ‘);
ReadLn(Second, Third);
Sum := First + Second + Third;
Sum := Sum/3;
Write (‘Среднее значение ‘, First, ‘, ‘,Second, ‘ и ‘, Third, ‘ равно ‘, Sum:5:2);
ReadLn;
End.

Наберите текст задачи и внимательно рассмотрите каждую строчку. Имя программы Srednee отражает содержание задачи. Кстати, договоримся о том, чтобы имя программы и имя файла, который содержит эту программу, совпадали. Далее идет подключение модуля Crt. В разделе Var описаны First, Second, Third как переменные целого типа, а Sum — действительного типа. Раздел операторов начинается со стандартной процедуры очистки экрана ClrScr (Clear Screen), которая находится в модуле Crt. Далее оператором Write мы выводим на экран сообщение ‘Введите первое число ‘, получив которое пользователь должен ввести число.

Теперь компьютер должен считать введенные символы и занести их в переменную First, это произойдет при выполнении следующего оператора ReadLn(First). Затем с помощью оператора Write запрашиваем значения еще двух чисел и считываем их в переменные Second и Third. Затем вычисляем их сумму и присваиваем полученное число переменной Sum. Чтобы найти среднее, нужно теперь полученное число разделить на 3 и сохранить результат в какой-либо переменной.

Совсем не обязательно описывать еще одну переменную для сохранения результата. Можно, как в нашей программе, значение переменной Sum разделить на 3 и результат опять присвоить той же переменной Sum. Теперь можно вывести результат вычислений на экран с помощью процедуры Write. И, наконец, последняя процедура ReadLn задержит наш вывод на экране до нажатия на клавишу.

Нажмите клавиши +. Введите значения переменных 5, 7 и 12, на экране увидите следующее:

Среднее значение 5, 7 и 12 равно 8.00

Просмотрите внимательно эту строчку и сравните со строчкой вывода результата в нашей программе. Протестируйте программу еще несколько раз для других значений переменных.

Стандартные функции и процедуры. Применение в простейших линейных программах

Для решения задач нам понадобятся стандартные функции и процедуры.

Функция — это такая организация преобразования переданного ей значения, при которой это измененное значение передается обратно.

Процедура — это такая организация преобразования переданного ей значения параметра, при которой изменяется значение этого параметра, и, в отличие от функции, не возвращается никакого значения.

Познакомимся с основными, наиболее часто используемыми процедурами и функциями.

Арифметические функции:

    Abs(x), где аргумент и результат являются переменными целого или вещественного типа — вычисляет модуль (абсолютную величину) числа х;

Функции преобразования типов:

    Chr(x), где аргумент типа Byte, а результат типа Char- возвращает символ, у которого код в таблице ASCII равен х;

Функции для порядковых типов:

    Odd(x), где аргумент типа LongInt, а результат логического типа — определяет, является ли число четным (результат false) или нечетным (результат true);

Процедуры для порядковых типов:

    Dec(x), где аргумент любого порядкового типа — уменьшает значение переменной х на 1;

Правила применения функций:

    чтобы воспользоваться функцией, нужно указать ее в правой части оператора присваивания;

Правила применения процедур:

    для выполнения процедуры ее надо вызвать в программе в виде оператора;

Задача. Найти значения выражений:

Прежде чем приступить к составлению программы, необходимо перевести данные выражения с математического языка на язык Паскаль.

Теперь уже можно переходить к составлению программы.

Program Primer;
Uses
Crt;
Var
A : word;
b, x, result : real;
Begin
ClrScr;
Writeln(‘Введите значения переменных (A-положительно)’);
Write(‘A=’);
Readln(A);
Write(‘b=’);
Readln(b);
Write(‘x=’);
Readln(x);
Result := sqr(1+x);
Writeln (‘sqr(1+x)=’, result);
Result := sqrt((1+A)*5);
Writeln (‘sqrt((1+A)*5)=’, result);
Result := abs(A+b*x);
Writeln (‘abs(A+b*x)=’, result);
Readln;
End.

Задание. Наберите программу, протестируйте, добавьте комментарий, сохраните файл и распечатайте листинг.

Описание стандартных функций ReadKey и KeyPressed см. здесь.

Использование program, begin…end, write, readln, Uses Crt, Clrscr.

В этом уроке мы напишем самую простую программу, состоящую всего из пяти строк. Эта программа будет выводить сообщение на экран. Для написания программы нам необходимо знать как работают операторы Write, Readln, а также понять для чего нужны зарезервированные в Паскаль слова Program, Begin, End.

program number1; begin write (‘Привет.’); readln 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. точка с запятой не обязательна). Теперь наберем нашу программу в Паскале.

pervaya programma.

Сохраним, нажав F2 (или в командной строке File-Save) и запустим ее, нажав Ctrl+F9 (либо в панели команд Run-Run).
Получим следующий результат.

pervaya programma..

Самая нижняя строка и есть наш результат.
Теперь нажмем Enter (для завершения выполнения программы) и еще раз запустим программу.
Получим следующий результат.

pervaya programma.

Этим примером я хочу показать Вам, что каждый раз при запуске программы старые результаты программы тоже будут выводиться на экран. Для того чтобы этого избежать, используется оператор очистки экрана clrscr (сокращенно от англ. Clear Screen (очистить экран)), который ставится вначале программы после слова begin. Для того чтобы этот оператор работал необходимо подключить модуль CRT с помощью команды USES.

Программа будет выглядеть так:

pervaya programma.

Заметьте, что после Uses Crt и после Clrscr ставится точка с запятой.
После запуска (ctrl+F9) окно вывода сообщения будет иметь вид:

pervaya programma.

Дополнение к материалу.

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 символов. Все символы значимы.
  • Идентификатор не может повторять зарезервированное слово.
Комментарии

-75 # миша 09.04.2012 10:38
мне 10 лет я ито понял
+27 # Влад 11.04.2012 17:35
Ахахах) Ололошки учите паскаль, в жизни пригодиться. Это самый простой язык программировани я.
-109 # максим 12.05.2012 14:54
Миша, тебя опередили я в 5 лет C++ знал, а в 7 ассемблер
+21 # лол 07.10.2012 12:38
В 5 лет C++ PFF
АХАХАХАХАХАХАХ АХАХАХАХАХАХАХА Х
-26 # Антон 28.02.2013 09:50
Пффф, я в 2 года PHP, JavaScript, Basic, C++, Assembler знал
-19 # Ник 24.02.2014 08:23
А я А я в 2 года твой дом труба шаталь
-8 # супер программер 22.10.2015 14:27

я до своего рождения запрограммирова л маму на быстрое получение питательных веществ на Java, C++, PHP, Basic, Assembler, Pascal

+3 # Аллигатор 05.09.2012 14:48

Вопрос: какой язык программировани я самый сложный? Понятно что в каждом языке свои сложности и т.д, но какой по вашему САМЫЙ СЛОЖНЫЙ?

+4 # Юлия 14.10.2015 12:45
+23 # Administrator 06.09.2012 06:18
Из тех, которые могут пригодиться, низкоуровневые языки программировани я, например, Ассемблер.
+10 # Кристя 26.10.2012 13:46
Хороший сайт! Все понятно!
-13 # Сандра 16.11.2012 14:34
дааааа) наш информатик нас убивааает! а я все поняла!
-30 # Оля 24.11.2012 15:23
Мне 11 и я знаю уже кучу алгоритмов.
И не только.
+2 # Дори 09.12.2012 12:44
И вправду, все просто и понятно, вот так я к сессии готовлюсь))
+4 # Максалина 10.12.2012 18:41
Помогите составить программу Z=(X в кубе/9+yx в квадрате)*99/y+ x при х=2 y=3
+7 # Сергей 13.12.2012 22:08

Максалина вот твоя программа
var x,y: integer;
var z: complex;
begin
x:=2;
y:=3;
z:=((x,3)/9+(y*x,2))*99/y+x;
writeln(z,’ ‘);
end.

+7 # Максалина 18.12.2012 09:56

Спасибо,Сергей 13.12.2012 22:08. Но у вас она составлена немного не правильно. Я уже поняла как её составлять. Но всё равно, большое спасибо.

+5 # Наталья 18.12.2012 15:19
да допущена ошибка у меня не получается и выдает ошибку
-4 # Александр К 19.12.2012 16:09

Сайт супер — написал первую программу — потом на память несколько раз переписал.Перех ожу в следующий урок — очень благодарен!Спас ибо))))

-5 # АЙЖАН 22.12.2012 12:02
-1 # Zhenko 24.12.2012 18:10

Умоляю! Помогите составить программу
Векторы и матрицы
Дан вектор А, состоящий из 12 вещественных чисел. Оставить его без изменения, если он упорядочен по возрастанию или по убыванию. В противном случае удалить те элементы А, порядковые номера которых кратны трём, сохранив прежним порядок оставленных членов.
А=

+1 # Casil 16.03.2018 13:30

Program P1;
uses crt;
const
n_max = 100;
var
a: array[1..n_max] of integer;
n, m, i, j, q, pos: integer;
t: boolean;
max, tmp: integer;
begin
write(‘Введите размерность массива: ‘);
readln(n);
WriteLn (‘Введите элементы массива’);
for i := 1 to n do
begin
a := -n_max div 2 + n_max;
write(‘A[‘,i,’] = ‘);
ReadLn (A);
if a > max then
begin
max := a;
pos := i;
end;
end;
writeln;
i := 1;
while (i a[q] then
begin
tmp := a[j];
a[j] := a[q];
a[q] := tmp;
end;
writeln(‘Отсорт ированный массив: ‘);
for i := 1 to n do
write(a:5);
end.

0 # Павел 25.12.2012 10:07

Zhenko! Боюсь тут тебе не помогут никак. Большая часть народа либо просто хвастается либо умеет но делать такие простейшие программы как a:=1+1; Обратись лучше на какой нибудь форум, а лучше изучи сам.

Вот один не плохой форум: http://www.cyberforum.ru/

Желаю удачки тебе! Творческих успехов

+7 # Аня 25.12.2012 16:34
Павел, если такой умный, то взял бы да помог Zhenko.
+3 # Виталек 30.01.2013 13:44
Даа.программиро вание вещь сложная
0 # Дмитрий 12.02.2013 20:00
Ничего не сложная. Вот здесь есть простые уроки, написанные простым языком.
pascal-abc.ru
-2 # Программист-Студент 17.02.2013 13:55
Сергей ты оператор забыл вставить, по моему «if»
+4 # Артем 21.02.2013 13:42

Вот программа, которая меняет системную дату и время. никак не могу сделать так, чтобы 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.

-1 # ЕвгенЕвгений 12.01.2015 15:30

Если это Паскаль, то ты зря этот клрскр в начале ставишь. Ставь его либлибо в тело основноосновной программы, либо в процедуры, но явно не в недоделанный бегин

-1 # Soofy230 13.05.2017 05:44
Перед каждым begin поставь должно помочь
-1 # Den 05.03.2013 23:56

подскажите, переписал все один в один как тут написано, все точки с запятой и все такое. но при запуске программы выскакивает такое сообщение

Error: Identifier not found «readIn»

гуглил не помогло, не смог найти причины.

-1 # Den 05.03.2013 23:57

а когда убрал readIn — заработало, но на экран понятно что ничего не выводит, просто видно как мелькает программа и ошибки нет

+4 # Антон 21.03.2013 19:06

Хм.. Попробуй после «readln» поставить точку с запятой, если не поставил, может устранится ошибка. или воспользуйся процедурой «delay»

-4 # Олег 16.03.2013 09:14
Артем, удали вот эту строчку: «Write(‘Cleared Screen!’);»
Тогда заработает. Я так думаю.
-3 # Александр 16.03.2013 16:13
Интересно и просто!
0 # Дмитрий 28.03.2013 13:46

У меня почему-то слово write написано желтым, а должно быть, как я понимаю белым. И без конца выдаёт ошибки(

-1 # Артем 21.05.2013 18:02
Напиши не write , а writeln
-3 # убери ковычки 05.03.2014 02:20
+4 # Антон 02.03.2014 16:02

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.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *