Параметры-процедуры и параметры-функции.
Параметр процедурного типа может быть передаваемым параметром. Этот параметр является параметром-значением, т.е. записывается без Var.
В качестве фактического параметра используется процедура или функция, имеющая необходимое количество параметров требуемых типов.
ПП должна компилироваться с ключом { $F+ }.
Например, программа, печатающая таблицы сложения и умножения двух целых чисел в разном диапазоне.
Program Primer;
Type
Func = function (x, y : integer) : integer;
{ $F+ }
Function Add (x, y : integer) : integer;
begin
Add := x + y;
end;
Function Multiply ( x, y : integer) : integer;
begin
Multiply := x * y;
end;
{ F$- }
Procedure PrintTable (a, b : integer; operation : Func);
Var
I, j : integer;
begin
for i:=1 to a do
begin
for j :=1 to b do
write(operation(i, j));
writeln;
end;
writeln;
end;
Begin
PrintTable (10, 10, Add);
PrintTable (10, 10, Multiply);
End.
Компилятор Турбо Паскаля автоматически выбирает адресацию к ПП. Если ПП находится в одном файле с основной программой, то она компилируется с «ближним» адресом входа и возврата, состоящем только из смещения в текущем сегменте.
Если ПП используется для переменных процедурного типа, то она компилируется с получением «дальнего» адреса. В этом случае компилятору нужно указать ключ { F$+ }.
Дата добавления: 2015-01-13; просмотров: 640;