Вызов процедуры в основной программе

Описание процедуры

Описывается пользовательская процедура в разделе описания программы (после описания переменных, перед begin). Структура процедуры повторяет структуру программы:

Procedure имя процедуры (список формальных параметров);

раздел описания процедуры;

Begin

тело процедуры;

End;

 

Вызов процедуры в основной программе

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

имя процедуры (список фактических параметров);

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

Пример 1: Составить программу нахождения НОДа трёх натуральных чисел, имея в виду, что НОД (a,b,c)=НОД (НОД(a,b),c).

 

Параметры, которые указываются при описании процедуры, называются формальными. Название «формальные» они получили из-за того, что они нужны только для записи алгоритма, а при вызове подпрограммы на их место будут подставлены конкретные фактические параметры. !!! Перед параметром, который возвращает результат работы процедуры в основную программу пишется VAR
Program primer1;

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.

Внимание:

! Формальных и фактических параметров должно быть одинаковое количество.

! Порядок следования фактических и формальных параметров должен быть один и тот же.

! Тип фактического параметра совпадает с типом соответствующего формального.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: