TURBO PASCAL:Учебное пособие. Терёхин В.В. - 100 стр.

UptoLike

Составители: 

100
<идентификатор процедурного типа>: function (<список па-
раметров> : <тип значения функции>;
По существу, запись объявления типа полностью совпа-
дает с записью заголовка процедуры или функции, за исключе-
нием того, что в ней опущен идентификатор процедуры (или
функции).
Примеры:
Proc = procedure;
SwapProc = procedure(var x, у: integer);
StrProc = procedure(s: string);
MathFunc = function(x: real): real;
DeviceFunc = function(var f: text): integer;
MaxPunc = function(a, b: real; f: MathFunc): real;
Для работы с переменными процедурного типа, необхо-
димо процедуры и функции, используемые в процедурных
присваиваниях и вызовах, описывать как подпрограммы с меж-
сегментной адресацией (дальним вызовом). Для этого после
заголовка подпрограммы ставиться служебное слово far.
Примеры:
program р39;
type
TProc = procedure;
procedure Exec_Proc( р: TProc);
begin
p;
end;
procedure p1; far;
begin
Writeln('процедура 1');
end;
procedure p2; far;
begin
Writeln('процедура 2') ;
end;
  <идентификатор процедурного типа>: function (<список па-
раметров> : <тип значения функции>;

        По существу, запись объявления типа полностью совпа-
дает с записью заголовка процедуры или функции, за исключе-
нием того, что в ней опущен идентификатор процедуры (или
функции).
        Примеры:
Proc = procedure;
SwapProc = procedure(var x, у: integer);
StrProc = procedure(s: string);
MathFunc = function(x: real): real;
DeviceFunc = function(var f: text): integer;
MaxPunc = function(a, b: real; f: MathFunc): real;
        Для работы с переменными процедурного типа, необхо-
димо процедуры и функции, используемые в процедурных
присваиваниях и вызовах, описывать как подпрограммы с меж-
сегментной адресацией (дальним вызовом). Для этого после
заголовка подпрограммы ставиться служебное слово far.
        Примеры:
program р39;
type
   TProc = procedure;
   procedure Exec_Proc( р: TProc);
begin
   p;
end;
procedure p1; far;
begin
   Writeln('процедура №1');
end;
procedure p2; far;
begin
   Writeln('процедура №2') ;
end;
                                                         100