Инициализирующая часть модуля.

Исполняемая часть модуля.

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

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

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

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

Если исполняемая часть модуля пустая, то должно быть записано только предложение IMPLEMENTATION.

 

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

Операторы инициализирующей части:

1) Инициализирующие какие-то переменные (например, заполняются стартовые значения библиотечных переменных)

2) Устанавливающие связь файловых переменных с теми или иными файлами (с помощью ASSIGN)

3) Инициализирующие такие текстовые файлы (с помощью процедур RESET или WRITE)

4) Устанавливающие связи с другими ЭВМ по коммуникационным каналам

5) Осуществляющие другие вспомогательные действия

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

Если инициализирующая часть модулю не нужна, то она может отсутствовать вместе с BEGIN и END.

Итак, в самом общем случае, в Паскаль программе модульной структуры модуль имеет структуру:

 

UNIT <имя модуля>;

INTERFACE {начало интерфейсной части}

USES <имена подключаемых (при объявлениях) модулей>;

CONST <описание библиотечных констант>;

TYPE <описание библиотечных типов>;

VAR <описание библиотечных переменных>;

<заголовки библиотечных процедур и функций>;

IMPLEMENTATION {начало раздела реализаций}

USES <имена подключаемых (при реализации) модулей>;

LABEL <описание меток раздела инициализации>;

CONST <описание локальных констант>;

TYPE <описание локальных типов>;

VAR <описание локальных переменных>;

<описания (полные) локальных подпрограмм>;

<описания библиотечных подпрограмм с сокращенными заголовками>;

BEGIN {начало раздела инициализации}

<исполняемые операторы>;

END. {конец раздела инициализаций модуля и граница всего модуля}

 

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

UNIT Pystoy;

INTERFACE

IMPLEMENTATION

END.