Понятие записи. Объявление записи в программе.
Тип записи используется для хранения под одним именем разнотипных (в отличие от массива) элементов. Эти элементы называются обычно полями записи.
Допустим необходимо представить в виде записи информацию о дне рождения: день, месяц и год. Соответствующая иерархическая структура будет иметь вид:
birthday
day month year
1..31 1..12 word
Описание такой записи на Паскале:
Тип полей записи |
birthday : record
Поля записи |
month : 1..12;
year : word;
end;
Имена полей записи |
Замечание:
Тип записи, как и тип массива, можно описывать прямо в секции описания переменных. Но такую запись нельзя будет передать в подпрограмму.
Начинается описание записи со слова record, заканчивается словом end. Порядок описания полей соответствует порядку их размещения в памяти, т.е. в памяти эти поля будут расположены таким образом, что адреса будут расти при движении по записи сверху вниз. Записи часто бывают вложенными, когда одна запись вкладывается в другую и представляет собой достаточно сложную иерархическую структуру. Вложенные записи часто используются для представления таблиц.
Пусть таблица table имеет следующую структуру:
A | B | |||||
C | D | |||||
e | f | g | h | i | j | k |
Соответствующее описание записи: var table : record A : record e : byte; f : word; g : real; end {A}; B : record C : record h : byte; i : char; end {C}; D : record j : real; k : byte; end{D}; end {B}; end {table}; |
table
A B
i z4votyUapYuGEUKF5Xop3ij9t+IY2uhcdmP5jlkJrtFd+oDsNdP79STM0mTmZ9kk8dOkDP2H2Tr3 7/NoOs3Kh/yhfMO0dNHr9yE7ptKykntD1VNDekSY1T+ZzOPIgwU0u1UWPg9hvoNXqjLKQ0qaH8w0 rnZtrVmMK61nof0HrUf0cyIuGtrVqMIQ20uqQPOLvq4lbBec+2kryWmjLq0Cre2chmfIvh2v1zB/ /Viu/gAAAP//AwBQSwMEFAAGAAgAAAAhAN/FQQnfAAAACQEAAA8AAABkcnMvZG93bnJldi54bWxM j01Lw0AQhu9C/8MyBW92N8G2GrMp4gcIEkqrl96m2TEJZmdDdpvGf+/2pLcZ5uGd5803k+3ESINv HWtIFgoEceVMy7WGz4/XmzsQPiAb7ByThh/ysClmVzlmxp15R+M+1CKGsM9QQxNCn0npq4Ys+oXr iePtyw0WQ1yHWpoBzzHcdjJVaiUtthw/NNjTU0PV9/5kNYxJydu3l4N7fseyXialOVTroPX1fHp8 ABFoCn8wXPSjOhTR6ehObLzoNCzv03VENaQqARGBlbpNQRwvgwJZ5PJ/g+IXAAD//wMAUEsBAi0A FAAGAAgAAAAhALaDOJL+AAAA4QEAABMAAAAAAAAAAAAAAAAAAAAAAFtDb250ZW50X1R5cGVzXS54 bWxQSwECLQAUAAYACAAAACEAOP0h/9YAAACUAQAACwAAAAAAAAAAAAAAAAAvAQAAX3JlbHMvLnJl bHNQSwECLQAUAAYACAAAACEAoU+HeJcCAAB0BQAADgAAAAAAAAAAAAAAAAAuAgAAZHJzL2Uyb0Rv Yy54bWxQSwECLQAUAAYACAAAACEA38VBCd8AAAAJAQAADwAAAAAAAAAAAAAAAADxBAAAZHJzL2Rv d25yZXYueG1sUEsFBgAAAAAEAAQA8wAAAP0FAAAAAA== " o:allowincell="f" strokeweight="1pt"/> e f g C D
h i j k
То, что написано выше позволяет сохранить только одну строку в сложной таблице. Если необходимо представлять таблицу размерам, больше чем одна строка, то возможно два варианта:
1). Можно рассматривать сложную таблицу как бы состоящую из большого количестваоднострочных карточек: В этом случае иерархической структуре будет соответствовать массив записей, где каждая запись позволяет описать одну строку таблицы:
var
table : array [1..10] of record
A: record
e : byte;
f : word;
g : real; структура базы данных
end {A};
B : record совокупность полей и их свойств
C : record
n : byte;
i : char;
end {C};
D : record
j : real;
k : byte;
end {D};
end {B};
end {table};
10 записей в базе данных
A | B | |||||
C | D | |||||
e | f | g | h | i | j | k |
поля базы данных база данных
2). Массивом будет являться поле записи:
var table : record
A: record
e : array[1..20] of byte;
f : array[1..20] of word;
g : array[1..20] of eal;
end;
B : record
C : record
n : array[1..20] of byte;
i : array[1..20] of char;
end;
D : record
j : array[1..20] of real;
k : array[1..20] of byte;
end;
end;
end;
A | B | |||||
C | D | |||||
s c1BLAQItABQABgAIAAAAIQCj03HlCAMAAHoGAAAOAAAAAAAAAAAAAAAAAC4CAABkcnMvZTJvRG9j LnhtbFBLAQItABQABgAIAAAAIQDMe0T23wAAAAoBAAAPAAAAAAAAAAAAAAAAAGIFAABkcnMvZG93 bnJldi54bWxQSwUGAAAAAAQABADzAAAAbgYAAAAA " adj="2936"/> e | f | g | h | i | j | k |
20 строк в каждой строке колонки (поля) логически связаны друг с другом
Первый способ представить таблицу отличается от второго, например, удобством сортировки записей в целом. Если необходимо сортировать строки в таблице то по 2-му способу надо будет переупорядочивать для каждой строки все элементы массивов, а сам по 1-му способу – то можно будет «сдвигать» записи (строки) в целом, что удобнее.
Дата добавления: 2016-05-28; просмотров: 1871;