Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции 13--18.doc
Скачиваний:
25
Добавлен:
24.04.2019
Размер:
558.08 Кб
Скачать

Исполнительная часть модуля

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

Исполнительная часть модуля начинается словом implementation. Затем после слова uses указываются имена модулей, которые используются подпрограммами данной исполнительной части (этот раздел необязателен). Если какой-то модуль уже указан в интерфейсе модуля, то в исполнительной части его повторять не следует. Далее могут быть: раздел объявления меток, раздел объявления локальных констант, раздел объявления локальных типов, раздел объявления локальных переменных. Затем идут описания подпрограмм модуля. При описании подпрограмм допустимо использовать сокращенные заголовки, не указывая при этом список формальных параметров.

Секция инициализации

В некоторых случаях перед обращением к модулю следует провести его инициализацию (например, установить связь с теми или иными файлами с помощью процедуры Assign, инициализировать какие-то переменные и т. д.). Необходимые действия можно выполнить в секции инициализации модуля. Эта секция начинается словом begin, после которого идут исполняемые операторы, а затем помещается слово «end..» (с точкой), например:

begin

Assign (Fl, 'FILE1.DAT')

end.

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

Если инициализация модуля не нужна, то в секции помещается лишь слово end. (с точкой).

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

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

Пример. Программа, меняющая в массиве максимальное и минимальное числа.

program EXAMPLE26; {заголовок программы}

uses Unitl, Unit2; {используемые модули}

var i: Integer;

begin

Change(Arr); {процедура замены в Unitl,

массив Arr - в Unit2}

for i := 1 to N do {N-B Unit2}

WriteLn(Arr(i])

end.

{модули, расположенные в других файлах}

unit Unitl; {модуль с основной подпрограммой}

interface {интерфейс первого модуля}

uses Unit2; {использование модуля с параметрами}

procedure Change (var Arr: Mass); {заголовок процедуры}

implementation {исполнительная часть}

uses UnitS; {использование модуля с вспомогательной

подпрограммой}

procedure Change; {сокращенный заголовок}

var Max, Min, i; Integer;

begin

Max := 1; Min := 1;

for i := 1 to N do {N-в Units}

begin

if Arr[i] > Arr[Max]

then Max := i;

if Arrti] < Arr[Min]

then Min := i

end;

Swap(Arr[Max], Arr[Min]) {замена местами макс.и мин.чисел, процедура в Units}

end

end. {конец Unitl}

unit Unit2; {модуль с параметрами}

interface {интерфейс второго модуля}

const N = 5; {число элементов}

type Mass = array!1..N] of Real; {тип массива}

const Arr: Mass = (0.5, -2.0, 1.0, 3.5, 7.0);

{типизированная константа}

implementation {исполнительная часть}

end. {конец UNIT2}

unit UnitS; {модуль с вспомогательной подпрограммой}

interface {интерфейс третьего модуля}

procedure Swap(var X, Y: Real}

implementation {исполнительная часть}

procedure Swap(var X, Y: Real) {перемещение двух чисел}

var Z: Real;

begin

Z := X; X :- Y; Y := Z

end

end. {конец UNITS}

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