ПАСКАЛЬ: точка повернення, підстановка аргументів, зберігання змінних
function sh(x : real) : real.
Отже, заголовком процедури було б
procedure tabf(function f(xxxx : real) : real; a, b, h : real);
Якби f була не функцією, а процедурою, ми записали б відповідноprocedure tabf( procedure f(…);…)…
У стандарті мови Паскаль параметри-підпрограми можуть мати параметрами тільки параметри-значення, а параметри-змінні та підпрограми не допускаються. Втім, параметр-підпрограма може й зовсім не мати параметрів.
У мові Турбо Паскаль типи параметрів у заголовках підпрограм можна задавати тільки іменами. Інші вирази заборонені. Тому тут потрібно заздалегідь означити тип підпрограми і використовувати його в заголовку tabf:
type typfun = function (xxxx : real) : real; {ім'я функції відсутнє ! }
procedure tabf( f : typfun; a, b, h : real);
Однією з особливостей роботи з системою Турбо Паскаль є використання так званих директив транслятора. Вони записуються в коментарі з символом $ на початку і задають спеціальні режими роботи транслятора. Не поринаючи у подробиці, скажемо лише, що якщо підпрограма використовується як аргумент у викликах інших підпрограм, то перед нею треба написати директиву {$F+}, а після – {$F-}. У нашому прикладі означення імен функцій sh, ch і th слід узяти в "директивні дужки":
{$F+}
function sh(x : real ) : real; … end;
function ch(x : real ) : real; … end;
function th(x : real ) : real; … end;
{$F-}
У мові Турбо Паскаль підпрограми, що використовуються як аргументи, можуть мати параметри всіх трьох видів, а не лише параметри-значення. Можливо також використання змінних типу підпрограма. Наприклад, ми могли б у нашому прикладі означити "змінну типу функція"
var zz : typfun;
і використовувати її далі в програмі:
for m:=1 to 3 do
begin if m=1 then zz:=sh else
if m=2 then zz:=ch else zz:=th;
tabf(zz, a, b, h)
end;