Имена полей в пределах одной записи не должны повторяться, но могут использоваться вне записи как имя другой переменной. Запись можно передавать в качестве параметра процедуре или функции, но функция не может возвращать значение типа запись.
Пример.
Запись, характеризующая адрес человека, очевидно, должна содержать сведения о городе, улице, № дома, № квартиры. Структура соответствующей записи в разделе Typeможет быть описана следующим образом.
Type
Adres = Record
Gorod : String [20];
Ul : String [20];
Dom : Integer;
Kv : Integer
End;
Рассмотрим еще один пример, в котором полем записи будет массив.
Пример.Запись, описывающая студента, может иметь следующую структуру:
ФИО, номер зачетки, оценки по 5 предметам.
Type
Stud = Record
Fam : String[15];
Im : String[10]
Ot : String[15];
Numz : LongInt;
O :Array[1..5] Of Integer
End;
Используя этот тип, сведения о 25 студентах группы можно поместить в массив, описав его так: Var
Grup : Array[1..25] Of Stud;
RabAnk : Stud; { Рабочая переменная }
Значение переменной–записи можно присвоить другой переменной–записи того же типа. Ни в каких других операциях переменная–запись целиком участвовать не может. В необходимых случаях каждое поле записи должно обрабатываться отдельно.
При этом имя поля будет составным вида:
Имя_записи.имя_поля.
Пример.
RabAnk.NumZ := 2100756; {Поле номера зачетки в переменной RabAnk}
RabAnk.Fam := ’Иванов’; {Поле фамилии в переменной RabAnk}
Для массивов записей:
Grup[1].Fam := ’Абрамова’; {Фамилия первого студента в группе}
Writeln(Grup[i].Numz); {Номер зачетки i–го студента в группе}
Write(Grup[10].O[1]); {оценка по первому предмету 10-го студента }
Примеры программ обработки записей
Пример 1.Ввести в ЭВМ ведомость студентов одной группы по пяти предметам. Вывести на экран фамилии и номера зачеток неуспевающих студентов.