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

При компиляции модуля или основной программы все упоминающиеся в предложении uses модули должны быть предварительно откомпилированы, и результаты компиляции помещены в одноименные файлы с расширением tpu (Turbo Pascal Unit). Например:

uses Global;

Если в программе (модуле) имеется такое предложение, то на диске должен находиться файл global.tpu. Данные файл создается автоматически при компиляции модуля global.

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

unitA; unitВ;

Interface interface

usesВ; usesА;

… …

Implementation implementation

… …

End. end.

 

Это ограничение можно обойти, если «спрятать» предложение uses в исполняемых частях зависимых модулей:

unitA; unitВ;

Interface interface

… …

Implementation implementation

usesВ; usesА;

… …

End. end.

 

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

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

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; {AddC}

 

procedure SubC;

Begin

z.re := x.re – y.re;

z.im := x.im – y.im;

end; {SubC}

 

procedure MulC;

Begin

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

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

end; {MulC}

 

procedure DivC;

Var

zz : real;

Begin

zz := sqr(y.re) + sqr(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; {DivC}

End.

 

Текст данного модуля следует поместить в файл Cmplx.pas. Его можно откомпилировать, создав tpu-файл, после чего в создаваемых программах будут доступны процедуры из новой библиотеки. Например, в программе, приведенной ниже, осуществляются арифметические операции над парой комплексных чисел.

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, ‘i’);

SubC (a, b, c);

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

MulC (a, b, c);

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

DivC (a, b, c);

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

end.

 

После объявления usesCmplx программе стали доступны все объекты, объявленные в интерфейсной части модуля Cmplx. При необходимости можно переопределить любой их этих объектов, как это произошло, например, с объявленной в модуле типизированной константой С. Переопределение объекта означает, что вновь объявленный объект «закрывает» ранее определенный в модуле одноименный объект. Чтобы получить доступ к «закрытому» объекту, нужно воспользоваться составным именем: перед именем объекта поставить имя модуля и точку. Например, следующий оператор выведет на экран содержимое «закрытой» типизированной константы из предыдущего примера.

WriteLn(cmplx.с.re:5:1, cmplx.с.im:5:1, ‘i’);

 

Стандартные модули

Турбо Паскале имеется восемь стандартных модулей, в которых содержатся большое число разнообразных типов, констант, процедур и функций. Этими модулями являются SYSTEM, DOS, CRT, PRINTER, GRAPH, OVERLAY, TURBO3 и GRAPH3. Модули GRAPH, TURBO3 и GRAPH3выделены в отдельные tpu-файлы, а остальные входят в состав библиотечного файла turbo.tpl. Лишь один модуль SYSTEMподключается к любой программе автоматически, остальные становятся доступны только после указания их имен в списке, следующем за словом uses.

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

В качестве примера можно указать некоторые процедуры и функции.

function ReadKey: char;

Читает символ с клавиатуры. Приостанавливает выполнение программы до нажатия на любую клавишу, кроме Shift, Ctrl, Alt, CapsLock, NumLock, ScrollLock.

function WhereX: Byte;

Возвращает горизонатльную координату текущей позиции курсора относительно текущего окна.

function WhereY: Byte;

Возвращает вертикальную координату текущей позиции курсора относительно текущего окна.

procedure ClrScr;

Очищает экран и помещает курсор в верхний левый угол.

procedure Delay (D: Word);

Приостангавливает работу программы на указанное число D миллисекунд.

procedure GotoXY (X, Y: Byte);

Перемещает курсор в нужное место экрана с координатами X, Y (рассчитываются не в пикселях, а в позициях курсора).

procedure Sound (F: Word);

Включает звуковой генератор. F- частота звука (Гц).

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









Дата добавления: 2017-01-29; просмотров: 1311;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.015 сек.