Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Pascal.doc
Скачиваний:
32
Добавлен:
12.03.2016
Размер:
3.29 Mб
Скачать

Программа 2

USESCRT;

PROCEDUREtochka;

BEGIN Sound(900); Delay(100); NoSound; Delay(80) END;

PROCEDUREtire;

BEGIN Sound(900); Delay(200); NoSound; Delay(80) END;

BEGIN

{буква P:} tochka; tire; tire; tochka; Delay(300);

{буква I:} tochka; tochka; Delay(300);

{буква P:} tochka; tire; tire; tochka; Delay(300);

{буква I:} tochka; tochka; Delay(300);

{буква N:} tire; tochka; Delay(300);

{буква G:} tire; tire; tochka; Delay(300);

END.

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

Сначала мы обнаружили в программе 1 часто повторяющиеся фрагменты. Их было два:

Sound(900); Delay(100); NoSound; Delay(80); {точка}

Sound(900); Delay(200); NoSound; Delay(80); {тире}

Затем мы придумали имена каждому фрагменту: tochkaиtire. После этого можно было писать программу 2. Каждый фрагмент мы записали один раз в начале программы выше главного BEGIN, оформив его в виде так называемогоописания процедуры:

PROCEDURE tochka;

BEGIN Sound(900); Delay(100); NoSound; Delay(80) END;

PROCEDURE tire;

BEGIN Sound(900); Delay(200); NoSound; Delay(80) END;

В результате программа “узнала”, что такое tochkaиtire. С этого моментаимена процедур tochkaиtireможно употреблять, как обыкновенные операторы, ниже главного BEGIN. Паскаль выполняет программу, начиная с главного BEGIN, и когда он натыкается на имя процедуры, он подставляет вместо него соответствующий фрагмент, взятый из описания процедуры. Это событие называетсявызовом процедуры или обращением к процедуре.

Синтаксис описания простейшей процедуры таков:

PROCEDURE имя ; BEGIN оператор ; оператор ; ... END

Слово PROCEDURE читается “про’сидже”, переводится “процедура”. Имя процедуры создается по тем же правилам, что и имя переменной. Все, что идет после имени, будем называть телом процедуры.

Задание 64:Составьте программу с процедурами, которая исполнит мелодию “Чижик-пыжик” (ми-до-ми-до-фа-ми-ре-соль-соль-ля-си-до-до-до).

А теперь попробуем еще больше упростить нашу программу. Замечаем, что и в программе 2 тоже имеются одинаковые фрагменты:

{буква P:} tochka; tire; tire; tochka; Delay(300);

{буква I:} tochka; tochka; Delay(300);

Для экономии места их тоже выгодно оформить в виде процедур:

PROCEDURE P;

BEGIN tochka; tire; tire; tochka; Delay(300) END;

PROCEDURE I;

BEGIN tochka; tochka; Delay(300) END;

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

Программа 3

USESCRT;

PROCEDUREtochka;

BEGIN Sound(900); Delay(100); NoSound; Delay(80) END;

PROCEDUREtire;

BEGIN Sound(900); Delay(200); NoSound; Delay(80) END;

PROCEDUREP;

BEGIN tochka; tire; tire; tochka; Delay(300) END;

PROCEDUREI;

BEGIN tochka; tochka; Delay(300) END;

PROCEDUREN;

BEGIN tire; tochka; Delay(300) END;

PROCEDUREG;

BEGIN tire; tire; tochka; Delay(300) END;

BEGIN

P;I;P;I;N;G

END.

Эта программа понятна и без комментариев. От предыдущей она отличается тем, что процедуры вызываются не только из тела программы, но и из тел других процедур. Действительно, посмотрим на самое начало выполнения программы. Первое, на что натыкается Паскаль ниже главного BEGIN, это P. Заглянув выше главного BEGIN, Паскаль обнаруживает, чтоP- это имя процедуры, и начинает ее выполнять (вызывает на выполнение). При этом, первое, на что он натыкается, этоtochka. Заглянув выше, Паскаль обнаруживает, чтоtochka- это имя процедуры, и тоже начинает ее выполнять (вызывает на выполнение). Обратите внимание, что

вызываемая процедура должна быть описана выше вызывающей.

Такая уж особенность у Паскаля. О том, что делать, если это требование выполнить невозможно, написано в 6.6. Закончив выполнять процедуру tochka, Паскаль возвращается в процедуруP (возвращает управление процедуреP). Там он идет к следующему оператору. Это оказываетсяtire. И т.д.

Задание 65:Компьютер печатает текстПесня «Чижик-пыжик». 1 куплет. После этого исполняется мелодия чижика-пыжика (см. выше). Затем компьютер печатает текст 2 куплети мелодия чижика-пыжика исполняется еще раз.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]