ВУЗ:
Составители:
Рубрика:
10
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.
В данном случае процедура PrintTable представляет собой общее
действие, выполняемое над функциями Add, Multiply и Funny.
Если процедура или функция должны передаваться в качестве пара-
метра, они должны удовлетворять тем же правилам совместимости типа,
что и при присваивании, то есть:
1) такие процедуры или функции должны компилироваться с дирек-
тивой far;
2) они не могут быть встроенными
функциями;
3) они не могут быть вложенными;
4) они не могут описываться с атрибутами inline или interrupt.
10 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. В данном случае процедура PrintTable представляет собой общее действие, выполняемое над функциями Add, Multiply и Funny. Если процедура или функция должны передаваться в качестве пара- метра, они должны удовлетворять тем же правилам совместимости типа, что и при присваивании, то есть: 1) такие процедуры или функции должны компилироваться с дирек- тивой far; 2) они не могут быть встроенными функциями; 3) они не могут быть вложенными; 4) они не могут описываться с атрибутами inline или interrupt.
Страницы
- « первая
- ‹ предыдущая
- …
- 7
- 8
- 9
- 10
- 11
- …
- следующая ›
- последняя »