35. Структура программ с использованием процедур. Процедурный тип. Пример описания и использования. Параметры-функции и параметры-процедуры. Примеры использования.
Описание процедуры включает заголовок (имя) и тело процедуры. Заголовок состоит из зарезервированного слова procedure, идентификатора (имени) процедуры и необязательного, заключенного в круглые скобки, списка формальных параметров с указанием типа каждого параметра. Имя процедуры – идентификатор, уникальный в пределах программы. Тело процедуры представляет собой локальный блок, по структуре аналогичный программе.
Описания меток, констант, типов и т.д. действительны только в пределах данной процедуры. В теле процедуры можно использовать любые глобальные константы и переменные.
procedure <имя> (Формальные параметры);
const ...;
type ...;
var ...;
begin
<операторы процедуры>
end;
Использование процедуры на примере программы поиска максимума из двух целых чисел.
var x,y,m,n: integer;
procedure MaxNumber(a,b: integer; var max: integer);
begin
if a>b then max:=a else max:=b;
end;
begin
write('Введите x,y ');
readln(x,y);
MaxNumber(x,y,m);
MaxNumber(2,x+y,n);
writeln('m=',m,'n=',n);
end.
Процедурный тип. Пример описания и использования.
Параметры процедурного типа используют тогда, когда нужно передать в подпрограмму имена процедур и функций. Для объявления процедурного типа используют заголовок подпрограммы, в котором отсутствует имя, например:
Туре proc=procedure (a,b,c:real;Var d:real):
func=function(x: real): real;
Значениями переменных процедурных типов являются идентификаторы процедур и функций с соответствующими заголовками:
Var f:func;
...
f:fun1;
Процедуры или функции, идентификаторы которых будут передаваться в качестве параметров процедурного типа, по правилам языка необходимо компилировать в режиме дальнего вызова (с указанием директивы компилятора {$F+} или служебного слова far). В этом режиме при вызове подпрограмм используются длинные 4-байтовые адреса в отличие от коротких 2-байтовых адресов, которые применяются для адресации подпрограмм, объявленных в основной программе или ее подпрограммах.
Параметры-функции.
<...>
Параметры-процедуры.
<...>