Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
13
Добавлен:
25.04.2015
Размер:
57.86 Кб
Скачать

Компиляция модулей

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

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

USES METOD;

то на диске в каталоге, объявленном опцией UNIT DIRECTORIES уже должен находиться файл METOD. TPU. Файл с расширением TPU (TURBO PASCAL UNIT) создается автоматически в результате компиляции модуля.

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

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

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

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

Доступ к объявленным в модуле объектам

Рассмотрим пример создания модуля реализующего арифметику комплексных чисел.

UNIT Cmplx;

{--------------------------------------------------}

INTERFACE

{--------------------------------------------------}

type complex = record

re, im : real;

end;

PROCEDURE AddC (x, y : complex; var z : complex);

PROCEDURE SubC (x, y : complex; var z : complex);

PROCEDURE MulC (x, y : complex; var z : complex);

PROCEDURE DivC (x, y : complex; var z : complex);

const c : complex = (re : 0.1; im : -1);

{--------------------------------------------------}

IMPLEMENTATION

{--------------------------------------------------}

PROCEDURE AddC;

begin

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

end;

PROCEDURE SUBC;

begin

z. re := x. re - y. re; z. im := x. im - y. im;

end;

PROCEDURE MulC;

begin

z. re := x. re * y. re - x. im * y. im;

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

end;

PROCEDURE DivC;

var zz : real;

begin

zz :=sgr (y. re) + sgr (y. im);

z. re := (x. re * y. re + x. im * y. im ) / zz;

z. im := (x. re * y. im - x. im * y. re) / zz;

end;

END.

Текст модуля помещается в файл CMPLX.PAS, создается TPU-файл после компилирования одноименного PAS-файла. После этого станут доступны процедуры из новой библиотеки. Ниже приводится пример программы, в которой осуществляются четыре арифметические операции под двумя комплексными числами.

USES Cmplx;

VAR

a, b, c : complex;

BEGIN

a. re := 1; a. im := 1;

b. re := 1; b. im := 2;

AddC (a, b, c);

WRITELN (‘Сложение :’, c. re : 5 : 1, c. im : 5 : 1);

SUBC (a, b, c);

WRITELN (‘Вычитание :’, c. re : 5 : 1, c. im : 5 : 1);

MULC (a, b, c);

WRITELN (‘Умножение:’, c. re : 5 : 1, c. im : 5 : 1);

DIVC (a, b, c);

WPITELN (‘Деление:’, c, re : 5 : 1, c. im : 5 : 1);

END.

После объявления USES Cmplx программе стали доступны все объекты, объявленные в интерфейсной части модуля CMPLX. При необходимости можно переопределить любой из этих объектов, как это произошло, например, с объявленной в модуле типизированной константой C.

1осн.[182-189]

Соседние файлы в папке лекции паскаль