Иногда возникает необходимость, чтобы подпрограмма выполняла разные, но однотипные, действия над данными. Пусть, например, нужно напечатать таблицу результатов одного из 4-х арифметических действий (+ - * /) над числами от 2 до 9 (таблица умножения, сложения, деления, вычитания). Для этого можно сочинить подпрограмму, которая имеет своими параметрами эти 2 числа и функцию от 2-х параметров. В зависимости от выбора пользователя эта подпрограмма выдаст любую из этих 4-х таблиц. Если мы научимся использовать и применим ПРОЦЕДУРНЫЙ тип.
Объявление подпрограммы совпадает с заголовком продпрограммы, за исключением того, что в объявлении (естественно) отсутствует имя подпрограммы. Это - объявление типа.
Примеры описания процедурных типов:
type Proc1 = procedure; {процедура без параметров} Proc2 = procedure (var x,y: Integer); {процедура с 2 параметрами-переменными типа Integer} func1 = function (X:Real):Real; {функция с параметром-значением типа Real, возвращающая значение типа Real} { Далее можно объявить переменные такого типа: } var P1: Proc1; P2,P4: Proc2; F1: func1; (* Далее можно описать конкретные подпрограммы (обязательно используя директиву far или {$F+} - применять дальние адреса) и присваисать их имена переменным процедурного типа. *)Пример: Посмотрите: Программа использует процедуру с параметром процедурного типа, которая печатает таблицу тангенсов, затем - таблицу синусов от 0 до 90 град с шагом 15 град.