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

Модуль компилируется так же, как и обычные программы, но так как модуль сам по себе не выполняем, то в результате получается специальный файл с расширением TPU (Turbo Pascal Unit).

Для того чтобы получить доступ к интерфейсным объектам модуля, необходимо указать в программе имя нужного TPU-файла в разделе спецификаций используемых модулей, идущего сразу за заголовком:

USES <список модулей>;

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

Program Prim;

Uses Complex;

Var R,X,Y,Z: Complex;

Begin

Read (X.RE,X.IM,Y.RE,Y.IM,Z.RE,Z.IM);

R:= CADD(CMUL(X,Y),CADD(CMUL(X,Z),CMUL(Y,Z)));

Writeln(R.RE,’+’,R.IM,’i’)

end.

Правила использования.

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

Например, в программе есть спецификация:

Uses A,B;

то вложенность блоков будет следующей:

То есть имена выполняемой программы «экранируют» одинаковые имена модулей А и В. Получить доступ к одноименным переменным модуля можно, используя составное имя.

Пусть есть модуль:

Unit A;

Interface

Var X:Real;

Procedure Pr(Y:integer);

implementation

......

end.

Пусть программа, использующая этот модуль, так же содержит переменную Х:

Program P;

Uses A;

Var X:Integer;

Begin

......

X:=8; { определение внутренней целой переменной }

A.X:=2.5; { переменная модуля }

Pr(X); { X - фактический целый параметр-значение }

......

end.

2. Разрешены косвенные использования модулей. Причем в спецификации использования указываются только модули, непосредственно используемые в программе. Пример косвенного использования модуля А в программе Р:

Unit A; Unit B; Program P;

Interfase Interfase Uses B;

...... Uses A;.....

end....... end.

end.

3. Схема взаимного использования модулей может иметь структуру любой сложности, но недопустимо явное или косвенное обращение модуля к самому себе.

Unit A; Unit B;

Interfase Interfase

Uses B; Uses A; <- недопустимо

............

4. При наличии раздела инициализации операторы модуля выполняются первыми в порядке описания:

Program P;

Uses A,B;

......

Выполняются:

1) операторы модуля А;

2) операторы модуля В;

3) операторы программы Р.

5. Рекомендуется, чтобы имя модуля совпадало с именем файла на внешнем носителе информации, например:

Unit Module1;

......

Текст программы необходимо поместить в файл Module1.pas, а оттранслированный модуль будет находиться в файле Module1.tpu. При необходимости хранить код модуля в файле с другим именем используют директиву компилятора $U. Она имеет параметр дискового имени файла с данным модулем и должна находится непосредственно перед именем модуля в спецификации пользователя. Например, запись

Uses {$U MY} MyUnit;

приведет к тому, что компилятор будет искать код модуля MyUnit в файле MY.TPU.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: