Функции

BEGIN

Процедуры

Вызов подпрограмм

 

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

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

 

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

 

PROCEDURE <имя>(формальные параметры);

{раздел описания(метки, константы, типы, переменные )}

{ операторы подпрограмм }

END;

 

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

Пример программы вычисления второй и третьей степеней числа: ]

 

PROGRAM PROS;

VAR X,Y,A,A2,A3:INTEGER;

{А-исходная переменная, А2 - А2, А3 – А3 .глобальные переменные}

PROCEDURE STEP23; {процедура без параметров}

BEGIN

А2:=А*А;

А3: =A2*A;

WRITELN(A:5, А2:5, А3:6);

END;

BEGIN {основная программа}

READ(Y,X);

WRITELN (‘ Число; квадрат; куб’ )

А:=Х;

STEP23; {вызов подпрограммы}

А:=Y;

STEP23 {вызов подпрограммы}

END.

 

Любой из формальных параметров процедуры может быть либо параметром-значением, либо параметром-переменной. Формальному параметру - значению (обычно для задания исходных данных) может соответствовать фактический параметр - константа, переменная или выражение. Параметру- переменной может соответствовать только переменная. Обычно параметры – переменные используются для передачи результатов в вызывающую программу. Параметрам-переменным в заголовке функции должно предшествовать слово VAR.

 

Пример:

PROCEDURE P(Y,X:REAL; VAR Z1,Z2:REAL);

{ Y,X - параметры-значения. Z1, Z2 - параметры-переменные }.

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

Чем меньше параметров объявлено параметрами-переменными и чем меньше используется глобальных переменных, тем меньше возможность получения непредвиденных программистом побочных эффектов в программе.

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

 

 

Функция описывается в программе следующей структурой:

 

FUNCTION <имя> (формальные параметры}:<тип>:

{ раздел описаний: переменные, типы, метки}