Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Пусть, например, мы создаем модуль, реализующий арифметику комплексных чисел (такая арифметика ни в стандартном Паскале, ни в Турбо Паскале не предусмотрена). К сожалению, в Турбо Паскале нельзя использовать функции, значения которых имели бы структурированный тип (запись, например), поэтому арифметика комплексных чисел реализуется четырьмя процедурами:
UNIT Cmplx;
{---------------------}
INTERFACE
{---------------------}
type complex = record
re, im:real
end;
Procedure AddC | (x, у | : complex; | var z | : complex); |
Procedure SubC | (x, у | : complex; | var z | : complex); |
Procedure MulC | (x, у | : complex; | var z | : complex); |
Procedure DivC | (x, у | : complex; | var z | : complex); |
const | ||||
с: 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*у.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
а, Ь, с: 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");
выведет на экран содержимое «закрытой» типизированной константы из предыдущего примера.
Дата публикования: 2014-11-04; Прочитано: 223 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!