Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на Pascal / Delphi / Лекции по Turbo Pascal [22].pdf
Скачиваний:
82
Добавлен:
02.05.2014
Размер:
536.84 Кб
Скачать
IMPLEMENTAT ION
USES
LABEL
INTERFACE USES LABEL
CONST
TYPE
VAR

Одесский колледж компьютерных технологий “СЕРВЕР”

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

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

Сам по себе модуль можно разделить на несколько разделов: заголовок, интерфейсная часть, реализационная часть, инициализационная часть.

ЗАГОЛОВОК МОДУЛЯ

UNIT Имя модуля; ИНТЕРФЕЙСНАЯ ЧАСТЬ

Начало раздела объявлений; Используемые при объявлении модули; Подраздел объявления доступных глобальных меток; Подраздел объявления доступных глобальных констант;

Подраздел объявления доступных глобальных типов; Подраздел объявления доступных глобальных переменных;

PROCEDURE Заголовки доступных процедур; FUNCTION Заголовки доступных функций; ИСПОЛНЯЕМАЯ ЧАСТЬ

Начало исполняемой части;

Используемые при реализации модули; Подраздел объявления скрытых глобальных меток;

30

Одесский колледж компьютерных технологий “СЕРВЕР”

 

 

CONST

Подраздел объявления скрытых глобальных

TYPE

констант;

Подраздел объявления скрытых глобальных

VAR

типов;

Подраздел объявления скрытых глобальных

PROCEDURE

переменных;

Тела доступных и скрытых процедур;

FUNCTION

Тела доступных и скрытых функций;

ИНИЦИАЛИЗАЦИОННАЯ ЧАСТЬ

BEGIN

Основной блок модуля;

END.

 

Заголовок модуля мало, чем отличается от заголовка программы. В модуле вместо зарезервированного слова PROGRAM используется слово UNIT. При выборе имени модуля следует заботиться, чтобы имя не совпадало с именами объектов (процедур, функций и т.д.) внутри программы и совпадало с именем файла, в котором он хранится. Имя модуля не может состоять более, чем из восьми символов. Если, например, имеем заголовок

Unit Global;

то исходный текст соответствующего модуля должен размещаться в дисковом файле Global.pas.

Новой по отношению к программе является в модуле интерфейсная часть. В этой части описываются все константы, типы данных и переменных, процедуры и функции, доступные в этом модуле для использования внешними программами. Интерфейсная часть модуля несёт всю информацию, необходимую для использования процедур и функций, определённых в модуле. Любая другая информация о модуле для обычного его использования не нужна.

31

Одесский колледж компьютерных технологий “СЕРВЕР”

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

Следом за оператором USES в интерфейсной части описываются доступные извне и необходимые для описанных процедур и функций определения типов данных, констант и переменных.

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

Пример интерфейсной части:

Unit Cmplx;

Interface Type

Complex = record

re, im : real end;

Procedure AddC (x, y : complex; var z : complex); Procedure MulC (x, y : complex; var z : complex);

Если теперь в основной программе написать предложе-

ние

Uses Cmplx;

то в программе станут доступными тип Complex и две другие процедуры – AddC и MulC из модуля Cmplx.

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

32

Одесский колледж компьютерных технологий “СЕРВЕР”

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

Например:

Implementation

Procedure AddC; begin

z.re := x.re + y.re; z.im := x.im + y.im; end;

end.

Инициализационная часть представляет собой основ-

ной блок модуля. Приведённые в ней операторы выполняются первыми, то есть они выполняются перед операторами основного блока главной программы, в которую включён модуль.

Unit FileText;

Interface

Procedure Print (s : string);

Implementation var

R : text; const

Name = 'output.txt';

Procedure Print; begin

WriteLn(f, s) end;

{Начало инициализационной части} begin

assign((f, name); rewrite (f);

{Конец инициализационной части} end.

33

Одесский колледж компьютерных технологий “СЕРВЕР”

Всреде Turbo Pascal имеются средства, управляющие способом компиляции модулей и облегчающие разработку крупных программных проектов. В частности, определены три режима компиляции: COMPILE, MAKE и BUILD. Режимы отличаются только способом связи компилируемого модуля или основной программы с другими модулями, объявленными в предложении USES.

При компиляции модуля или основной программы в режиме COMPILE все упоминающиеся в предложении USES модули должны быть предварительно откомпилированы и результаты компиляции помещены в одноимённые файлы с расширением TPU. Файл с расширением TPU создаётся автоматически в результате компиляции модуля.

Врежиме MAKE компилятор проверяет наличие TPU – файлов для каждого объявленного модуля. Если какой-либо из файлов не обнаружен, система пытается отыскать одноимённый файл с расширением PAS, то есть файл с исходным текстом модуля, и, если искомый файл найден, приступает к его компиляции.

Врежиме BUILD существующие TPU – файлы игнорируются, и система пытается отыскать (и компилировать) соответствующий PAS-файл для каждого объявленного в предложении USES модуля.

34