Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Informatika_Lektsia_9.doc
Скачиваний:
4
Добавлен:
01.03.2025
Размер:
355 Кб
Скачать
☆

9.4. Записи

Записями называют связанные структуры, состоящие из нескольких элементов, называемых полями, которые могут иметь одинаковые или различающиеся типы и, соответственно размеры в памяти. Поля могут иметь любой тип, допустимый в Паскале (базовый или объявленный пользователем), кроме файлового. Полям задают собственные имена.

Структура записи похожа на одномерный массив, в котором элементы-поля могут иметь разные типы. Поэтому доступ к ним осуществляется не через индекс (номер элемента в массиве), а с использованием имени поля. Например, унифицированные краткие сведения о книгах имеют следующую структуру: автор, название книги, издательство, год издания, её цена. Первые три элемента относится к строковому типу данных, четвертый к целому, а цена  - к вещественному типу. Над элементами записи можно выполнять действия, допустимые для данных этого типа.

Как и для других типов в Паскале, описание записи может быть дано в двух формах:

1) при помощи специального типа record или

2) непосредственным описанием соответствующей переменной.

Синтаксис описания типа record имеет вид:

type

имя типа = record описание всех полей записи end;

где record, end - служебные слова,

имя типа - любой разрешенный идентификатор Паскаля,

описание всех полей записи – список описаний полей, разделяемых “;” (после последнего описания перед end разделитель можно не ставить).

Синтаксис непосредственного описания переменной с именем имя переменной (любой разрешенный идентификатор Паскаля), имеющей тип record:

var

имя переменной: record описание всех полей записи end;

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

Пример 1. Разработать описание типа Pers_Data для записи, содержащей следующую информацию о сотрудниках фирмы: 1) фамилия, 2) домашний адрес, 3) телефон, 4) электронную почту, 5) должностной оклад. Ввести переменную данного типа с названием P_Data.

Решение. Дадим полям 1)-5) соответственно названия fam;adr;tel;e_mail;salary. Первые 4 поля являются строковыми величинами. Исходя из содержания вводимой в них информации, им присвоим длины 20,40,15,20. Последнему полю 5) присвоим вещественный тип:

type Pers_Data=record

 fam:string[20]; adr:string[40]; tel:string[15];

e_mail:string[20];  salary:real

 end;

Var p_Data: Pers_Data;

Пример 2. Дать непосредственное описание переменной с именем P_Data, в которой содержится тот же тип информации, что и в примере 1.

Решение:

Var p_Data: record fam:string[20]; adr:string[40]; tel:string[15];

e_mail:string[20];  salary:real

end;

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

Пример 3. Примеры присваивания значений именам полей fam, tel и salary у переменной-записи с именем P_Data из примера 2 имеют вид:

P_Data. fam:='Андреев Б.В.';

P_Data. tel:='85662223322';

P_Data. salary:=36500.00;

Составные имена позволяют обращаться к полям записей из любой части кода программного блока, где они описаны.

Для перехода к обычным именам (без имени записи и разделяющей точки ) можно применить оператор присоединения with. Его синтаксис имеет вид:

with имя записи do оператор;

где оператор – оператор (простой или составной), задает область действия оператора присоединения, в пределах которой можно не использовать составные имена.

Пример 4. Применение оператора присоединения для выполнения действий из примера 3:

with P_Data do begin

fam:= 'Андреев Б.В.';

tel:='85662223322';

salary:=36500.00

end;

Для начальной засылки значений в поля записей (инициализации) в коде программы наряду с обычными присваиваниями можно использовать типизированные константы.

Пример 5. Инициализация значений полей записи, которая имеет тип Pers_Data, данный в примере 1, с использованием типизированной константы Andreev того же типа:

Const

Andreev: Pers_Data=(fam:'Андреев Б.В.';

adr:'105141,Moscow,Krasnaya Presnya street,37-125';

tel:='85662223322';

e_mail:'And_B_V@mail.ru'

salary:=36500.00);

При создании и хранении наборов однотипных записей необходимо использовать массивы из переменных типа record. Для этого можно использовать описание новых типов, представляющих собой массивы из записей, либо непосредственно описывать переменные-массивы из элементов-записей.

Пример 6. Для хранения данных по сотрудникам фирмы “Альфа”, необходимо описать массив записей woker_ALPHA типа Pers_Data, данного в примере 1. Возможно использование двух вариантов:

1) вариант с промежуточным описанием нового типа (массива записей) woker_firm:

type woker_firm: array [1..30] of Pers_Data;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]