- •9.1. Типы данных char и string
- •9.1.1. Символьный тип
- •9.1.2. Строковый тип
- •9.2. Операции над строками
- •9.2.2. Операции отношения
- •I Листинг 9.4. Слияние двух отсортированных массивов строк,
- •9.3. Строковые процедуры и функции
- •9.3.1. Процедуры удаления и вставки символов
- •9.3.3. Процедуры преобразования типов
- •9.3.2. Функции для работы со строками
- •9.4. Примеры программ обработки строк
- •9.4.1. Вставка, удаление
- •9.4.2. Преобразование строчных букв в заглавные
- •10.1. Понятие множества
- •10.2. Операции над множествами
- •10.3. Формирование
- •11.1. Определение и правила записи
- •11.2. Записи с вариантами
10.1. Понятие множества
Множество — это набор элементов одинакового типа, которые рассматриваются как единое целое. Элементы множества не пронумерованы, следовательно, нельзя обратиться к отдельному элементу множества по его индексу. Поэтому множества используются в тех задачах, где порядок следования элементов данных не имеет значения (например, множество гласных или согласных букв, множество ходов шахматной фигуры из определенного положения и т. д.).
Тип элементов множества называется базовым типом множества. Область значений типа множества — набор всевозможных подмножеств, составленных из элементов базового типа.
В языке Turbo Pascal имеются ограничения на базовый тип. Это может быть только порядковый тип, количество значений которого не превышает 256. Из простых типов к таким относятся char, byte, boolean. Разрешается использовать перечисляемый тип и диапазон (если он включает не больше 256 элементов).
Это существенные ограничения, которые не позволяют использовать множества в серьезных задачах обработки данных. Все же для ряда задач применение множеств может обеспечить серьезные преимущества по сравнению с использованием других структур данных — массивов или строк.
При задании значений элементов множества применяются квадратные скобки.
Например: [1,2,3,4], ['а','Ь','с1Ь ['а' .. 'г'}
Если множество не имеет элементов, оно называется пустым и обозначается []. Пустое множество включено в любое другое.
Для объявления множественного типа используется словосочетание set of (множество из ...). Формат объявления множественных типов следующий:
type
ИмяТипа = set of ТипЭлементовМножества; var
ИмяПеременной, ... : ИмяТипа;
Можно описать переменные множественного типа и без предварительного объявления типа:
var ИмяПеременной, ... : set of Тип;
Можно объявить константы множественного типа:
const ИмяКонстанты=[ЗначениеМножества];
а также типизированные константы:
const ИмяКонстанты:ТипМножест'ва= [ЗначениеМножества] ;
Например:
const number - [1,4,7,9]; type simply = set of 'a'.-'h1;
var pr : simply;
letter : set of char; {без предварительного описания в разделе типов}
В данном примере в множество рг могут входить значения символов латинского алфавита от 'а' до 'h1; в множество letter — значения любых символов. Попытка присвоить другие значения вызовет ошибку выполнения.
Замечание
В памяти множества представлены особым образом. Каждому значению базового типа множества в памяти отводится 1 бит (не байт!). Следовательно, максимальный размер ячейки памяти, отводимой под множество, составляет 32 байта. Поскольку все значения порядкового типа расположены строго по порядку, 1 в соответствующем бите означает наличие данного значения в множественной переменной, а 0 — отсутствие.
Исходя из особенностей внутреннего представления множеств, можно сделать два основных вывода:
П в множестве не может быть одинаковых элементов, что согласуется и с нашими математическими знаниями;
П все операции над множествами выполняются значительно эффективней, чем над другими структурами данных.
