МОДУЛИМодуль (UNIT) в Турбо Паскале – это особым образом
оформленная библиотека подпрограмм. Модуль в отличие от программы не может быть
запущен на выполнение самостоятельно, он может только участвовать в построении
программ и других модулей. Модули позволяют создавать личные библиотеки
процедур и функций и строить программы практически любого размера. Модуль
в Турбо Паскале представляет собой отдельно хранимую и независимо компилируемую
программную единицу. В общем случае модуль – это совокупность
программных ресурсов, предназначенных для использования другими программами. Под
программными ресурсами понимаются любые элементы языка Турбо Паскаль: константы,
типы, переменные, подпрограммы. Модуль сам по себе не является выполняемой программой,
его элементы используются другими программными единицами. Все программные
элементы модуля можно разбить на две части: – программные элементы, предназначенные
для использования другими программами или модулями, такие элементы называют видимыми
вне модуля; – программные элементы, необходимые только для работы самого модуля,
их называют невидимыми или скрытыми. В соответствии с этим модуль, кроме
заголовка, содержит две основные части, называемые интерфейсом и реализацией. В
общем случае модуль имеет следующую структуру: unit
<имя модуля>; {заголовок модуля} interface {
описание видимых программных элементов модуля } { описание скрытых
программных элементов модуля } begin { операторы инициализации
элементов модуля } end. В частном случае модуль может не содержать
части реализации и части инициализации, тогда структура модуля будет такой: unit
<имя модуля>; {заголовок модуля} interface {
описание видимых программных элементов модуля } implementation
end. Использование в модулях процедур и функций имеет свои особенности.
Заголовок подпрограммы содержит все сведения, необходимые для ее вызова: имя,
перечень и тип параметров, тип результата для функций, эта информация должна быть
доступна для других программ и модулей. С другой стороны, текст подпрограммы,
реализующий ее алгоритм, другими программами и модулями не может быть использован.
Поэтому заголовок процедур и функций помещают в интерфейсную часть модуля, а текст
– в часть реализации. Интерфейсная часть модуля содержит только видимые
(доступные для других программ и модулей) заголовки процедур и функций (без служебного
слова forward). Полный текст процедуры или функции помещают в часть реализации,
причем заголовок может не содержать список формальных параметров. Исходный
текст модуля должен быть откомпилирован с помощью директивы Make подменю Compile
и записан на диск. Результатом компиляции модуля является файл с расширением TPU
(Turbo Pascal Unit). Основное имя модуля берется из заголовка модуля. Для
подключения модуля к программе необходимо указать его имя в разделе описания модулей,
например: uses CRT, Graph; В том случае, если имена
переменных в интерфейсной части модуля и в программе, использующей этот модуль,
совпадают, обращение будет происходить к переменной, описанной в программе. Для
обращения к переменной, описанной в модуле, необходимо применить составное имя,
состоящее из имени модуля и имени переменной, разделенных точкой. Например,
пусть имеется модуль, в котором описана переменная К: unit
M; interface var K: Integer; implementation ..................
end. Пусть программа, использующая этот модуль, также содержит переменную
К: Program P; uses M; var K: Char; begin
.................. end. Для того, чтобы в программе P иметь доступ
к переменной K из модуля M, необходимо задать составное имя M.K. Использование
составных имен применяется не только к именам переменных, а ко всем именам, описанным
в интерфейсной части модуля. Рекурсивное использование модулей запрещено. Если
в модуле имеется раздел инициализации, то операторы из этого раздела будут выполнены
перед началом выполнения программы, в которой используется этот модуль.
|