TURBO PASCAL |
Новости
|
Доступ к объявленным в модуле объектам
Пусть, например, мы создаем модуль, реализующий арифметику комплексных чисел (такая арифметика ни в стандартном Паскале, ни в Турбо Паскале не предусмотрена). К сожалению, в Турбо Паскале нельзя использовать функции, значения которых имели бы структурированный тип (запись, например), поэтому арифметика комплексных чисел реализуется четырьмя процедурами: UNIT Cmplx; {---------------------} INTERFACE {---------------------} type complex = record re, im:real end;
{---------------------} 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*у.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-файл, после чего Вашей программе станут доступны процедуры из новой библиотеки. Например, в следующей программе (пример 9.1) осуществляются четыре арифметические операции над парой комплексных чисел. Пример 9.1 Uses Cmplx; var а, Ь, с : 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('Вычитание: 'с.re:5:1, с.im:5:1,'i'); MulC(a, b, c); WriteLn('Умножение: 'c.re:5:1, c.im:5:l,'i') ; DivC(a, b, c); WriteLn('Деление: 'c.re:5:l, с.im:5:1,'i'); end. После объявления Uses Cmplx программе стали доступны все объекты, объявленные в интерфейсной части модуля CMPLX. При необходимости можно переопределить любой их этих объектов, как это произошло, например, с объявленной в модуле типизированной константой С. Переопределение объекта означает, что вновь объявленный объект «закрывает» ранее определенный в модуле одноименный объект. Чтобы получить доступ к «закрытому» объекту, нужно воспользоваться составным именем: перед именем объекта поставить имя модуля и точку. Например, оператор WriteLn(cmplx.c.re:5:l, cmplx.с.im:5:1,'i'); выведет на экран содержимое «закрытой» типизированной константы из предыдущего примера.
|
(с)Все права защищены По всем интересующим вопросам прошу писать на электронный адрес |