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

UptoLike

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

7
procedure Add (var v1, v2: IVector); // прибавление
procedure Subtract(var v1, v2: IVector); // вычитание
procedure Assign (var v1, v2: IVector); // присваивание
Операцию сравнения на равенство можно рассматривать как функ-
цию двух векторов , возвращающую булевское значение. Отсюда немед-
ленно вытекает ее объявление:
function AreEqual(v1, v2: IVector): Boolean;
Наконец , определение длины вектора и преобразование его в стро-
ку это, очевидно, функции одного аргумента. В первом случае значе-
нием функции будет число, причем не обязательно целое , так как для
его вычисления используется операция извлечения квадратного корня:
function GetLength(v: IVector): Real;
Вторая функция, естественно, возвращает строку, содержащую резул ь -
тат преобразования:
function AsString(v: IVector): String;
3. Итак, все процедуры и функции объявлены и мы можем при-
ступить к их реал изации, которая, впрочем , совершенно тривиальна.
Пример 1.1.1. Реализация подпрограмм задачи 1.1.
function Plus(v1, v2: IVector): IVector;
var i: Integer;
begin for i:=1 to Dim do result[i]:=v1[i]+v2[i]; end;
function Minus(v1, v2: IVector): IVector;
var i: Integer;
begin for i:=1 to Dim do result[i]:=v1[i]-v2[i]; end;
procedure Add(var v1, v2: IVector);
var i: Integer;
begin for i:=1 to Dim do v1[i]:=v1[i]+v2[i]; end;
procedure Subtract(var v1, v2: IVector);
var i: Integer;
begin for i:=1 to Dim do v1[i]:=v1[i]-v2[i]; end;
function ScalarProduct(v1, v2: IVector): Integer;
var i: Integer;
begin result:=0; for i:=1 to Dim do result:=result+v1[i]*v2[i]; end;
function GetLength(v: IVector): Real;
var i: Integer;
begin
result:=0; for i:=1 to Dim do result:=result+sqr(v[i]);
result:=sqrt(result);
end;
procedure Add     (var v1, v2: IVector); // прибавление
procedure Subtract(var v1, v2: IVector); // вычитание
procedure Assign (var v1, v2: IVector); // присваивание
        О перац ию с рав нения на рав енс т в ом ожнорас с м ат рив ать как функ-
ц ию д в ух в екторов , в оз в ращ ающ ую бул ев с кое з начение. О т с юд а нем ед -
л еннов ы т екает ее объяв л ение:
function AreEqual(v1, v2: IVector): Boolean;
       Н аконец , опред ел ение д л ины в ектора и преобраз ов ание егов с т ро-
ку — это, очев ид но, функц ии од ногоаргум ент а. В перв ом с л учае з наче-
нием функц ии буд ет чис л о, причем не обяз ат ел ь но ц ел ое, т ак как д л я
егов ы чис л ения ис пол ь з ует с я операц ия из в л ечения кв ад рат ногокорня:
function GetLength(v: IVector): Real;
Вторая функц ия, ес т ес т в енно, в оз в ращ ает с т року, с од ержащ ую рез ул ь -
т ат преобраз ов ания:
function AsString(v: IVector): String;
         3. И т ак, в с е проц ед уры и функц ии объяв л ены и м ы м ожем при-
с т упит ь к их реал из ац ии, которая, в прочем , с ов ершеннот рив иал ь на.

Пример1.1.1. Реал из ац ия под програм м з ад ачи 1.1.

function Plus(v1, v2: IVector): IVector;
var i: Integer;
begin for i:=1 to Dim do result[i]:=v1[i]+v2[i]; end;
function Minus(v1, v2: IVector): IVector;
var i: Integer;
begin for i:=1 to Dim do result[i]:=v1[i]-v2[i]; end;
procedure Add(var v1, v2: IVector);
var i: Integer;
begin for i:=1 to Dim do v1[i]:=v1[i]+v2[i]; end;
procedure Subtract(var v1, v2: IVector);
var i: Integer;
begin for i:=1 to Dim do v1[i]:=v1[i]-v2[i]; end;
function ScalarProduct(v1, v2: IVector): Integer;
var i: Integer;
begin result:=0; for i:=1 to Dim do result:=result+v1[i]*v2[i]; end;
function GetLength(v: IVector): Real;
var i: Integer;
begin
  result:=0; for i:=1 to Dim do result:=result+sqr(v[i]);
  result:=sqrt(result);
end;




                                         7