Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по ОАП.doc
Скачиваний:
3
Добавлен:
01.05.2025
Размер:
1.1 Mб
Скачать

Тема № 13: Модули.

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

UNIT <имя>;

INTERFACE

<интерфейсная часть>

IMPLEMENTATION

<исполняемая часть>

BEGIN

<инициирующая часть>

END.

Имя заголовка модуля должно совпадать с именем дискового файла, в который помещается исходный текст модуля. Т.е. если заголовок UNIT INFORM, то текст модуля должен находиться в файле INFORM.PAS. Имя модуля связывает его с другими модулями и с основной программой при помощи предложения USES <список модулей>.

Например: USES CRT, GRAPH, INFORM;

Предложение USES в модулях находится либо сразу за словом INTERFACE, либо за словом INMPLEMENTATION, либо и там и там.

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

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

Инициирующая часть завершает модуль. Она может отсутствовать вместе с начинающим ее словом BEGIN или быть пустой. Здесь размещаются операторы, которые обычно используются для подготовки работы программы.

13.1.Компиляция модулей.

Существует три режима компиляции модулей: COMPILE, MAKE, BUILD.

При компиляции модуля или программы в режиме COMPILE все перечисленные в предложении USES модули должны быть предварительно откомпилированы, и результаты компиляции помещены в одноименные файлы с расширением TPU (Turbo Pascal Unit).

В режиме MAKE компилятор проверяет наличие TPU файлов для каждого объявленного модуля. Если какой-либо из файлов не обнаружен, то система пытается отыскать одноименный файл с расширением PAS и откомпилировать его. Также компилируются те файлы, в программном модуле которых были произведены какие-либо изменения с момента последней его компиляции.

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

Подключение модулей к основной программе и их возможная компиляция осуществляются в порядке их объявления в предложении USES. При переходе к очередному модулю система предварительно отыскивает все модули, на которые он ссылается. Ссылки модулей друг на друга могут образовывать сложную древовидную структуру. Однако запрещается явное или косвенное обращение модуля к самому себе. Т.е. следующие объявления будут неправильными:

UNIT A; UNIT B;

Interface Interface

USES B; USES A;

…….. ……….

End. End.

Обойти это ограничение можно следующим образом:

UNIT A; UNIT B;

Interface Interface

…….. ……….

Implementation Implementation

USES B; USES A;