Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Мет_Паскаль_7.doc
Скачиваний:
3
Добавлен:
09.11.2019
Размер:
166 Кб
Скачать
☆

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

Операторы секции инициализации (initialization) выполняются единственный раз в момент запуска программы. Например, можно установить связь с каким-либо файлом, необходимым для работы модуля, с помощью процедуры Assign.

Секция начинается словом begin, после которой идут исполняемые операторы, заканчивается словом end. (с точкой).

В примере 1 приведены три модуля. Каждый модуль хранится в отдельном файле с именем, совпадающем с именем модуля. Первый модуль (MTypes.pas) содержит описание новых типов и используемых констант, второй (AddFuncs.pas) – процедуру, меняющую значения двух переменных целого типа, третий (Funcs.pas) - процедуру, меняющую максимальный и минимальный элемент массива местами с использованием процедуры, описанной во втором модуле.

Пример 1:

unit MTypes; {первый модуль}

interface {интерфейсная часть}

const

NMax = 5;

type

Mass=array [1..Nmax] of Integer;

implementation {исполнительная часть – в данном случае пустая}

end.

unit AddFuncs; {второй модуль}

interface {интерфейсная часть}

procedure Swap(var A, B : Integer);

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

procedure Swap;

var

X : Integer;

begin

X := A;

A := B;

B := X;

end;

end.

unit Funcs; {третий модуль}

interface {интерфейсная часть}

uses MTypes;

var

HelloStr : String;

procedure SwapMinMax(var A : Mass);

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

uses AddFuncs;

procedure SwapMinMax;

var

I, i_max, i_min : Integer;

begin

i_max := 1;

i_min := 1;

for I := 2 to Nmax do begin {поиск максимального и минимального элемента в массиве}

if A[I] > A[i_max] then i_max := I;

if A[I] < A[i_min] then i_min := I;

end;

if i_max <> i_min then

Swap(A[i_max], A[i_min]); {замена элементов с использованием процедуры из модуля AddFuncs}

end;

initialization {выполняется в момент запуска программы}

HelloStr := 'Привет МИР!'; {присвоение значения строковой переменной}

end.

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

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

Пример 2:

program Example;

uses MTypes, Funcs;

const Arr : Mass=(0,-9,1,7,2);

var

i : Integer;

NMax : Integer;

begin

writeln('В переменной HelloStr хранится: ', HelloStr);

NMax := 25;

SwapMinMax(Arr);

for I := 1 to MTypes.NMax do

write(Arr[i],' ');

writeln;

readln; {задержка для просмотра}

end.

В примере 2 показано использование процедур, описанных в модулях. Сначала выводится значение переменной HelloStr, которое было присвоено ей в момент запуска программы в разделе инициализации модуля Funcs. Затем с помощью процедуры SwapMinMax, описанной в модуле Funcs, меняются местами максимальный и минимальный элементы массива. Процедура SwapMinMax в свою очередь использует процедуру Swap, описанную в модуле AddFuncs. Основная программа и модули Funcs, AddFuncs используют тип данных Arr и константу NMax, описанные в модуле MTypes.

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