Оглавление Процедурный тип. Таблица синусов и тангенсов.


Задача.

Напечатать таблицу тангенсов углов от 0 до 90o с шагом 15o, используя процедурный тип.
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
Rambler's Top100
Hosted by uCoz