3.3 Обращение к записи и ее элементам (полям).
Обращение к полю записи можно выполнить с помощью так называемой "точечной" нотации. Формат ее имеет вид:
<имя записи-переменной> . <имя поля>
При использовании вложенных записей мы должны указать полный маршрут: имена записей от высшего уровня до низшего, ведущие к данному полю. При этом каждая разделяющая точка символизирует определенный уровень вложенности.
В "точечном" обозначении поля записи следует указывать имена записей- переменных, но не их типов.
Примеры.
Обращение к полям записи STUDENT (структура 1-го типа): STUDENT.FIO, STUDENT.STIP, STUDENT.GR, STUDENT.K, STUDENT.N_ZACH.
Обращение к полям записи STUDENT (структура 2-го типа): STUDENT.GRUP.FIO, STUDENT.GRUP.GR, STUDENT.GRUP.N_ZACH, STUDENT.GRUP.STIP, STUDENT.K.
Поле записи используется в программе в том же смысле, что и обычная переменная. Поэтому поле записи можно указывать как в левой части оператора присваивания, так и в правой.
При объявлении записи для каждого ее поля указывается тип. Поэтому над полями записи можно выполнять действия, допустимые для данных заказанного типа.
Например, если поле записи имеет тип integer, то над представляемыми этим полем данными можно выполнять все операции, допустимые для целого типа.
Полям можно (как обычным переменным, по тем же правилам и с помощью известных операторов) присваивать значения и выводить содержимое полей на экран (или печать).
Примеры использования операторов для структуры 1-ого типа:
Read(STUDENT.FIO); {вводим фамилию студента: Иванов И.И.},
Read(STUDENT.STIP); {вводим стипендию студента: 125},
STUDENT.K := 5;
STUDENT.N_ZACH := 987671;
STUDENT.GR := 56;
Write(STUDENT.FIO, '':3, STUDENT.K, '':3, STUDENT.GR);
Примеры использования операторов для структуры 2-ого типа:
Read(STUDENT.GRUP.FIO); {вводим фамилию студента: Федорова А.А.},
Read(STUDENT.GRUP.STIP); {вводим стипендию студента: 83},
STUDENT.K := 5;
STUDENT.GRUP.N_ZACH := 987650;
STUDENT.GRUP.GR := 53;
Write(STUDENT.GRUP.FIO,'':3,STUDENT.K,'':3,STUDENT.GRUP.GR);
Обращение к записи в целом, а не только к ее полям, допускается лишь в операторе присваивания. Слева и справа от знака присваивания должны использоваться имена записей одинакового типа.
Пример. Пусть в программе объявлены записи ST1 и ST2 следующим образом:
type
GRUP_REC = record
FIO : string [15];
GR : 51..56;
N_ZACH, STIP : integer
end;
STUD_REC = record
K : 1..5;
GRUP : GRUP_REC
end;
var
ST1, ST2 : STUD_REC;
Если в программе использован оператор ST2 := ST1; то в результате его исполнения поле K записи ST2 получит значение поля K записи ST1. Поля записи GRUP (FIO, GRUP, N_ZACH, STIP), вложенной в запись ST2, получат значения соответствующих полей записи GRUP, вложенной в запись ST1.
Если в программе использован оператор ST2.GRUP := ST1.GRUP; то в результате его исполнения поле K записи ST2 значение не изменит, а поля записи GRUP (FIO, GR, N_ZACH, STIP), вложенной в запись ST2, получат значения соответствующих полей записи GRUP, вложенной в запись ST1.
