|
Интерфейсная ("общедоступная") часть
Implementation
Исполняемая часть
Begin
Инициализирующая часть
End.
Таким образом, модуль состоит из обязательного заголовка и трёх частей. Любая из частей может отсутствовать (при отсутствии инициализирующей части желательно опустить и ключевое слово begin). Поэтому самый короткий модуль выглядит так:
unit Имя_модуля;
Interface
Implementation
End.
Имя модуля в заголовке должно совпадать с базовым именем файла, содержащим исходный текст модуля – это позволяет компоновщику связывать модули с программой и с другими модулями. Длина имени не должна превышать 8 символов.
Интерфейсная ("общедоступная") часть может содержать все разделы описаний, аналогичные таким же разделам главной программы, за исключением раздела label. Вместо подпрограмм в этой части указываются только их заголовки. Полные определения этих подпрограмм размещаются в следующей, исполняемой части. Подпрограммы автоматически компилируются в дальней модели памяти. Область видимости объектов, описанных в интерфейсной части, простирается как на весь модуль, так и на другие модули и главную программу, к которым данный модуль подключается. То есть эти объекты – глобальны в модуле и за его пределами.
Исполняемая часть может содержать все разделы описаний, аналогичные таким же разделам главной программы. Кроме этого, она содержит полные определения подпрограмм, заголовки которых объявлены в интерфейсной части. За исключением этих последних ("интерфейсных") подпрограмм, для всех остальных объектов исполняемой части область видимости простирается только на данный модуль, а за его пределами они не "видны".
Инициализирующая часть может содержать любые инструкции языка Турбо Паскаль. Инструкции этой части выполняются до начала работы главной программы. Обычно указанное свойство используется для подготовки работы главной программы: инициализации глобальных переменных, открытия файлов, установки связи с другими компьютерами по коммуникационным каналам и т. п.
Имеются три вида компиляции многомодульной программы. Все они задаются в меню Compile интегрированной среды: Compile (Alt+F9) – компиляция программы или модуля в текущем окне редактора; Make (F9) – выборочно перекомпилируются все модули данного проекта (комплекса), в текст которых внесены изменения; Build – перекомпилируются все модули данного проекта, независимо от того вносились в них изменения или нет.
Подключение модулей происходит в порядке их перечисления в разделе uses. При переходе к очередному модулю предварительно отыскиваются все модули, на которые он ссылается. При выполнении программы в этом же порядке срабатывают инициализирующие части модулей. Ссылки модулей друг на друга часто образуют древовидную структуру, корнем которой является главная программа. Явные или косвенные ссылки модуля на себя запрещаются. Например, недопустимы следующие объявления:
unitA; interface usesB; implementation end. | unitB; interface usesA; implementation end. |
Это ограничение можно обойти, если "спрятать" раздел uses в исполняемую часть модуля:
unitA; interface implementation usesB; end. | unitB; interface implementation usesA; end. |
Дело в том, что в Турбо Паскале разрешаются ссылки на частично откомпилированные модули; то есть компиляция проходит в два этапа: сначала компилируется интерфейсная часть, а затем – всё остальное, после слова implementation.
Некоторые стандартные модули Турбо Паскаля входят в состав библиотеки turbo.tpl (System, Dos, Crt, Printer, Overlay), а другие – хранятся в отдельных.tpu файлах (Graph, Strings и т. д.). При этом модуль System (содержит подпрограммы ввода/вывода, обработки строк, математические и другие функции) всегда подключается автоматически, а остальные, при необходимости, – указываются в разделе uses
Дата добавления: 2015-07-15; просмотров: 132 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Лекция 11. Подпрограммы-функции. | | | Лекция 13. Ссылочный тип. |