ВУЗ:
Составители:
Рубрика:
9
лиотечную функцию IntToStr, которая переводит целое число в десятич-
ную систему счисления и возвращает результат в виде ASCII-строки,
символы которой соответствуют цифрам десятичной записи. Из пол у -
ченных таким образом значений функция AsString формирует одну стро-
ку, вставляя между компонентами вектора запятые и заключая всю по-
следовательность в круглые скобки. Разумеется, такой формат не явл я-
ется единственно возможным. Заметим также, что для использования
функции IntToStr необходимо подкл ючить модуль SysUtils.
4. Теперь полученную библиотеку необходимо оформить в виде
модуля. Единственный содержательный момент здесь заключается в том ,
чтобы определить, какие элементы модуля сделать открытыми, а какие
закрытыми. В нашем случае этот вопрос решается однозначно:
1) поскольку вспомогательных подпрограмм библиотека не содер-
жит, все ее проц е дуры и функции должны быть открытыми;
2) тип IVector, необходимый для объявления подпрограмм, также
должен быть открытым;
3) константа, задающая размерность векторов , предшествует опре-
делению типа и, следовательно, заведомо находится в разделе интер-
фейса, т. е. открыта.
Таким образом , все объявления необходимо разместить в разделе
интерфейса, а реализацию подпрограмм — в разделе реализации. М о-
дуль SysUtils, о котором шла речь выше , необходим лишь для реализ а-
ции функции AsString. Поэтому его лучше подключить в разделе реал и-
зации (см. обсуждение этого вопроса в § 1.3 из [*]). В результате мы
получаем следующий код .
Пример 1.1.2. Структура модуля из задачи 1.1.
unit UnitIVector;
interface
const Dim = 5;
type IVector = array[1..Dim] of Integer;
function Plus (v1, v2: IVector): IVector;
function Minus (v1, v2: IVector): IVector;
function ScalarProduct(v1, v2: IVector): Integer;
function AreEqual (v1, v2: IVector): Boolean;
procedure Add (var v1, v2: IVector);
procedure Subtract(var v1, v2: IVector);
procedure Assign (var v1, v2: IVector);
function GetLength(v: IVector): Real;
function AsString(v: IVector): String;
л иот ечную функц ию IntToStr, которая перев од ит ц ел ое чис л ов д ес ят ич- ную с ис т ем у с чис л ения и в оз в ращ ает рез ул ьт ат в в ид е ASCII-с т роки, с им в ол ы которой с оот в ет с т в уют ц ифрам д ес ят ичной з апис и. И з пол у- ченны х т аким образ ом з начений функц ия AsString форм ирует од ну с т ро- ку, в с т ав л яя м ежд у ком понент ам и в ектора з апят ы е и з акл ючая в с ю по- с л ед ов ат ел ь нос т ь в кругл ы е с кобки. Раз ум еет с я, т акой форм ат не яв л я- ет с я ед инс т в енно в оз м ожны м . Зам ет им т акже, что д л я ис пол ь з ов ания функц ии IntToStr необход им опод кл ючит ь м од ул ь SysUtils. 4. Теперь пол ученную библ иот еку необход им о оформ ит ь в в ид е м од ул я. Е д инс т в енны й с од ержател ь ны й м ом ент з д ес ь з акл ючает с я в том , чтобы опред ел ит ь , какие эл ем ент ы м од ул я с д ел ат ь от кры т ы м и, а какие з акры т ы м и. В нашем с л учае этот в опрос решает с я од ноз начно: 1) пос кол ь ку в с пом огат ел ь ны х под програм м библ иот ека не с од ер- жит, в с е ее проц ед уры и функц ии д ол жны бы т ь от кры т ы м и; 2) т ип IVector, необход им ы й д л я объяв л ения под програм м , т акже д ол жен бы т ь от кры т ы м ; 3) конс т ант а, з ад ающ ая раз м ернос т ь в екторов , пред шес т в ует опре- д ел ению т ипа и, с л ед ов ат ел ь но, з ав ед ом о наход ит с я в раз д ел е инт ер- фейс а, т. е. от кры т а. Т аким образ ом , в с е объяв л ения необход им ораз м ес т ит ь в раз д ел е инт ерфейс а, а реал из ац ию под програм м — в раз д ел е реал из ац ии. М о- д ул ь SysUtils, о котором шл а речь в ы ше, необход им л ишь д л я реал из а- ц ии функц ии AsString. Поэтом у егол учше под кл ючит ь в раз д ел е реал и- з ац ии (с м . обс ужд ение этого в опрос а в § 1.3 из [*]). В рез ул ьт ат е м ы пол учаем с л ед ующ ий код . Пример1.1.2. С т рукт ура м од ул я из з ад ачи 1.1. unit UnitIVector; interface const Dim = 5; type IVector = array[1..Dim] of Integer; function Plus (v1, v2: IVector): IVector; function Minus (v1, v2: IVector): IVector; function ScalarProduct(v1, v2: IVector): Integer; function AreEqual (v1, v2: IVector): Boolean; procedure Add (var v1, v2: IVector); procedure Subtract(var v1, v2: IVector); procedure Assign (var v1, v2: IVector); function GetLength(v: IVector): Real; function AsString(v: IVector): String; 9
Страницы
- « первая
- ‹ предыдущая
- …
- 7
- 8
- 9
- 10
- 11
- …
- следующая ›
- последняя »