Записи (Record) | Язык Паскаль
Pascal. Основы программирования Сложные Средние Простые задачи

Записи (Record) в Паскале

Запись – это структура данных, состоящая из фиксированного числа компонент, называемых полями. Каждое поле может иметь свой тип данных. Общий вид описания типа record в языке программирования Pascal:

type t = record
    id11, id12, …: type1;
    id21, id22, …: type2;
    ...
end;

здесь начинаются с id идентификаторы полей; с type – типы полей; t – имя типа.

Пример. Данные комплексного типа можно описать переменной типа record.

type complex = record
    re, im: real
end;

var c: complex;

Здесь complex – имя типа, а c – имя переменной. Переменная c состоит из двух полей: re и im, имеющих один и тот же тип (real). Эти поля переменной c обозначаются как c.re и c.im.

Пример. Даты событий можно описать следующим образом:

type date = record
    month: 1..12;
    day: 1..31;
    year: integer
end;

var d: date;

В этом примере описан тип date и переменная d, принадлежащая этому типу.

Переменная d описана как запись, состоящая из трех полей: month, day и year. Каждое поле содержит соответственно данные: целое число в пределах от 1 до 12 (номер месяца), целое число от 1 до 31 (день), целое число (год).

Поле day переменной d записывается как d.day.

Например, чтобы заслать в d дату 12.01.2003, надо выполнить следующие операторы:

d.month := 1;
d.day := 12;
d.year := 2003;

Пример. Вычислить сумму s двух комплексных чисел x = 2 + 7i и y = 6 + 3i (то есть x, y, s: complex;).

x.re := 2.0; x.im := 7.0;
y.re := 6.0; y.im := 3.0;
s.re := x.re + y.re;
s.im := x.im + y.im;

Запись может быть элементом других структур. Например, введем тип family (семья: отец, мать, 1-й ребенок, 2-й ребенок):

type family = (father, mother, child1, child2);
var birthday: array[family] of date;

где date – описанная выше запись.

Переменная birthday есть массив, состоящий из записей – дат рождения членов семьи. Каждая дата рождения имеет тип date, который может быть описан в программе.

Для занесения даты рождения, например, mother, достаточно выполнить операторы:

birthday[mother].month := 5;
birthday[mother].day := 1;
birthday[mother].year := 1995;

Оператор With

Оператор with используется для удобства работы с переменными типа record (запись).

Общий вид:

with a do st;

здесь a – имя переменной типа record, st – операции.

В операциях st при ссылках на компоненты записи имя a можно опускать.

Пример. Присвоение полям записи при использовании оператора with:

with birthday[mother] do begin
    month := 5;
    day := 1;
    year := 1965
end;