Процедуры пользователя.
Функции пользователя.
Функция, определенная пользователем, состоит из заголовка и тела функции и имеет формат:
FUNCTION имя функции[(формальные параметры)]:тип результата;
Разделы описаний
BEGIN
Раздел операторов
END;
Тип результата – тип возвращаемого функцией значения. Тело функции представляет собой локальный блок, по структуре аналогичный программе. В разделе операторов должен находится по крайней мере один оператор, присваивающий идентификатору функции значение.
Обращение к функции осуществляется по имени с указанием списка аргументов. Каждый аргумент должен соответствовать формальным параметрам, указанным в заголовке функции, и иметь тот же тип. Формат обращения к функции:
имя функции [(фактические параметры)];
Описание процедуры включает заголовок (имя) и тело процедуры. Заголовок состоит из зарезервированного слова PROCEDURE, имени процедуры и необязательного заключенного в круглые скобки списка формальных параметров с указанием типа каждого параметра. Имя процедуры – идентификатор, уникальный в пределах программы, тело процедуры – локальный блок по структуре аналогичный программе на Паскале. Формат записи процедуры:
PROCEDURE имя процедуры[(формальные параметры)];
Разделы описаний
BEGIN
Раздел операторов
END;
Для обращения к процедуре используется оператор вызова процедуры:
имя процедуры[(фактические параметры)];
Список фактических параметров заключается в круглые скобки, параметры отделяются друг от друга запятыми. Список параметров может отсутствовать, если процедуре не передается никаких значений. Между фактическими параметрами в операторе вызова процедуры и формальными параметрами в заголовке описания процедуры устанавливается взаимно-однозначное соответствие: количество и тип формальных параметров равны количеству и типу фактических параметров.
Если процедура возвращает в программу какие-либо значения, то соответствующие переменные должны быть описаны в разделе описаний переменных.
Пример 15. Нахождение факториала с использованием функции.
PROGRAM FAKT;
USES CRT;
VAR N,M,F1,F2: integer;
FUNCTION F(K: integer): integer;
VAR FAKT,I : integer;
BEGIN
FAKT:=1
FOR I:=1 TO K DO FAKT:=FAKT*I;
F:=FAKT;
END;
BEGIN {основная программа}
CLRSCR;
READ (N,M);
F1:=F(N); F2:=F(M); {обращение к функции}
WRITELN(‘ ‘,N:3,’!=’,F1:7);
WRITELN(‘ ‘,N:3,’!=’,F2:7);
END.
б)Нахождение факториала с использованием процедуры.
PROGRAM FAKT;
USES CRT;
VAR N,M: integer;
PROCEDURE F(K: integer);
VAR FAKT,I : integer;
BEGIN
FAKT:=1
FOR I:=1 TO K DO FAKT:=FAKT*I;
WRITELN(‘ ‘,K:3,’!=’,FAKT:7);
END;
BEGIN {основная программа}
CLRSCR;
READ (N,M);
F(N); F(M); {обращение к процедуре}
END.