Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпоры программирование.doc
Скачиваний:
0
Добавлен:
09.01.2020
Размер:
655.36 Кб
Скачать

12. Структура и особенности использования модулей в языке Паскаль.

Концепция модулей является обобщением и развитием механизма подпрограмм, имеющихся в большинстве ЯП.

Модуль представляет собой соответственным образом оформленный текст, который может транслироваться независимо от основной программы и других модулей. При этом модуль является источником некоторых программных ресурсов, которые могут использоваться в основной программе и других модулях. В качестве таких ресурсов могут выступать константы, типы, переменные, процедуры, функции, объекты.

Основную программу и модули будем называть программными единицами (т.е. это такие элементы исходного текста, которые допускают независимую компиляцию). Каждый модуль транслируется в специальную форму, которая близка к машинному эквиваленту исходной программы, но содержит также дополнительную информацию о ресурсах этого модуля. Для того, чтобы в другой программной единице использовать ресурсы некоторого модуля, его необходимо подключить к этой программной единице.

Любой модуль состоит из 3 частей:

1) интерфейсная часть,

2) раздел реализации,

3) блок инициализации (может отсутствовать).

В интерфейсной части модуля определяются константы, типы, переменные, процедуры и другие ресурсы, которые доступны в других программных единицах.

Раздел реализации содержит описание необходимых констант, переменных, типов, подпрограмм, используемых для описания процедур и функций, указанных в интерфейсной части. Все, что размещает программист в разделе реализации модуля ни при каких условиях не доступно другим программным единицам.

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

Блок инициализации содержит последовательность операторов, которые выполняются при определенных условиях.

Структура модуля:

UNIT <название модуля>;

INTERFACE

uses <список модулей 1>

const…

type…

var…

procedure…

IMPLEMENTATION

uses <список модулей 2>

const…

type…

var…

function…

procedure…

begin

end.

Предложения uses служат для подключения одного или нескольких модулей к данной программной единице, в частности, если в интерфейсной части некоторого модуля при описании некоторых ресурсов используются ресурсы других модулей, то последние должны быть подключены с помощью предложения uses, указанного после слова INTERFACE. В предложении uses через запятую перечисляются имена подключаемых модулей. Аналогично, если в разделе реализации некоторого модуля используются ресурсы других модулей, то имена этих модулей должны быть указаны в предложении uses раздела реализации.

Если блок инициализации отсутствует, то после блока реализации ставится слово end.

Минимальный пустой модуль:

UNIT a;

INTERFACE

IMPLEMENTATION

end.

Особенности использования модулей:

1) Если к некоторой программе подключается несколько модулей, в которых определены одноименные ресурсы, то доступным в этой программной единице является ресурс, определенный в модуле, имя которого указано последним в списке uses, более того, если в данной программной единице определен некоторый ресурс с тем же именем, то доступен именно он. Если необходим доступ к ресурсу модуля, то доступ к нему возможен через уточненное имя: имя_модуля.имя_ресурса.

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

3) Модули могут подключать другие модули, в частности таким образом, что образуется рекурсивная цепочка подключения. Если рекурсия модулей появилась в разделе реализации, то компилятор такую рекурсию разрешает сам. Если же рекурсия появилась в интерфейсной части модуля, то это ошибка и ее необходимо исправить. Для этого формируется третий модуль, в котором помещаются все ресурсы из модуля 1, на которые ссылается модуль 2, и все ресурсы из модуля 2, на которые ссылается модуль 1. И именно это м модуль 3 подключается к модулям 1 и 2.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]