Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции 17.19.doc
Скачиваний:
2
Добавлен:
11.07.2019
Размер:
85.5 Кб
Скачать

Лекции 17-19: Модули и их использование.

1. Концепция модуля.

2. Структура описания модуля.

3. Разработка модулей.

4. Примеры модулей.

5. Использование модулей в программах.

6. Стандартный модуль СRT.

7. Стандартный модуль GRAPH.

1. Концепция модуля.

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

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

Понятие модуля отсутствовало в Паскале и в первоначальных версиях Турбо Паскаля. Оно было введено в связи с потребностями коммерческих приложений Турбо Паскаля. Разработанная для Турбо Паскаля концепция модуля зарекомендовала себя как весьма удачная и плодотворная. Модули представляют удобный инструмент для создания библиотек прикладных программ. Этот инструмент получил также широкие приложения в объектно-ориентированном программировании.

2. Структура описания модуля.

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

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

Interface

< описания компонентов модуля >

[implementation

< реализация тел процедур и функций >]

[begin

< операторы инициализирующей части >]

end.

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

uses < список имён используемых модулей >;

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

Исполняемая часть содержит так называемые тела процедур и функций, заголовки которых описаны в интерфейсной части. Тела имеют обычную форму описаний процедур и функций, либо могут отличаться от таковой только сокращенными заголовками, состоящими лишь из ключевого слова procedure или function и имени процедуры (функции). Исполняемая часть является как бы "невидимой" для пользователя частью модуля, поскольку пользователю модуля нет необходимости знать, как реализованы процедуры или функции, которыми он пользуется. Ему достаточно лишь знать, как их вызывать и какую функцию они выполняют. Исполняемая часть отсутствует, если в модуле не описаны процедуры и/или функции.

Инициализирующая часть завершает описание модуля и является необязательной частью модуля. Если она присутствует, то помещается между скобками begin end , если отсутствует - то остаётся только закрывающая модуль скобка end и последующая точка.

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

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

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