Pers.narod.ru. Алгоритмы. Перегрузка функций на Паскале с помощью type

Оператор type, не слишком удобный при передаче векторных или матричных параметров подпрограммам, неплохо подходит для описания типа данных "функция". Этот тип позволит затем передавать функции или процедуры в качестве параметров другим подпрограммам.

Пример ниже показывает, как после описания типа данных func оператором

type func= function (x,y:integer) :integer;

мы можем передавать процедуре DoTable различные функции, подходящие по прототипу под это описание.

type func= function (x,y:integer) :integer;

function add (x,y:integer) :integer; {Функция сложения 2 чисел}
begin
 add:=x+y;
end;

function multiply (x,y: integer) :integer; {Функция умножения 2 чисел}
begin
 multiply:=x*y;
end;

procedure DoTable (a,b: integer; operation:func);
{Функция создания таблицы чисел; ее последний параметр -
 функция вычисления одного элемента таблицы}
 var i,j:integer;
begin
 for i:=1 to a do begin
  for j:=1 to b do
   write (operation(i,j):5);
  writeln;
 end;
 writeln;
end;

begin
 Writeln ('Таблица сложения чисел от 1 до 10:');
 DoTable (10,10,Add);
 Writeln ('Таблица умножения чисел от 1 до 10:');
 DoTable (10,10,Multiply);
 Write ('Нажмите Enter для выхода...');
 Readln;
end.

Рейтинг@Mail.ru

вверх гостевая; E-mail
Hosted by uCoz