- •Билет №2. Структурный тип множество.
- •1. Понятие о типе Множество в Турбо Паскале.
- •2. Описание типа Множество и константы-множества.
- •Var pr1, pr2: primes; { переменные типа primes}
- •3. Обработка множеств.
- •Два множества считаются эквивалентными, если они имеют одинаковые элементы (порядок перечисления элементов безразличен).
- •Билет №24. Алфавит языка, основные конструкции языка.
Билет №2. Структурный тип множество.
1. Понятие о типе Множество в Турбо Паскале.
Множество является ещё одним структурным типом Турбо Паскаля, служащим для объединения однородных (однотипных) элементов. Однако форма объединения в Множество существенно отличается от типа Массив. Если в Массиве все элементы линейно упорядочены, то в Множестве - элементы неупорядочены. Понятие Множества в Паскале во многом похоже на конечное множество в дискретной математике и оказывается весьма удобным при решении многих задач управления, оптимизации, поиска и др. Паскаль - один из немногих языков программирования, поддерживающий тип Множество.
Множество в Паскале - набор элементов одного и того же типа (порядкового типа или типа-диапазона), причем порядок элементов безразличен. Отсутствие порядка элементов означает, что нет прямого доступа к элементу множества, однако можно непосредственно проверить входит ли некоторый элемент в данное множество.
Преимуществом типа Множество по сравнению с типом Массив является то, что множество может изменять количество своих элементов при выполнении программы, т.е. оно имеет черты динамической структуры в отличие от статического массива. Однако динамизм множеств лишь относительный: в Паскале количество элементов множества не может быть больше 256. Следовательно, не любой порядковый тип может быть типом элементов множества, а лишь такой, который содержит не более 256 элементов (например, нельзя использовать тип integer, однако можно использовать диапазоны от типа integer).
2. Описание типа Множество и константы-множества.
Формально тип Множество определяется в Паскале как тип, константами (значениями) которого являются все возможные подмножества из элементов базового типа, включая пустое множество. Базовым может быть порядковый тип или его тип-диапазон, содержащий не более 256 элементов, и каждый элемент которого имеет порядковый номер, не более 255. Описание типа Множество имеет форму:
type < имя типа-множества> = set of < базовый тип >;
Как и для других типов, для использования типа Множество необходимо вначале определить переменные этого типа. Например:
type primes = set of 1..200; {множество простых чисел до 200}
Var pr1, pr2: primes; { переменные типа primes}
Константы типа Множество должны быть заключены в квадратные скобки (не путайте квадратные скобки для индексации элементов массива - которые всегда записываются только после имени массива, с квадратными скобками, выделяющими константы-множества !).
Одной из констант любого типа-множества является пустое множество, обозначаемое как []. Все другие константы-множества содержат один или более элементов, заключенных в общие квадратные скобки. Для образования констант-множеств используется конструктор множества - список спецификаций элементов множества, отделяемых запятыми и заключенный в квадратные скобки. Каждая спецификация может быть не только константой базового типа, но и произвольным выражением базового типа, а также типом-диапазоном этого же базового типа. Примеры конструкторов множеств:
[2] {множество из одного элемента 2}
[ 0, 2..5] {множество из элементов 0,2,3,4,5}
[1..200] {множество всех чисел базового типа 1..200}
Допускается использование обычных и типизированных констант-множеств, описание которых осуществляется с помощью конструктора множеств. Например:
const initset: set of 0..16 = [0,1,2,4,8,16]; const range=[2..100];