Основы программирования на C++, PASCAL
3.20. Комбинированный тип данных
Все структурированные типы данных, с которыми мы уже познакомились, представляют собой совокупности однотипных величин. Комбинированный тип данных — это структурированный тип, состоящий из фиксированного числа компонент (полей) разного типа. Комбинированный тип имеет еще и другое название — запись.
Обычно запись содержит совокупность разнотипных атрибутов, относящихся к одному объекту. Например, анкетные сведения о студенте вуза могут быть представлены в виде информационной структуры (рис. 35).
Такая структура называется двухуровневым деревом. В Паскале эта информация может храниться в одной переменной типа Record (запись). Задать тип и описать соответствующую переменную можно следующим образом:
Type Anketa1=Record
FIO: String[50]; {поля}
Pol: Char;
Dat: String[16]; {записи}
Adres: String[50];
Curs: 1..5; (или элементы)
Grup: 1..10;
Stip: Real {записи}
End;
Var Student: Anketa1;
Такая запись, так же как и соответствующее ей дерево, называется двухуровневой.
К каждому элементу записи можно обратиться, используя составное имя, которое имеет следующую структуру:
<имя переменной>.<имя поля>
Например, student. fio; student. dat и т.п. Если, например, требуется полю курс присвоить значение 3, то это делается так:
Student.Curs:=3 ;
Поля записи могут иметь любой тип, в частности сами могут быть записями. Такая возможность используется в том случае, когда требуется представить многоуровневое дерево (более 2 уровней). Например, те же сведения о студентах можно отобразить трехуровневым деревом (рис.36).
Такая организация данных позволит, например, делать выборки информации по году рождения или по городу, где живут студенты. В этом случае описание соответствующей записи будет выглядеть так:
Type Anketa2=Record
FIO: String[50];
Pol: Char;
Dat: Record
God: Integer;
Mes: String[10];
Den: 1..31
End;
Adres: Record
Gorod: String[20];
UlDomKv: String[30];
End;
Curs: 1..5 ;
Grup: 1..10;
Stip: Real
End;
Var Student: Anketa2;
Поля такой записи, находящиеся на третьем уровне, идентифицируются тройным составным именем.
Например, student.Dat.God; student.Adres.Gorod.
Приведем структурограмму задания комбинированного типа (рис.37).
В программе могут использоваться массивы записей. Если на факультете 500 студентов, то все анкетные данные о них можно представить в массиве: