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

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 — отсутствие.

Исходя из особенностей внутреннего представления множеств, можно сде­лать два основных вывода:

П в множестве не может быть одинаковых элементов, что согласуется и с нашими математическими знаниями;

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