Разработка классов на языке Object Pascal. Соколов Е.В. - 8 стр.

UptoLike

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

8
function AreEqual(v1, v2: IVector): Boolean;
var i: Integer;
begin
result:=true;
for i:=1 to Dim do
if v1[i]<>v2[i] then result:=false;
end;
procedure Assign(var v1, v2: IVector);
var i: Integer;
begin for i:=1 to Dim do v1[i]:=v2[i]; end;
function AsString(v: IVector): String;
var i: Integer;
begin
result:='(';
for i:=1 to Dim do begin
result:=result+IntToStr(v[i]);
if i<Dim then result:=result+', ';
end;
result:=result+')';
end;
Подпрограммы Plus, Minus, Add и Subtract в цикле выполняют по-
компонентные операции сложения или вычитания. Разница лишь в том ,
что функции Plus и Minus сохраняют результат в переменной result, воз-
вращаемой в качестве их значения, а процедуры Add и Subtract в пер-
вом аргументе v1. Так как тип IVector это массив, то к компонентам
переменных данного типа мы можем обращаться обычным образом с
помощью индексиров а ния.
Поскольку |v|
=
vv
×
, неудивительно, что реализации функций Sca-
larProduct и GetLength очень похожи. В обоих переменная result инициа-
лизируется нулем и затем в цикле накапливает сумму покомпонентных
произведений. В функции GetLength из полученного значения требуется
дополнительно извлечь квадратный корень .
Критерий равенства двух векторов можно сформулировать сле-
дующим образом : векторы не равны , если хотя бы для одной пары соот -
ветственных компонент этих векторов имеет место неравенство, и рав -
ны в противном случае. Данное определение и реализует функция Are-
Equal: если хотя бы для одного i выражение v1[i]<>v2[i] оказывается ис-
тинным, в переменную result записывается значение false, если же для
всех i указанное выражение ложно, переменная result сохраняет значе-
ние, полученное ею до начала выполнения цикла, т. е. true.
Функция AsString применяет к каждой компоненте вектора би б-
function AreEqual(v1, v2: IVector): Boolean;
var i: Integer;
begin
  result:=true;
  for i:=1 to Dim do
     if v1[i]<>v2[i] then result:=false;
end;
procedure Assign(var v1, v2: IVector);
var i: Integer;
begin for i:=1 to Dim do v1[i]:=v2[i]; end;
function AsString(v: IVector): String;
var i: Integer;
begin
  result:='(';
  for i:=1 to Dim do begin
     result:=result+IntToStr(v[i]);
     if iv2[i] оказ ы в ает с я ис -
т инны м , в перем енную result з апис ы в ает с я з начение false, ес л и же д л я
в с ех i указ анное в ы ражение л ожно, перем енная result с охраняет з наче-
ние, пол ученное ею д оначал а в ы пол нения ц икл а, т. е. true.
           Ф ункц ия AsString прим еняет к кажд ой ком понент е в ектора биб-



                                          8