Множество - структурированный тип данных, представляющий набор связанных по какому-либо признаку или группе признаков объектов, которые можно рассматривать как единое целое.
Каждый объект в множестве называется элементом множества. Элементы множества должны принадлежать одному из скалярных типов, кроме вещественного. Тип элементов называется базовым типом множества. Базовый тип задается диапазоном или перечислением. Область значений типа - набор всевозможных подмножеств, составленных из элементов базового типа. В выражениях значения элементов множества указываются в квадратных скобках: [1, 2, 3, 4] , ['a' , 'b' , 'c'] , ['a' .. 'z'].
Если множество не имеет элементов, оно называется пустым и обозначается как [ ].
Для описания множественного типа используется словосочетание set of (множество из).
Формат записи:
Type
<имя типа> = set of (<элемент1, элемент2,..., элементN>);
Var
<идентификатор1,...> : <имя типа>;
или без предварительного описания:
Var
<идентификатор1,...> : set of (<элемент1, ,..., элементN>);
Пример.
Type
ProstChislo = set of (3,5,7,11,13);
Nomer = set of 1..31;
Var
Pr: ProstChislo; { множества описаны
N: Nomer; в разделе Type}
Bukva: set of ('a', 'b', 'c'); { непосредственное описание}
Переменная Pr может принимать значения всевозможных подмножеств множества (3,5,7,11,13) и т.д.
Помни:
· Попытка присвоить этим переменным другие значения вызовет программное прерывание.
· Количество элементов множества не должно превышать 256, соответственно, номера значений базового типа должны находиться в диапазоне от 0 до 255.
· Объем памяти для переменной типа множество вычисляется по формуле Объем памяти = (Max div 8) - (Min div 8) + 1, где Max, Min - верхняя и нижняя границы базового типа.
Порядок перечисления элементов роли не играет, а каждый элемент учитывается только один раз. Потому множество {true, false} и множество {false, true} эквивалентны, а [1, 4, 2, 1, 4, 2, 1] эквивалентно [1, 2, 4]. Записи типа [5..5], [9..0] соответствуют [5] и пустому множеству [].
После задания базового типа совокупность значений соответствующего множественного типа определяется автоматически. В нее входят всевозможные подмножества, являющиеся произвольными комбинациями значений базового типа.
Известна теорема: всякое n-элементное множество имеет 2n подмножеств, где подмножество – любая часть множества.
При работе с множествами допускается использование операций отношения: = , <> , >= , <= , объединения, пересечения, разности множеств и операции in. Результат этих выражений имеет булевский тип (т.е. или True, или False).
операция "равно" ( = )
Два множества А и В называются равными, если они состоят из одних и тех же элементов. Порядок следования элементов в сравниваемых множествах значения не имеет.
Пример.
множество А множество В операция результат
[1,2,3,4] [2,3,1,4] A = B True
['a'..'z'] ['z'..'a'] A = B True
['a','b','c'] ['a'] A = B False
операция "неравно" ( <> )
Множество А неравно множеству В, если они отличаются по мощности или по значению хотя бы одного элемента.
Пример.
множество А множество В операция результат
[1,2,3,4] [2,3,5,4] A <> B True
['a'..'z'] ['z'..'c'] A = B False
['a','b','c'] ['a'] A <> B True
операция "больше либо равно" (>=)
Эта операция используется для определения принадлежности множеств. A>=B имеет результат True, если все элементы множества В содержатся в множестве А. В противном случае - результат False.
Пример.
множество А множество В операция результат
[1,2,3,4] [2,3,4] A >= B True
['a'..'f'] ['z'..'c'] A >= B False
['a','b','c'] ['a'] A >= B True
операция "меньше либо равно" (>=)
Эта операция используется для определения принадлежности множеств. A<=B имеет результат True, если все элементы множества A содержатся в множестве B. В противном случае - результат False.
Пример.
множество А множество В операция результат
[1,2,3] [0,1,2,3,4] A <= B True
['a'..'f'] ['h'..'p'] A <= B False
['a'] ['a','b','c'] A <= B True
операция in
Операция in используется для проверки принадлежности какого-либо значения указанному множеству. Обычно применяется в условных операторах.
Пример.
А выражение результат
2 if A in [2,3,4] then ... True
'a' if A in ['z'..'c'] then ... False
При использовании операции in проверяемое на принадлежность значение А и множество в квадратных скобках предварительного описания не требует. Операция in позволяет эффективно и наглядно производить сложные проверки условий, заменяя иногда десятки операций.
Пример.
if (a=1) or (a=2) or (a=3) or (a=4) then ...
можно заменить более коротким выражением
if a in [1..6] then ...
объединение множеств (+)
Объединением двух множеств называется третье множество, содержащее элементы и множества А и множества В.
Пример.
множество А множество В операция результат
[1,2,3,4] [4,5,6,7] A + B [1,2,3,4,5,6,7]
['a'..'f'] ['z'..'c'] A + B ['a',..'z']
['a','b','c'] ['a'] A + B ['a','b','c']
пересечение множеств (*)
Пересечением двух множеств называется третье множество, содержащее
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.