8. Модули
57
Все экспортируемые модулями идентификаторы автоматически становятся
видимыми как глобальные. При совпадении некоторого идентификатора с другим,
описанным в главной программе, доступным будет второй. Доступ к первому
становится возможным только использованием квалифицированного идентификатора,
т.е. имя модуля и точка '.' должны предшествовать экспортированному
идентификатору. Например, MyUnit.MyProc или MyUnit.MyVar.
Все стандартные идентификаторы в UniPascal-е декларированы в модуле STAND-
ARD. Все они могуть быть использованы при помощи квалифицированных
идентификаторов. Например, STANDARD.NEW, STANDARD.DISPOSE и т.д.
Если главная программа использует два модуля и в их разделах описаний описан
один и тот же идентификатор, который не описан в главной программе, и в тексте
главной программы компилятор встретит его имя, то он выдаст сообщение об ошибке,
требуя у программиста определить модуль, которому принадлежит идентификатор.
Приведенный ниже пример поясняет существенные свойства модулей. Модуль
stack экспортирует процедуру и функцию, которые, соответственно, вталкивают в стек
или выталкивают из стека данные. Доступ к стеку можно осуществлять только через
эти процедуры и функции, чтобы гарантировать его правильное функционирование.
program UseStack(message);
uses Stack;
var i: integer;
begin
writeln('Начало программы.');
writeln('Вталкивание целых чисел в стек...');
i:= 0;
while not full do begin
writeln('Вталкивание ', i, ' в стек.');
push(i); inc(i);
end { while };
writeln('Выталкивание чисел из стека...');
while not empty do begin
writeln(' ытолкнули ', i, ' из стека.');
end { while };
writeln('Конец программы.');
end { UseStack }.
В примере программе не нужен стек большого размера. Однако, если напишем
программу, для которой необходимо увеличить его размер, достаточно будет на месте
константы в реализационную часть поставить новую. При том не надо
перекомпилировать программу, использующую стек. Она не изменится, даже если
реализация стека будет использовать внешнюю память.
<<  <  GO  >  >>

Вернуться к началу сайта