Теория и практика объектно-ориентированного программирования. Ноткин А.М. - 8 стр.

UptoLike

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

9
type
Proc = procedure;
SwapProc = procedure(var X, Y: Integer);
StrProc = procedure(S: String);
MathFunc = function(X: Real): Real;
DeviceFunc = function(var F: text): Integer;
MaxFunc = function(A, B: Real; F: MathFunc): Real;
Имена параметров в описании процедурного типа играют чисто де-
коративную роль на смысл описания они не влияют.
Borland Pascal не позволяет описывать функции, которые возвраща-
ют значения процедурного типа. Результат функции должен быть указате-
лем строкового, вещественного, целого, символьного, булевского типа или
иметь перечислимый
тип, определенный пользователем.
Переменной процедурного типа можно присвоить процедурное зна-
чение. Процедурные значения могут быть следующими:
значениями nil;
ссылкой на переменную процедурного типа;
идентификатором процедуры или функции.
В контексте процедурных значений описание процедуры или функ-
ции можно рассматривать как специальный вид описаний констант, когда
значением константы является процедура или
функция.
Использование процедурных переменных, которым в операторе
вызова процедуры или функции присваивается значение nil, приводит к
ошибке. Значение nil предназначено для указания того, что процедурной
переменной не присвоено значение, и там, где процедурная переменная
может получить значение nil, участвующие в этой процедурной перемен-
ной вызовы процедур и функций следует подвергать проверке:
if @P <> nil then P(I, J);
Обратите внимание
на использование операции @ для указания то-
го, что P проверяется, а не вызывается.
Параметры процедурного типа. Поскольку процедурные типы
допускается использовать в любом контексте, то можно описывать проце-
дуры или функции, которые воспринимают процедуры и функции в каче-
стве параметров.
Параметры процедурного типа особенно полезны в том случае, когда
над
множеством процедур или функций нужно выполнить какие-то общие
действия. В следующем примере показывается использование параметров
процедурного типа для вывода трех таблиц различных арифметических
функций:
                                   9
            type
              Proc = procedure;
              SwapProc = procedure(var X, Y: Integer);
              StrProc = procedure(S: String);
              MathFunc = function(X: Real): Real;
              DeviceFunc = function(var F: text): Integer;
              MaxFunc = function(A, B: Real; F: MathFunc): Real;

      Имена параметров в описании процедурного типа играют чисто де-
коративную роль − на смысл описания они не влияют.
      Borland Pascal не позволяет описывать функции, которые возвраща-
ют значения процедурного типа. Результат функции должен быть указате-
лем строкового, вещественного, целого, символьного, булевского типа или
иметь перечислимый тип, определенный пользователем.
      Переменной процедурного типа можно присвоить процедурное зна-
чение. Процедурные значения могут быть следующими:
      − значениями nil;
      − ссылкой на переменную процедурного типа;
      − идентификатором процедуры или функции.
      В контексте процедурных значений описание процедуры или функ-
ции можно рассматривать как специальный вид описаний констант, когда
значением константы является процедура или функция.
      Использование процедурных переменных, которым в операторе
вызова процедуры или функции присваивается значение nil, приводит к
ошибке. Значение nil предназначено для указания того, что процедурной
переменной не присвоено значение, и там, где процедурная переменная
может получить значение nil, участвующие в этой процедурной перемен-
ной вызовы процедур и функций следует подвергать проверке:
              if @P <> nil then P(I, J);
      Обратите внимание на использование операции @ для указания то-
го, что P проверяется, а не вызывается.
      •Параметры процедурного типа. Поскольку процедурные типы
допускается использовать в любом контексте, то можно описывать проце-
дуры или функции, которые воспринимают процедуры и функции в каче-
стве параметров.
      Параметры процедурного типа особенно полезны в том случае, когда
над множеством процедур или функций нужно выполнить какие-то общие
действия. В следующем примере показывается использование параметров
процедурного типа для вывода трех таблиц различных арифметических
функций: