В мові Паскаль вв якості формальних параметрів крім параметрів-значень і параметрів- змінних використовують імена процедур і функцій.
В багатьох задачах, особливо в завданнях обчислювальної математики, необхідно передавати імена процедур і функцій у вигляді параметрів. Для цього в Turbo Pascal запроваджений новий тип даних - процедурний або функціональний, залежно від того, що описується. Опис процедурних і функціональних типів здійснюється в розділі опису типів:
Type
Functype = Function( z : Real) : Real;
Proctype = Procedure( a, b : Real; var x, y : Real);
Функціональний і процедурний тип визначається як заголовок процедури і функції зі списком формальних параметров, але без імені. Можна визначити функціональний чи процедурний тип без параметрів, наприклад:
type Proc = Procedure;
Після оголошення процедурного або функціонального типу його можна використати для опису формальних параметрів - імен процедур і функцій. Крім того, необхідно написати ті реальні процедури чи функції, імена яких будуть передаватися як фактичні параметри. Ці процедури і функції повинні компiлюватися в режимі дальньої адресації з ключем {$f+}.
Приклад. Скласти програму для обчислення визначеного iнтегралу
за методом Сiмпсона. Обчислення підiнтегральної функції реалізувати за допомогою функції, ім'я якої передається як параметр.
Значення визначеного iнтеграла по формулі Сiмпсона вираховується за формулою:
де а і b - нижня і верхня межа iнтервалу iнтегрування,
N - кількість точок поділу iнтервалу iнтегрування,
h = (B - A)/n - крок зміни аргумента, причому N повинно бути парним.
Program INTEGRAL;
type Func= function(x: Real): Real;
var I,TN,TK:Real;
N:Integer;
{$F+}
Function Q(t: Real): Real;
begin
Q:=2*t/Sqrt(1-Sin(2*t));
end;
{$F-}
Procedure Simps(F:Func; a,b:Real; N:Integer; var INT:Real);