Параметри-процедури і параметри-функції
Як формальні параметри в мові Паскаль, крім параметрів-значень і параметрів-змінних, використовують також імена процедур і функцій.
Параметри-процедури в списку формальних параметрів в авторській версії Паскаль зазначають після службового слова procedure. Наприклад
procedure PR(i, j: integer; var z: real; procedure P);
Параметри-функції в списку формальних параметрів наводять після службового слова function з зазначенням типу функції:
procedure PM(i, j: integer; var z: real; function F: real);
Приклад використання параметрів-процедур (схематично):
program R;
var ar, br, cr: real;
…………….
procedure P(x, y: real);
…………….
Begin
…………….
end; {P}
procedure Q(k, g: real);
begin
……………
end; {Q}
Тут результат від процедур Р і Q повинен передаватися через глобальні змінні:
procedure T(procedure S(p, g: real); var a, b: real);
var c,d: real
………….
begin
………….
S(c+1,d/2)
………….
end {T}
begin {R}
T(P, ar, br);
………….
T(Q, br, cr);
………….
end.{R}
У Турбо Паскалі використання параметрів-процедур і параметрів-функцій дещо інше, зокрема, потрібно попередньо визначити процедурний тип:
type
Proc=procedure(T: real);
Func=function(x, y: real): real;
Тоді, наводячи серед формальних параметрів ім'я процедури чи функції, потрібно після двокрапки зазначити відповідне ім'я типу, наприклад:
{$F+}
type
Func=function(x, у: real): real;
function f1(a, b: real): real;
begin
f1:=a+b;
end;
function f2(c, d: real): real;
begin
f2:=c*d;
end;
function fun(x, y: real; f: Func): real;
begin
fun:=f(x, y);
end;
begin
writeln('+', fun(1,2, f1));
writeln('*', fun(2, 3, f2))
end.
Отже, під час виклику процедури чи функції, що містить як формальні параметри-процедури чи параметри-функції, на їхнє місце підставляються відповідні імена фактичних процедур і функцій. Якщо в цьому випадку процедури і функції, що є формальними параметрами, мають інші параметри, то ці параметри можуть бути тільки параметрами-значеннями.