Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование - 10 - Модули.doc
Скачиваний:
10
Добавлен:
09.03.2016
Размер:
126.98 Кб
Скачать

Var . . . ;

Procedure имя ; {тело процедуры}

{ локальные описания }

Begin

. . .

End ;

. . .

Function имя ; {тело функции}

{ локальные описания }

Begin

. . .

End ;

. . .

BEGIN {инициирующая часть }

. . . { код инициализации }

END.

Имя модуляв заголовке служит для связи модуля с основной программой и другими модулями.

Первая секция (секция интерфейса) начинается вслед за заголовком модуля зарезервированным словомINTERFACEи заканчивается перед зарезервированным словомIMPLEMENTATION. Эта секция «видима» всеми программами или другими модулями, в которых данный модуль используется, а также в других секциях данного модуля. Здесь содержатся описания констант, типов, переменных, а также заголовки процедур и функций, которые доступны использующей этот модуль программе или другому модулю, как если бы они были определены в них самих.Действительные телапроцедур и функций, заголовки которых находятся в секции интерфейса (т.е. сами реализации процедур и функций), находятся всекцииреализации. Модуль может использовать другие модули. Тогда они присоединяются в предложенииUsesсразу после зарезервированного словаINTERFACE. Если модуль, указанный вUses, использует другие модули, они тоже должны быть указаны вUses, причем раньше.

Секция реализацииначинается зарезервированным словомIMPLEMENTATION. Это «частная» («приватная») часть модуля. Всё, что описано в секции интерфейса, является «видимым» (доступным) в секции реализации. Кроме того, в секции реализации могут быть свои дополнительные описания, которые не являются «видимыми» для программ, использующих этот модуль. Однако эти «спрятанные» описания могут использоваться «видимыми» процедурами и функциями (теми, чьи заголовки указаны в секции интерфейса).Обычные паскалевскиепроцедуры и функции, заявленные в секции интерфейса, должны быть описаны в секции реализации следующим образом. Заголовок подпрограммы должен быть или идентичным заголовку в секции интерфейса, или иметь более краткую форму (толькоProcedure/ Functionимя ;). Затем подпрограмма может содержать свои локальные описания (метки, константы, типы, переменные, вложенные процедуры и функции), которые используются только данной подпрограммой. Затем следует основное тело (блок операторов) самой подпрограммы.

Пример 10.1

Unit IntLib ;

Interface

Procedure Iswap ( var i, j : Integer ) ;

Function Imax ( i, j : Integer ) : Integer ;

Implementation

Procedure Iswap ;

Var

TEMP : Integer ;

Begin

TEMP := i ;

i := j ;

j := TEMP

End ;

Function Imax ( i, j : Integer ) : Integer ;

Begin

If i > j

then Imax := i

else Imax := j

End

End.

Program IntTest ;

Uses

IntLib ;

Var

A, B : Integer ;

Begin

Write ( Введите A и B: ) ;

ReadLn ( A, B ) ;

Iswap ( A, B ) ;

WriteLn ( A=, A, B= , B ) ;

WriteLn ( Макс. Значение =’, Imax ( A, B ) )

End.

Кроме того, секция реализации может иметь подпрограммы, локальные для секции реализации (они используются «видимыми» подпрограммами). Эти локальные подпрограммы должны иметь полный (несокращенный) заголовок.

Обычно вся секция реализации заключается между словами IMPLEMENTATIONиEND.Но если передENDпоместитьBEGINи операторы, то появитсясекция инициализации. Здесь инициализируются структуры данных (переменных), которые использует программный модуль, или которые он делает доступными программе, использующей данный модуль. Эту секцию можно использовать, например, для открытия файлов, которые программа будет использовать позже (например, стандартный модульPrinterинициализирует в секции инициализации текстовый файлLst, который затем можно использовать в процедурах вывода для вывода на принтер). При выполнении программы, использующей некоторый модуль, секция инициализации этого модуля вызывается перед запуском основного тела программы (если таких модулей несколько, то секции инициализации модулей вызываются в порядке, указанном в предложенииUses).