Главная  Терминология Хоора 

1 2 3 4 5 6 7 8 [ 9 ] 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133

1.7. Записи

!-г\-

меры из математики - это комплексные числа, состоящие из пвух вещественных чисел, и координаты точек, состоящие из двух или более вещественных чисел в зависимости от размерности пространства, заданного системой координат. Пример обработки данных - это описание людей с помощью нескольких существенных характеристик, таких, как имя и фамилия, дата рождения, пол и семейное положение. - В математике такой составной тип называется декартовым произведением типов компонент. Это связано с тем, что множество значений такого составного типа состоит из всех возможных комбинаций значений, взятых по одному из каждого типа компонент. Следовательно, число таких наборов из п чисел равно произведению количеств элементов всех составляющих множеств, так что кардинальное число составного типа равно произведению кардинальных чисел всех типов компонент.

В обработке данных комбинированные типы, такие, как описания людей или объектов, часто встречаются в файлах или банках данных и представляют собой записи существенных характеристик человека или объекта. Поэтому слово запись (record) стало широко принятым для обозначения подобной совокупности данных, и мы будем использовать этот термин вместо термина декартово произведение .

В общем виде составной тип Т определяется следующим образом:

type Т - record 5,: Г, ;

(I.I9)

Cardinality {J) = cardinality (Г,) * ... * cardinality (Г ) Примеры:

type Complex == record re\ real;

im: real

i: end

type Date = recorddco>: 1..31.

month: 1.. 12;

J., . year: 1..200O



type Person = record name, alfa;

firstmme: alfa] birthdate: Date; sex: (male, female); marstatus: (single, married, widowed, divorced)

Значение типа Т можно строить с помощью конструктора записи *> и, следовательно, присваивать его переменной этого типа:

x:=T(xi, Х2, х„) (1.20)

где Xi - значение типа компоненты Т[. Пусть даны переменные-записи:

г: Complex d: Date р: Person

им могут присваиваться отдельные значения, например, следующим образом (см. рис. 1.3):

z::=-Complex (1.0, -1.0) d:==Date{l, 4, 1973)

р:=Person {ШЯШ;Ст15, Date(l8, 1, 1966), male, single)

Идентификаторы S\, Sn, которые вводятся при определении комбинированного типа, являются именами отдельных

Complex Z

Dated

Person р

-1.0

1973

WIRTH

CHRIS

1966

male

single

Рис. 1.3. Запнс11 ипов Complex, Date, Person.

компонент переменных этого типа, они употребляются в селекторах записи, где их добавляют к переменной, обозначающей всю запись. Если имеется переменная х: Т, то ее

*) В язьгее Паскаль такие конструкторы также отсутствуют. -/7рил .



1.7. Записи 33

,-,я компонента обозначается как

(1.21)

K.Si

Если такой селектор стоит в левой части оператора присваивания, то происходит выборочное изменение х:

- x.Si := Xi ~

где Xi - значение выражения типа Ti. Если даны переменные:

г: Complex d: Date р: Person

то их можно использовать, например, со следующими селекторами:

z.im (типа real)

d.month (типа 1.. 12)

р.пате (типа alfa)

p.blrthdate (типа Date) p.birthdate.day (типа 1..31)

На примере типа Person мы видим, что компоненты записи могут в свою очередь быть составными. Таким образом, селекторы могут добавляться один к другому. Кроме того, разные составные типы могут комбинироваться различными способами. Например, i-я компонента массива а, который является компонентой записи г, обозначается как

г.а [i]

а компонента с селектором s, входящая в г-ю компоненту-запись массива записей а, обозначается как

а [i].s

Декартово произведение в принципе содержит все комбинации значений типов компонент. Однако следует заметить, что на практике не все такие комбинации могут быть законными , т. е. иметь смысл. Например, тип Date, определенный выше, включает значения

(31, 4, 1973) и (29, 2, 1815)

Хотя дней с такими датами не существует. Таким образом; определение этого типа не отражает реального положения




1 2 3 4 5 6 7 8 [ 9 ] 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133