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.
|
|