ВУЗ:
Составители:
Рубрика:
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
Страницы
- « первая
- ‹ предыдущая
- …
- 5
- 6
- 7
- 8
- 9
- …
- следующая ›
- последняя »