Процедурный тип. Таблица синусов и тангенсов.
Задача.
Напечатать таблицу тангенсов углов от 0 до 90
o с шагом 15
o, используя
процедурный тип.
type
func1 = function (X:Real):Real; {функция с параметром-значением
типа Real, возвращающая значение типа Real}
{ Далее можно объявить переменные такого типа: }
var F1: func1;
{$F+}
function Tan(angle: Real): Real;
begin if cos(angle) <> 0 then
tan := sin(angle)/cos(angle)
else tan := 1e30;
end;
function sin2(angle: Real): Real;
begin
sin2 := sin(angle);
end;
{$F-}
procedure tabl(f2: Func1; messa: string);
var xx: Real;
begin
xx := 0;
while xx < pi/2 do
begin
writeln (messa,'(',xx*180/pi:3:0,')= ',f2(xx));
xx := xx + pi/12;
end;
end;
begin {главная программа}
F1 := Tan;
tabl(F1,'tg');
F1 := sin2;
tabl(F1,'sin');
end.
----- Результат работы: -----
Turbo Pascal Version 7.0 Copyrig
tg( 0)= 0.00000000000000E+0000
tg( 15)= 2.67949192431388E-0001
tg( 30)= 5.77350269189992E-0001
tg( 45)= 1.00000000000182E+0000
tg( 60)= 1.73205080757180E+0000
tg( 75)= 3.73205080758271E+0000
sin( 0)= 0.00000000000000E+0000
sin( 15)= 2.58819045102882E-0001
sin( 30)= 5.00000000000000E-0001
sin( 45)= 7.07106781186667E-0001
sin( 60)= 8.66025403784988E-0001
sin( 75)= 9.65925826289094E-0001