Функции
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 <имя> (формальные параметры}:<тип>:
{ раздел описаний: переменные, типы, метки}