Найти в Дзене
Physics.Math.Code

Зачем нужны записи (Record) в Pascal и Delphi (Object Pascal) ?

Для использования в программе множество однотипных данных используются массивы. Однако, очень часто возникает необходимость использовать разнородные типы данных для описания одного и того же объекта. В этом случае в программе используется тип, называемый запись. Запись – это структура, состоящая из фиксированного числа компонент, называемых полями. Данные одного поля разных записей имеют один и тот же тип, а разных полей могут иметь разные типы. Общий вид описания типа record: 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 dat

Для использования в программе множество однотипных данных используются массивы. Однако, очень часто возникает необходимость использовать разнородные типы данных для описания одного и того же объекта. В этом случае в программе используется тип, называемый запись.

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

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 есть массив, состоящий из записей – дат рождения членов семьи: отца, матери, 1-го ребенка, 2-го ребенка. Каждая дата рождения имеет тип date, который может быть описан в программе.

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

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

Запись можно описать тремя способами:

1. В разделе описания переменных:
var <имя записи> : record
<имя элемента1>:<тип элемента1>;
<имя элемента2>:<тип элемента2>;
...............................................................
<имя элемента n>:<тип элемента n>;

2. В разделе описания типов:
type <имя типа>=record
<имя элемента1>:<тип элемента1>;
<имя элемента2>:<тип элемента2>;
................................................................
<имя элемента n>:<тип элемента n>;
end;
var <имя записи>:<имя типа>;

3. В разделе описания констант, если первоначальное значение записи - константа.
Пример:
type B=record
x,y,z:integer;
end;
const ved:B=(x:5,y:4,z:6);

где x,y,z - элементы; 5,4,6 - их значения.