Описание процедуры
Описывается пользовательская процедура в разделе описания программы (после описания переменных, перед begin). Структура процедуры повторяет структуру программы:
Procedure имя процедуры (список формальных параметров);
раздел описания процедуры;
Begin
тело процедуры;
End;
Вызов процедуры в основной программе
Для обращения к процедуре используется оператор вызова процедуры. Он состоит из имени процедуры и списка фактических параметров:
имя процедуры (список фактических параметров);
При вызове процедуры указывается ее название и в скобках через запятую числа или переменные, которые функция будет использовать как исходные данные и результаты. При начале работы она берет эти данные и переименовывает в соответствии с теми названиями переменных, которые указаны в скобках после названия процедуры. Порядок переменных (как и в функции) играет очень важную роль, т. е. его нельзя изменять.
Пример 1: Составить программу нахождения НОДа трёх натуральных чисел, имея в виду, что НОД (a,b,c)=НОД (НОД(a,b),c).
|
|
|
Var a, b, c, nod1,nod2: int64;
procedure NOD(x, y:int64; var z:int64);
begin
while x<>y do
if x>y then x:=x - y
else y:=y - x;
z:=x; {или z:=y;}
end;
BEGIN { начало основной программы }
BEGIN { начало основной программы }
Readln (a, b, c);
NOD (a, b, nod1); { 1-ый вызов процедуры – НОД(а,b) }
NOD (nod1, c, nod2); { 2-ой вызов процедуры – НОД(nod1,c) }
|
Write (nod2);
END.
При 1-ом вызове процедуры работа основной программы приостанавливается. Формальные параметры процедуры заменяются фактическими в порядке их следования: a x, b y. Далее выполняется вызванная процедура. После её выполнения полученный НОД (z) передаётся в
основную программу (nod1). Когда процедура выполнила свою задачу, основная программа
продолжится с команды, следующей за оператором вызова процедуры. Произойдёт 2-ой вызов процедуры и будет найден НОД(nod1, c) nod2.
Внимание:
! Формальных и фактических параметров должно быть одинаковое количество.
! Порядок следования фактических и формальных параметров должен быть один и тот же.
! Тип фактического параметра совпадает с типом соответствующего формального.