{$APPTYPE Console}
program FuncAsParams;
{ Um Funktionen als Parameter an andere Routinen übergeben
zu können, muessen sie zunaehst als (Funktions-) Typ
deklariert werden. }
type tFunc = function(x : real): real;
{ Diese Prozedur bekommt nun eine Funktion als Parameter ... }
procedure Calc(min, max, step: real; f : tFunc);
var i : integer;
x : real;
begin
i := 0;
x := min;
while x <= max do
begin
writeln(x:5:2, ' ' , f(x):5:2); { Aufruf jener Funktion}
inc(i);
x := min + i * step;
end;
end;
{ herkömmliche Funktion zum Übergeben }
function quadr(x : real) : real;
begin
quadr := x * x;
end;
{ herkömmliche Funktion zum Übergeben }
function sinus(x : real) : real;
begin
sinus := sin(X);
end;
begin
Calc(0, 5, 1, quadr);
Calc(0, pi, 0.3, sinus);
readln;
end.