Begin
Function
Procedure
Var
Type
Function
Procedure
Var
Interfaсe
Структура Unit
Структура модуля имеет вид:
ЗАГОЛОВОК МОДУЛЯ
Unit < имя модуля >;
ИНТЕРФЕЙСНАЯ ЧАСТЬ
Uses < список используемых модулей >
Type { открытые объявления переменных, которые будут доступны в основной программе}
РЕАЛИЗАЦИОННАЯ ЧАСТЬ или ИСПОЛНЯЕМАЯ ЧАСТЬ
Implementation {выполнение}
Uses < список используемых модулей >
{ собственные объявления, доступны только внутри данной реализации подпрограмм}
{ процедуры и функции }
ИНИЦИИРУЮЩАЯ ЧАСТЬ
… {Основной блок модуля}
End.
Имя модуля записывается за ключевым словом UNIT (единица). При выборе имени модуля необходимо учитывать одну особенность: имя модуля должно совпадать с именем файла, в котором он хранится.
Далее записывается раздел интерфейсной части (за ключевым словом Interfaсe). Эта часть модуля является доступной (“видимой”) для любой программы, использующей этот модуль. То есть объявленные в этом разделе константы, типы данных, переменные, процедуры и функции, могут использоваться в любой другой программе. В свою очередь, в разделе интерфейса могут указываться другие используемые модули (их список следует за ключевым словом Uses). При этом все объекты, объявленные в интерфейсах этих модулей могут быть использованы в любом объявлении в интерфейсе данного модуля.
|
|
Примечание. Для “видимых” процедур и функций в интерфейсном разделе приводится только их заголовки. Полностью эти процедуры и функции записываются в разделе реализации.
Следующим структуре модуля описывается раздел реализации (за ключевым словом Implementation). В этом разделе могут использоваться все объекты, описанные в разделе интерфейса. Вместе с тем, здесь могут объявляться свои константы, типы данных, переменные процедуры и функции. Они могут быть использованы только в данном разделе реализации и в этом смысле являются “не видимыми”. Это же ограничение относится и к интерфейсам других модулей, список которых следует за ключевым словом Uses (в отличие от аналогичного списка в разделе интерфейса данного модуля). Таким образом, различие всех описаний содержащихся в разделе интерфейса и реализации заключается в сфере их использования (первые доступны извне, вторые - только внутренние).
Раздел реализации модуля начинается ключевым словом Implementation и заканчивается end. Но если между ними появляется ключевое слово begin, то получившийся составной оператор begin…end становится разделом инициализации модуля. Раздел инициализации обычно используется для открытия файлов и для формирования значений структур данных и переменных.
|
|
При выполнении программы, использующей модули, их разделы инициализации вызываются раньше загрузки самой программы. Для того чтобы использовать модули в программах их имена следует указать в разделе подключения модулей Uses.
Например, вы разработали программу, которая наряду со стандартным модулей Crt использует ваш разработанный собственный модуль с именем Modul. Тогда, в программе следует указать список используемых модулей в следующем виде:
Program Pr;
Uses Crt, Modul;
...
Модули транслируются отдельно. В отличие от основных программ результатом трансляции которых будут файлы с расширением EXE модули получают расширение TPU. Полученные в результате трансляции TPU - файлы можно подсоединить к стандартному файлу TURBO.TPL с помощью утилиты TPUMOVER.EXE. Если этого не делать, то при трансляции самой программы все используемые модули (TPU - файлы) присоединяться к ней автоматически. Если в каком-либо из используемых модулей были внесены изменения, то при трансляции программы, все модифицируемые модули также будут предварительно перетранслированы (эту функцию реализует интегрированная среда).
Разработку собственного модуля рассмотрим на следующем примере:
Пусть дано задание: разработать личную библиотеку, включив в нее процедуры:
· ввода элементов числовой матрицы размером N*N;
· транспонирования матрицы;
· вывода результирующей матрицы.
В основной программе ввести размер матрицы N.
Начнем разработку модуля, который будет носить название Matrix. Программно это будет выглядеть так:
Unit Matrix;
{Зарезервированное слово Unit служит для указания имени библиотеки. Это имя должно совпадать с именем PAS-файла библиотеки (т.е библиотека Matrix должна находиться с файле Matrix.Pas), а иначе компилятор даст ошибку при попытке использования такой библиотеки}