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

54

§3. Записи

3.1. Понятие записи в языке Паскаль

Существует ряд экономических, информационно-поисковых задач, связанных с получением, хранением и обработкой различных списков, ведомостей и других документов.

Например:

ФИО Курс Группа N_зачетки Стипендия

Иванов И.И. 5 56 987671 125

Петрова Н.Н. 5 55 987654 105

Федорова А.А. 5 53 987650 83

.....

Этот список состоит из строк (их число ограничено только объемом памяти компьютера или внешнего носителя информации) и из фиксированного числа столбцов или компонентов (в данном примере 5). В первом столбце записана символьная информация, а во 2–5 столбцах – числовая.

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

Запись (RECORD) - это структура сложных данных, состоящая из фиксированного числа компонентов различного типа.

Таким образом, каждая строка из списка (информация об одном студенте) есть запись. Имя записи - STUDENT, имена компонентов записи: FIO (ФИО), K (Курс), GR (Группа), N_ZACH (N_зачетки), STIP (Стипендия).

Наглядным представлением записи может служить образ "перевернутого дерева" - структура, в вершине которой находится один (корневой) элемент с исходящими от него ответвлениями к другим элементам. Изобразим "дерево" для записи STUDENT.

S TUDENT

FIO K GR N_ZACH STIP

В этой структуре (1-го типа) компоненты FIO, K, GR, N_ZACH, STIP записи STUDENT являются неделимыми. Такие компоненты называют полями. Если компоненты предполагают дальнейшую детализацию, то они представляют собой записи.

З аписи в Паскале могут иметь вложенную структуру (2-го типа), т.е. такую, в которой одна запись может выступать как составная часть другой записи. Например, запись STUDENT можно изобразить структурой 2-го типа следующим образом

STUDENT

K GRUP

F IO N_ZACH STIP GR

В этой структуре компонент K - поле, а компонент GRUP - запись, содержащая поля: FIO, N_ZACH, STIP, GR, то есть структура 2-го типа изображает вложенные записи.

В первом случае содержимое компонента GR - номер группы, во втором - компонент GRUP распадается на 4 поля, т.е. является записью.

3.2. Объявление записи в языке Паскаль

Записи объявляются в разделе описаний и используются в разделе операторов. Объявление записи можно делать в разделе переменных var или с использованием раздела типов type.

Первый способ объявления переменной типа запись (с использованием раздела типов Type ):

Type

<имя типа> = record

<имя поля 1> : <тип поля 1>;

<имя поля 2> : <тип поля 2>;

. . . . . .

<имя поля n> : <тип поля n>;

end;

var

<имя записи-переменной> : <имя типа>;

Второй способ объявления переменной типа запись (в разделе переменных Var):

var

<имя записи-переменной> : record

<имя поля 1> : <тип поля 1>;

<имя поля 2> : <тип поля 2>;

. . . . . .

<имя поля n> : <тип поля n>;

end;

Служебное слово record выполняет роль открывающей скобки, end - закрывающей.

Замечание. Поля одного типа можно задавать списком (разделитель в списке - запятая).

Пример1. Объявление записи STUDENT (структура 1-го типа, первый способ описания):

type

STUD_REC = record

FIO : string [15];

K : 1..5;

GR : 51..56;

N_ZACH : integer;

STIP : integer;

end;

var

STUDENT : STUD_REC;

Объявление записи STUDENT (структура 1-го типа, второй способ описания):

var

STUDENT : record

FIO : string [15];

K : 1..5;

GR : 51..56;

N_ZACH : integer;

STIP : integer;

end;

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

Так как поля N_ZACH и STIP одного типа (integer), то объявить запись STUDENT можно было и таким образом:

Type

STUD_REC = record

FIO : string [15];

K : 1..5;

GR : 51..56;

N_ZACH, STIP : integer;

end;

var

STUDENT : STUD_REC;

Пример 2. Объявление записи STUDENT (структура 2-го типа):

Описать структуру 2-го типа, т.е. вложенные записи, можно несколькими способами.

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

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

STUDENT : STUD_REC;

Второй способ. Начинаем с описания записи самого высокого уровня. Поля этой записи, в свою очередь, являющиеся записями, описываем соответствующим образом:

а) type

STUD_REC = record

K : 1..5;

GRUP : record

FIO : string [15];

GR : 51..56;

N_ZACH,STIP : integer

end

end;

var

STUDENT : STUD_REC;

или таким образом:

б) var

STUDENT : record

K : 1..5;

GRUP : record

FIO : string [15];

GR : 51..56;

N_ZACH,STIP : integer

end

end;

Замечание. Объявляя запись-переменную без предварительного определения типа (пример 2, способ 2, б), мы лишаем себя возможности передать ее какой-либо подпрограмме в качестве фактического параметра. Напомним, что в подпрограмме каждый параметр может быть описан с типом, выраженным только простым именем.

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