Справочное руководство по языку Ада-83


Компилируемые модули библиотечные модули - часть 5


Но эти пакеты не надо упоминать в спецификаторе совместности процедуры QUADRATIC-EQUATION, так как в ее теле элементарные операции не вызываются непосредственно.

Ссылки:

библиотечный модуль 10.1, видимость 8.3, вторичный модуль 10.1, главная программа 10.1, должно 1.6, допустимо 1.6, имя 4.1, компилируемый модуль 10.1, настраиваемое тело 12.2, настраиваемый модуль 12.1, непосредственная видимость 8.3, описание пакета 7.1, описание подпрограммы 6.1, пакет 7, пакет STANDARD 9.6, пред выполнение 3.9, программный модуль 6, простое имя 4.1, процедура 6.1, скрытие 8.3, спецификатор использования 8.4, субмодуль 10.2, тело пакета 7.1, тело подпрограммы 6.3, тип 3.3, экземпляр 12.3.

10.1.2. ПРИМЕРЫ КОМПИЛИРУЕМЫХ МОДУЛЕЙ

Компилируемый модуль может быть расчленен на несколько компилируемых модулей. Например, рассмотрим следующую программу:

procedure PROCESSOR is

SMALL : constant := 20; TOTAL : INTEGER := 0;

package STOCK is

LIMIT : constant := 1000; TABLE : array (1 .. LIMIT) of INTEGER; procedure RESTART; end STOCK;

package body STOCK is

procedure RESTART is

begin

for N in 1 .. LIMIT loop

TABLE(N) := N; end loop;

end;

begin

RESTART; end STOCK;

procedure UPDATE(X : INTEGER) is

use STOCK; begin

... TABLE(X) := TABLE(X) + SMALL; end UPDATE;

begin

STOCK.RESTART; -- переинициализация TABLE end PROCESSOR;

Приведенные ниже три компилируемых модуля определяют программу с результатом, эквивалентным результату предыдущего примера (пунктирные линии между модулями напоминают, что они не обязаны составлять единый текст).

Пример 2. Несколько компилируемых модулей.

package STOCK is

LIMIT : constant := 1000; TABLE : array (1 .. LIMIT) of INTEGER; procedure RESTART; end STOCK;

package body STOCK is

procedure RESTART is

begin

for N in 1 .. LIMIT loop

TABLE(N) := N; end loop;

end;

begin

RESTART; end STOCK;

with STOCK; procedure PROCESSOR is

SMALL : constant := 20; TOTAL : INTEGER := 0;

procedure UPDATEIX : INTEGER) is

use STOCK; begin

TABLE(X) := TABLE(X) + SMALL; end UPDATE;




Начало  Назад  Вперед



Книжный магазин