Cтраница 1
Процедурные типы позволяют применять переменные-процедуры. Новички в применении сильно типизированных языков, таких как Модула-2, Паскаль и Ада, считают совершенно новым понятие типа и объявление типов переменных. Но как только вы поняли, как создаются типы переменных, представление о типах и переменных, представляющих процедуры, оказывается простым логическим расширением этого понятия, хотя приложение этого средства может оказаться вполне абстрактным. [1]
Процедурные типы и процедуры-переменные могут применяться точно так же, как любые другие переменные и типы. Одним из таких применений может служить только что показанное предложение присваивания. [2]
Как только процедурный тип определен, можно объявлять переменные этого типа. [3]
Переменная процедурного типа - переменная, используемая для активации любой процедуры с совместимыми параметрами и результатом. Переменная процедурного типа служит для процедур тем же, чем указатели для динамических структур данных. [4]
Переменные процедурного типа чаще всего используют в двух ситуациях - в качестве элементов записей и в качестве параметров процедур. Возможность запомнить внутри записи переменную процедурного типа позволяет ассоциировать операции с конкретными объектами. Использование переменных процедурного типа в качестве параметров процедур позволяет создавать процедуры, выполняющие одни и те же действия над объектами различных типов. Это становится возможным благодаря тому, что интерфейс с типом данных передается в виде переменной процедурного типа. Этот вариант использования переменных процедурного типа проиллюстрирован в следующем разделе. [5]
Константа процедурного типа должна указывать идентификатор процедуры или функции, совместимый по присваиванию с типом константы. [6]
Применение процедурного типа не ограничивается одним лишь описанием параметров-процедур или функций. Раз есть такой тип, то могут быть и переменные такого типа. [7]
Использование процедурного типа не ограничивается процедурными переменными. [8]
Параметры процедурного типа особенно полезны в ситуациях, когда над множеством процедур или функций выполняются общие действия. [9]
Функциональный или процедурный тип ( в зависимости от того, что описывается) - отнюдь не тип возвращаемого значения, а тип заголовка подпрограммы в целом. Так, на рис. 6.10 параметр Funct есть одноместная функция вида f ( t), возвращающая вещественное значение. [10]
Так как процедурные типы допустимы в любом контексте, то можно объявить процедуры или функции, параметрами которых являются тоже процедуры или функции. Такие параметры являются параметрами-значениями, так как записываются в объявлении без служебного слова var. В качестве фактических параметров в этом случае используются объявленные процедуры или функции, имеющие соответствующее количество параметров требуемых типов. [11]
В языках процедурного типа для присваивания некоторой переменной вновь вычисленного значения служит оператор присваивания. Переменная представляет собой ящик, в который можно помещать значения данных. Тип переменной явно описывается в тексте программы и определяет класс значений, который может принимать переменная. Здесь имеют место два случая: 1) когда каждое значение, присваиваемое переменной, принадлежит определенному типу и 2) случай без такого ограничения, когда по ходу выполнения программы переменной можно присваивать значения любого типа. [12]
В объявлении процедурного типа присутствует список формальных параметров и ( для функции) тип результата. [13]
Синтаксис объявления процедурного типа совпадает с синтаксисом объявления заголовка процедуры или функции, за исключением того, что имя процедуры ( функции) после ключевого слова procedure или function опускается. [14]
В Модуле-2 имеется предопределенный процедурный тип PROC - процедура без параметров и результата. [15]