Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
Fio: Record
Fam: String [20];
Im: String [10];
Ot: String [20]
End;
Pol: (Man, Woman);
Data_R: Data;
Prof: String [20]
End;
В разделе Var необходимо ввести переменную типа Anketa:
Var
An1, An2: Anketa;
D1, D2: Data;
Объем памяти необходимый для записи, складывается из длин полей нижнего уровня.
Переменная, имеющая тип записи верхнего уровня, называется полной переменной.
Обращение к значению поля осуществляется с помощью идентификатора полной переменной, идентификаторов всех полей (с учетом их иерархии), в состав которых входит поле, и имени данного поля, разделенных точкой. Такое имя называется составным именем.
Например, применительно к примерам 3.1 и 3.2, An1, An2, X, Y – это полные переменные (полные имена). Составные имена записываются следующим образом: X. Re, X. Im, An1.Pol, An1.Fio. Fam, An1.Data_R. God и т. д.
Для полных переменных одного и того же комбинированного типа существует только одна операция – операция присваивания (в качестве выражения в правой части оператора присваивания может быть использована только переменная того же типа запись). Например, для примеров 3.1, 3.2 можно записать:
X := Y;
An1 := An2;
К этому моменту записи Y, An2 уже должны быть определены.
Составное имя может использоваться везде, где допустимо применение типа поля. Для присваивания полям значений используется оператор присваивания или ввода.
Пример 3.3.
Присвоение значений полям переменной D1 (к примеру 3.2).
D1.God := 1970;
D1.Mes := Jn;
D1.Den := 15;
Для определения значения полной переменной необходимо присвоить значения всем полям, образующим это значение.
Составные имена можно использовать в операторах ввода-вывода. Например:
Read (D1.God, D1.Den);
Write (A1.Fio. Fam);
Зачастую удобно пользоваться массивами из записей.
Например, применительно к примеру 3.2 может быть объявлен следующий массив:
Var
Spisok: Array [1..100] Of Anketa;
Такое объединение позволяет хранить анкетные данные на 100 человек, выделять и обрабатывать из них нужные. Например, можно вывести значения необходимых полей записи:
For I:=1 To 100 Do
Writeln (Spisok [I].Fio. Fam, Spisok [I].Fio. Im, Spisok [I].Fio. Ot)
3.3. Записи с вариантами
Записи, содержащие только общую часть, имеют строго определенную структуру.
Записи с вариантами позволяют объединить описания записей, которые похожи, но не идентичны по форме.
Они состоят из необязательной общей части и вариантной части. Общая часть записи описывает поля, которые присутствуют в каждой переменной определяемого типа.
Вариантная часть начинается зарезервированным словом Case и описывает несколько вариантов структуры записи. Синтаксис вариантной части представляет рисунок 3.6.

Рисунок 3.6 – Синтаксическая диаграмма вариантной части записи
Диапазон (см. рисунок 3.6) имеет формат, который иллюстрирует рисунок 3.7.

Рисунок 3.7 – Синтаксическая диаграмма диапазона
В каждый момент выполнения программы один из вариантов структуры является активным в зависимости от значения признака варианта.
Признак варианта описывается непосредственно после зарезервированного слова Case. Признак является самостоятельным полем общей части записи.
Поле признака может отсутствовать. В этом случае в Case указывается только идентификатор типа, и программист обязан сам следить за тем, какой вариант записи является активным.
Список полей каждого варианта заключается в скобки.
Например, пусть вриантная часть записи имеет вид:
а) Case I: Integer Of ...
Здесь идентификатор I определяет поле признака, которое является самостоятельным полем общей части записи.
б) Case Integer Of ...
Здесь поле признака отсутствует. Варианты определяются целыми значениями в списке вариантов.
Пример 3.4.
Запись с вариантной частью без поля признака.
Var
Z: Record
Case Integer Of
1: (I1: 1..10);
2: (J1: Char);
3: (K1: Boolean)
End;
В данном примере вариантная часть содержит три варианта. Будет активен вариант, соответствующий имени поля. Например, если в программе имеется обращение к полю Z. I1, то вариантная часть воспримется как поле типа 1..10. При обращении к вариантной части по имени Z. J1 она воспримется как поле типа Char.
У части Case нет отдельного служебного слова End. Одно слово End заканчивает всю конструкцию записи с вариантами.
Пример 3.5.
Объявление записи с вариантами, содержащей поле признака.
Type
Anketa1 = Record
{Общая часть}
Fio: Record
Fam: String[20];
Im: String[10];
Ot: String[20];
End;
{Вариантная часть}
Case Pol: (Men, Women) Of
Men: (Vozr1: 20..30);
Women: (Vozr2: 18..25)
End;
В вариантной части все имена полей должны быть уникальны, даже если они встречаются в разных вариантах.
Запись может иметь только одну вариантную часть, она должна размещаться в конце записи.
Но вариантная часть может быть вложенной в другую вариантную часть.
Если вариантная часть, соответствующая какому-либо значению признака, является пустой, то она записывается следующим образом:
<Диапазон>: ( )
Например, если в предыдущем примере отсутствуют поля при значении признака, равном Women, то этот вариант запишется так:
Women: ( )
Объем памяти, необходимый для записи с вариантами, складывается из объемов полей общей части и максимальной по объему суммы длин полей вариантной части.
Поля записи размещаются в памяти последовательно, в соответствии с объявлением.
3.4. Оператор присоединения With
При работе с полями в их составном имени необходимо писать путь к полю через все уровни иерархии, начиная от полного имени записи. С учетом того, что количество уровней иерархии может достигать девяти, составное имя поля может содержать девять компонент. Работа с такими именами неудобна, а программа оказывается очень громоздкой.
Для сокращения составного имени поля может быть использован оператор присоединения With. Данный оператор имеет формат, который содержит рисунок 3.8.

Рисунок 3.8 – Синтаксическая диаграмма
оператора присоединения
На данном рисунке <Оператор> - это любой оператор языка, допустимый для соответствующих типов полей.
В операторе With указывается список переменных типа Record.
Оператор With облегчает доступ к полям этих записей и минимизирует повторные адресные вычисления. Внутри <Оператора>, вложенного в оператор With, к полям этих записей можно обращаться как к простым переменным.
Пример 3.6.
В примере 3.2 объявлена переменная D1: Data. Используя оператор With, вместо примера 3.3 можно записать:
With D1 Do
Begin
God:=1970;
Mes:=Yan;
Den:=15
End;
Пример 3.7.
Используя оператор With, к полям записи An1 (см. пример 3.2) можно обратиться следующим образом:
|
Из за большого объема этот материал размещен на нескольких страницах:
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 |


