Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BorlandPascal.doc
Скачиваний:
54
Добавлен:
17.03.2015
Размер:
2.83 Mб
Скачать

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

Поскольку процедурные типы допускается использовать в любом

контексте, то можно описывать процедуры или функции, которые

воспринимают процедуры и функции в качестве параметров. В следую-

щем примере показывается использование параметров процедурного

типа для вывода трех таблиц различных арифметических функций:

program Tables;

type

Func = function(X,Y: integer): integer;

function Add(X,Y: integer): integer; far;

begin

Add := X + Y;

end;

function Multiply(X,Y: integer): integer; far;

begin

Multiply := X*Y;

end;

function Funny(X,Y: integer): integer; far;

begin

Funny := (X+Y) * (X-Y);

end;

procedure PrintTable(W,H: integer; Operation: Func);

var

X,Y : integer;

begin

for Y := 1 to H do

begin

for X := 1 to W do Write(Operation(X,Y):5);

Writeln;

end;

Writeln;

end;

begin

PrintTable(10,10,Add);

PrintTable(10,10,Multiply);

PrintTable(10,10,Funny);

end.

При работе программа Table выводит три таблицы. Вторая из

них выглядит следующим образом:

1 2 3 4 5 6 7 8 9 10

2 4 6 8 10 12 14 16 18 20

3 6 9 12 15 18 21 24 27 30

4 8 12 16 20 24 28 32 36 40

5 10 15 20 25 30 35 40 45 50

6 12 18 24 30 36 42 48 54 60

7 14 21 28 35 42 49 56 63 70

8 16 24 32 40 48 56 64 72 80

9 18 27 36 45 54 63 72 81 90

10 20 30 40 50 60 70 80 90 100

Параметры процедурного типа особенно полезны в том случае,

когда над множеством процедур или функций нужно выполнить ка-

кие-то общие действия. В данном случае процедуры PrintTable

представляет собой общее действие, выполняемое над функциями Add,

Multiply и Funny.

Если процедура или функция должны передаваться в качестве

параметра, они должны удовлетворять тем же правилам совместимости

типа, что и при присваивании. То есть, такие процедуры или функ-

ции должны компилироваться с директивой far, они не могут быть

встроенными функциями, не могут быть вложенными и не могут описы-

ваться с атрибутами inline или interrupt.

Глава 10. Программы и модули Синтаксис программ

Программа в Borland Pascal состоит из заголовка программы,

необязательного оператора uses и основного блока.

программа

¦ ---------- ---- ----- ----

L---T->¦заголовок+-->¦ ; +---T----------------->¦блок+->¦ . +->

¦ ¦программы¦ L---- ^ ¦ ------------ ^ L----- L----

¦ L---------- ¦ L->¦предложение+--

L----------------------- ¦ uses ¦

L------------

Соседние файлы в предмете Программирование на Pascal