Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по ОАП.doc
Скачиваний:
3
Добавлен:
01.05.2025
Размер:
1.1 Mб
Скачать

9.2. Записи

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

Структура объявления записи такова:

<имя типа>=RECORD <список полей> END

Здесь <имя поля >-правильный идентификатор;

RECORD(запись), END(конец) - зарезервированные слова;

<список полей> - список полей; представляет собой последовательность разделов записи, между которыми ставится точка с запятой.

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

VAR Reference_book = RECORD

Surname,

Name,

Address,

City : STRING[20];

Post_Index : STRING[4];

Telephone : STRING[12];

END;

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

Например:

Reference_book.Surname :=’Иванов’;

9.2.1. Оператор присоединения

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

WITH <имя записи> DO

BEGIN

<операторы, содержащие имена полей записи>

END;

Например:

WITH Reference_book DO

BEGIN

Surname :=’Иванов’;

END;

9.2.2. Записи с вариантами.

Особой разновидностью записей являются записи с вариантами, которые объявляются с использованием зарезервированного слова CASE. С помощью записей с вариантами можно одновременно сохранять различные структуры данных, которые имеют большую общую часть, одинаковую во всех структурах, и небольшие отличающиеся части в различных структурах. Например, рассмотрим запись PERSON, расширяющую возможности записи Reference_book, за счет введения дополнительных полей:

TYPE

Person = RECORD

Surname,

Name,

Address,

City : STRING[20];

Post_Index : STRING[4];

Telephone : STRING[12];

CASE Hobby : (Computer, Music) of

Computer: (Type_Comp:STRING[20];

Mbyte :BYTE;

Compatible:BOOLEAN);

Music : Instrument : ARRAY[1..3] OF STRING[10];

END;

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

9.3. Множества

Наряду с записями и массивами в ТП 7.0 существует еще один структурированный тип данных - множество.

Множество - это наборы однотипных логически связанных друг с другом объектов. Количество элементов, входящих в множество, может меняться в пределах от 0 до 256 (множество, не содержащее элементов, называется пустым). Именно непостоянством количества своих элементов множества отличаются от массивов и записей.

Описание типа множества имеет вид:

<имя типа>=SET OF<баз. тип>

Здесь <имя типа>- правильный идентификатор;

SET(множество),OF(из)- зарезервированные слова;

<баз. тип> - базовый тип элементов множества, в качестве которого может использоваться любой порядковый тип, кроме WORD, INTEGER, LONGINT.

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

Над множествами определены следующие операции:

* - пересечение множеств; результат содержит элементы, общие для обоих множеств;

[1,2]*[3.4]=[];

+ - объединение множеств; результат содержит элементы первого множества, дополненные недостающими элементами из второго множества:

[1,2]+[3,4]=[1,2,3,4];

- - разность множеств; результат содержит элементы из первого множества, которые не принадлежат второму:

[1..10] - [5..15]=[1..4];

= проверка эквивалентности; возвращает TRUE, если оба множества эквивалентны;

[1,2,3] =[1,2] - FALSE;

<> - проверка неэквивалентности; возвращает TRUE, если оба множества неэквивалентны;

[1,2,3]<>[1,2,2] - TRUE;

<= - проверка вхождения; возвращает TRUE, если первое множество включено во второе;

[X] <= [1..20], если Х -целое число из диапазона 1.. 20;

>= - проверка вхождения; возвращает TRUE, если второе множество включено в первое;

[1,2,3] >=[1,2] - TRUE;

IN - проверка принадлежности; первый элемент - выражение, а второй - множество одного и того же типа; возвращает TRUE, если выражение имеет значение, принадлежащее множеству:

3 IN [1..10,12] - TRUE

Дополнительно к этим операциям можно использовать две процедуры.

INCLUDE- включает новый элемент в множество.

INCLUDE (S,I)

Здесь S- множество, состоящее из элементов базового типа;

I - элемент, который необходимо включить во множество.

EXCLUDE - исключает элемент из множества

EXCLUDE (S,I)

Здесь S- множество, состоящее из элементов базового типа;

I - элемент, который необходимо исключить в множестве.