- •Технология программирования (pascal)
- •V. Структуры и организация данных
- •1. Статические структуры данных
- •1.1. Массив как статическая структура данных.
- •1.2. Линейный поиск в массивах данных.
- •1.3. Способы сортировки в массивах данных.
- •Признаки порядка
- •1.4. Некоторые рекомендации при работе со статическим массивом.
- •1.5. Пример задачи выполнения операций над одномерными массивами.
- •1.6. Пример задачи выполнения операций над двумерным массивом.
- •1.7. Запись как статическая структура данных.
- •1.7.1. Вложенные поля записи.
- •1.7.2. Массив записей.
- •1.7.4. Записи с вариантами.
- •1.8. Статическая структура – множество.
- •Операции над множествами
- •3. Разность множеств: -
1.7.4. Записи с вариантами.
При определении комбинированного типа в него можно включать вариантную часть, что означает: разные переменные, относящиеся к одному типу, могут иметь различные структуры.
С помощью записей с вариантами можно одновременно сохранять различные структуры данных, которые имеют большую общую часть, одинаковую во всех структурах, и небольшие части, отличающиеся в различных структурах.
Вариантная часть записи начинается оператором CASE и следует за общей частью записи. После вариантной части в записи не могут быть описаны никакие другие поля, поэтому оператор CASE не закрывается служебным словом END.
Все варианты описываются внутри оператора CASE, каждый из которых характеризуется задаваемым в скобках списком описаний присущих ему компонентов.
TYPE
PERSON = RECORD
SURNAME, NAME, ADDRESS, CITY: STRING[20];
INDEX: LONGINT;
PHONE: STRING[12];
CASE HOBBY: (COMPUTER, MUSIC) OF
COMPUTER: (TYPECOMP: STRING[20];
MEMORY: BYTE);
MUSIC : (INSTRUM: ARRAY[1..3] OF STRING[10]);
END;
Дополнительное поле HOBBY определяет интересы персоны и, в зависимости от них, может иметь разную структуру: увлечение компьютерами – структура HOBBY имеет два поля, которые предназначены для хранения информации о типе компьютера TYPECOMP и об объеме его памяти MEMORY.
Особенностью вариантной части является то, что каждому из вариантов выделяется одна и та же область памяти из расчета на тот вариант, который имеет наибольшие поля (для представленного примера под запись в статической памяти будет выделено 134 байта).
1.8. Статическая структура – множество.
Множество – структурированный тип, подобно массивам и записям, но используется реже, хотя его применение в некоторых случаях является вполне оправданным; как массивы, объединяют однотипные элементы, поэтому в описании множества обязательно должен быть указан тип его элементов, но в отличие от массивов и записей, во множествах отсутствует возможность индексирования отдельных элементов.
Множественный тип данных строится на основе некоторого базового типа, в качестве которого используется любой ограниченный тип, кроме неограниченного целого и вещественного типов.
Структура объявления множественного типа:
TYPE
<имя_множественного_типа>=SET OF <базовый_тип>;
базовый_тип определяет конечное множество значений множественного типа; любые подмножества базового множества могут являться значениями переменных множественного типа.
TYPE
CITY=(MOSCOW, PETERSBURG, PARIS);
MNCITY=SET OF CITY;
VAR
P1, P2: MNCITY;
P3: SET OF ‘A’..’F’;
P4, P5: SET OF 0..9;
Переменные P1 и P2 множественного типа MNCITY могут принимать 23=8 различных значений:
[MOSCOW], [PETERSBURG], [PARIS],
[MOSCOW, PARIS], [MOSCOW, PETERSBURG], [PETERSBURG, PARIS],
[MOSCOW, PETERSBURG, PARIS], []
Переменной P3 присвоится одно и то же множественное значение в результате работы следующих операторов присвоения:
P3:=[‘A’,’B’,’C’,’D’,’E’,’F’];
P3:=[‘A’..’C’..’F’];
P3:=[‘A’,’B’,’C’..’F’];