Руководство по языку B.Pascal 7

         

Процедурные типы


В стандартном Паскале процедуры и функции рассматриваются только как части программы, которые можно выполнять с помощью вы- зова процедуры или функции. В Borland Pascal процедуры и функции трактуются гораздо шире: здесь допускается интерпретация процедур и функций, как объектов, которые можно присваивать переменным и передавать в качестве параметров. Такие действия можно выполнять с помощью процедурных типов.

В описании процедурного типа задаются параметры, а для функ- ции - результат функции.

процедурный тип ¦ ¦ ---------- LT>¦procedure+-T-----------------------------------------------> ¦ L---------- ¦ ----------------------------- ^ ^ ¦ L->¦список формальных параметров+-- ¦ -- L----------------------------- L- ¦ --------- ---- ----------¦ L>¦function+T-------------------------------->¦ : +>¦результат+- L---------¦ -----------------------------^ L---- L---------- L>¦список формальных параметров+- L-----------------------------

Характерно, что синтаксис записи процедурного типа в точнос- ти совпадает с записью заголовка процедуры или функции, только опускается идентификатор после ключевого слова procedure или function. Приведем некоторые примеры описаний процедурного типа:

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 не позволяет описывать функции, которые возв- ращают значения процедурного типа. Результат функции должен быть строкового, вещественного, целого, символьного, булевского типа, указателем или иметь перечислимый тип, определенный пользовате- лем.


Процедурные типы хранятся в виде двойного слова. При этом в младшем слове содержится смещение процедуры, а в старшем - базо- вый сегмент.



Содержание раздела