Введение в объектно-ориентированное программирование на языке Object Pascal. Соколов Е.В. - 67 стр.

UptoLike

Составители: 

67
procedure WriteMatrix(m: Matrix);
var i,j:Integer;
begin
for i:=1 to n do begin
for j:=1 to n do begin
Write(PRational(m[i,j]).num,'/', PRational(m[i,j]).den, ' ');
end;
WriteLn;
end;
WriteLn;
end;
var
m1,m2,m3,m4: Matrix;
i,j: Integer;
begin
for i:=1 to n do for j:=1 to n do begin
m1[i,j]:=PNumber(UnitRational.CreateAs(1,(2 shl i)));
m2[i,j]:=PNumber(UnitRational.CreateAs(1,(2 shl j)));
end;
{ Объекты типа Rational размещаются в памяти и инициализируются.
Перед присваиванием ссылки на них следует привести к типу PNumber. }
m3:=AddMatrix(m1,m2); // вызываются обобщенные функции
m4:=MultiplyMatrix(m1,m2); // сложения и умножения
WriteMatrix(m1); //
WriteMatrix(m2); // содержимое матриц
WriteMatrix(m3); // выводится на экран
WriteMatrix(m4); //
for i:=1 to n do for j:=1 to n do begin
m1[i,j].Destroy(m1[i,j]); //
m2[i,j].Destroy(m2[i,j]); // элементы всех матриц
m3[i,j].Destroy(m3[i,j]); // удаляются из памяти
m4[i,j].Destroy(m4[i,j]); //
end;
ReadLn;
end.
Начав работать, приведенная программа первым делом создает
объекты типа Rational и использует ссылки на них для инициализации
элементов матриц. Поскольку типы Rational и Number связаны друг с
другом лишь семантически, здесь опять требуется осуществить явное
привед ение типа.
Далее к построенным структурам данных применяется функция
procedure WriteMatrix(m: Matrix);
var i,j:Integer;
begin
  for i:=1 to n do begin
     for j:=1 to n do begin
       Write(PRational(m[i,j]).num,'/', PRational(m[i,j]).den, ' ');
     end;
     WriteLn;
  end;
  WriteLn;
end;

var
  m1,m2,m3,m4: Matrix;
  i,j: Integer;

begin
  for i:=1 to n do for j:=1 to n do begin
    m1[i,j]:=PNumber(UnitRational.CreateAs(1,(2 shl i)));
    m2[i,j]:=PNumber(UnitRational.CreateAs(1,(2 shl j)));
  end;

{ Объекты типа Rational размещаются в памяти и инициализируются.
  Перед присваиванием ссылки на них следует привести к типу PNumber. }

  m3:=AddMatrix(m1,m2);       // вызываются обобщенные функции
  m4:=MultiplyMatrix(m1,m2); // сложения и умножения
  WriteMatrix(m1); //
  WriteMatrix(m2); // содержимое матриц
  WriteMatrix(m3); // выводится на экран
  WriteMatrix(m4); //
  for i:=1 to n do for j:=1 to n do begin
     m1[i,j].Destroy(m1[i,j]); //
     m2[i,j].Destroy(m2[i,j]); // элементы всех матриц
     m3[i,j].Destroy(m3[i,j]); // удаляются из памяти
     m4[i,j].Destroy(m4[i,j]); //
  end;
  ReadLn;
end.


        Н ачав работ ат ь , прив ед енная програм м а перв ы м д ел ом с оз д ает
объект ы т ипа Rational и ис пол ь з ует с с ы л ки на нихд л я инициал из ации
эл ем ентов м ат риц. Пос кол ь ку т ипы Rational и Number с в яз аны д руг с
д ругом л иш ь с ем ант ичес ки, з д ес ь опят ь т ребует с я ос ущес т в ит ь яв ное
прив ед ение т ипа.
        Дал ее к пос т роенны м с т рукт урам д анны хприм еняет с я функция


                                        67