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

Модули. Определение интерфейсной части. Особенности текста реализации.

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

Модули позволяют создавать личные библиотеки процедур и функций и строить программы практически любого размера.

Модуль в Турбо Паскале представляет собой отдельно хранимую и независимо компилируемую программную единицу.

В общем случае модуль – это совокупность программных ресурсов, предназначенных для использования другими программами. Под программными ресурсами понимаются любые элементы языка Турбо Паскаль: константы, типы, переменные, подпрограммы. Модуль сам по себе не является выполняемой программой, его элементы используются другими программными единицами.

Все программные элементы модуля можно разбить на две части:

– программные элементы, предназначенные для использования другими программами или модулями, такие элементы называют видимыми вне модуля;

– программные элементы, необходимые только для работы самого модуля, их называют невидимыми или скрытыми.

В соответствии с этим модуль, кроме заголовка, содержит две основные части, называемые интерфейсом и реализацией.

В общем случае модуль имеет следующую структуру:

unit <имя модуля>; {заголовок модуля}

interface

{ Интерфейсная часть}

Implementation

{Исполняемая часть}

begin

{ Инициализирующая часть }

end.

Интерфейсная часть - "общедоступная" часть в модуле - начинается зарезервированным словом interface, следует сразу после заголовка модуля и заканчивается перед зарезервированным словом implementation. Интерфейс определяет, что является "видимым" (доступным) для любой программы (или модуля), использующей данный модуль.

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

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

Секция реализации - "приватная" часть - начинается зарезервированным словом implementation. Все, что описано в секции интерфейса, является видимым в секции реализации: константы, типы, переменные, процедуры и функции. Кроме того, в секции реализации могут быть свои дополнительные описания, которые не являются видимыми для программ, использующих этот модуль. Программа не знает об их существовании и не может ссылаться на них или обращаться к ним. Однако, эти скрытые элементы могут использоваться (и, как правило, используются) "видимыми" процедурами и функциями, то есть теми подпрограммами, чьи заголовки указаны в секции интерфейса.

Оператор uses может содержаться в секции реализации (implementation) и должен непосредственно следовать за ключевым словом implementation.

Обычные процедуры и функции, описанные в интерфейсной секции, то есть те из них, которые не являются подставляемыми (inline), должны повторно указываются в секции реализации. Заголовок procedure/function должен быть или идентичным тому, который указан в секции интерфейса, или иметь более краткую форму. В случае краткой формы наберите ключевое слово (procedure или function), а за ним укажите имя подпрограммы (идентификатор). За- тем подпрограмма должна содержать все свои локальные описания (метки, константы, типы, переменные и вложенные процедуры и функции), за которыми должно находиться основное тело самой подпрограммы.