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

11.1 спецификация настройки и тела

Спецификация настройки   настраиваемого модуля имеет следующую форму:

GENERIC

Формальные_Параметры_Настройки

Спецификация_Пакета_Или_Подпрограммы.

Параметры настройки во многом аналогичны формальным парамет­рам подпрограмм. В качестве Формального_Парамет-ра_Настройки можно использовать:

•   формальный   обьект;

•   формальный  тип ;

•   формальный   модуль.

Формальный модуль настройки - это формальная подпрограмма или формальный пакет

Часть спецификации настройки, влючающая ключевое слово ge­neric и список формальных параметров настройки называется фор­мальной частью настройки.

Настраиваемые модули могут не иметь параметров настройки. В этом случае они используются для создания идентичных модулей. П Примеры формальной части настройки :

generic   - -  без   параметров

generic

N :   integer;          - - формальный   обьект

generic   - - формальный обьект, со значением Size :     positive : = 66 ; - - по  умолчанию

generic

type    Post    is    ( < > );     - -   формальные типы type   Port     is   private;

generic   - -   формальная функция

with    function   Read ( Elem :    float)   return   float;

generic   - -  формальная процедура

with   procedure    Cooler ( Power: in Data ; Volt: out fixed )

generic   - -  формальный пакет

with   package   Nord   is     new     West(.<>);

16  — Корочкин А.  В.

118

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

Глава 11. Настраиваемые модули

119

 

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

П Пример   спецификации настраиваемой процедуры Sort :

generic

N :           integer ; - - формальная часть настраиваемой type Data is private; - - процедуры Sort with function Max (А, В: Data) return Data;

procedure   Sort (X   : in   out   Data);              - - спецификация

Настраиваемая процедура Sort имеет три параметра настройки: обь-ект N, тип Оата и функцию Мах.

П Пример спецификации настраиваемого пакета   REZ:

generic

type     Elem    is    range   <>;   - - формальная часть

with     procedure   Sum (А, В : in     Elem ;    С :    out   Elem ); package    REZ    is              - - спецификация, пакета   REZ

procedure   Beta (X :   in   Elem);

REZ_Error:    exception; end    REZ;

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

Sort ,   спецификация на-

П Пример тела настраиваемой процедуры стройки которой описана выше:

procedure Sort (X :    in   out Data) is

Temp:     Data; begin

for  i    in   1   .. N     loop for j     in    1 .. N      loop

Temp(i):=    Max ( Х( i), X(j)); end   loop; end loop; X: =   Temp ; end    Sort;

Здесь при реализации тела процедуры используются формальные параметры настройки : тип Data, обьект N, функция Мах .