Введение в программирование - Учебное пособие (Корочкин А. В.)

11.2 конкретизация настраиваемых модулей

Конкретизация или настройка ( instantiation) настраиваемых модулей выполняется во время компиляции. При этом создаётся новый модуль с заданными свойствами, которые определяют подставленные фактиче­ские параметры. Созданный таким образом модуль аналогичен обыч­ному модулю языка (пакету или подпрограмме) и может использовать­ся в программе. Количество создаваемых при конкретизации модулей неограничено. Результат конкретизации настраиваемой процедуры есть процедура, настраиваемого пакета - пакет. Конкретизация - копи­рование текста шаблона. При этом каждый формальный параметр по­лучает фактическое значение.

Общий вид конкретизации:

| PACKAGE | FUNCTION | PROCEDURE ]     Имя     IS

NEW      Имя_Настраиваемого_Модуля

[Список _Фактических_Параметров_Настройки];

Здесь Имя - название нового создаваемого при конкретизации мо­дуля.

Конкретизация должна выполняться в описательной части програм­мы, подпрограммы, блока и приводит к новому множеству описаний.

Фактические параметры при конкретизации задаются как в позици­онной форме, так и в именованной . При этом они могут быть:

•   выражением;

•   именем переменной;

•   именем подпрограммы;

•   именем входа;

•   именем типа;

•   именем подтипа;

120

121

Ада 95. Введение в программирование

•   именем настройки пакета. П Пример конкретизации: package       HORSE     is      new     REZ (integer, Vecsum);

procedure    Sort_Mod      is      new

Sort (N => 20 ;   Data => Float;    Max => Mf);

function      Alfa    is    new      Machine;