Implementation implementation 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Implementation implementation



… …

End. end.

 

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

unit A; 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.

 

После объявления uses Cmplx программе стали доступны все объекты, объявленные в интерфейсной части модуля 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-02-05; просмотров: 248; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.191.181.231 (0.005 с.)