Название | Форма | Комментарий | |
= | Проверка на равенство | S1=S2 | Результатом будет логическое равенство значение, равное True, если S1 и S2 состоят из одинаковых элементов независимо от порядка следования, и False в противном случае |
<> | Проверка на неравенство | S1<>S2 | Результатом будет логическое неравенство значение, равное True, если S1 и S2 отличаются хотя бы одним элементом, False в противном случае |
<= | Проверка на подмножество | S1<=S2 | Результатом будет логическое подмножество значение, равное True, если все элементы S1 содержатся и в S2 независимо от их порядка следования, и равное False в противном случае |
>= | Проверка на надмножество | S1>=S2 | Результатом будет логическое надмножество значение, равное True, если все элементы S2 содержатся в S1 , и False в противном случае |
- 145 -
in | Проверка вхождения элемента в множество | E in [...] E in S1 | Результатом будет логическое значение True, если значение E принадлежит базовому типу множества и входит в множество [ ... ] (S1). Если множество не содержит в себе значения E, то результатом будет False |
+ | Объединение множеств | S1+S2 | Результатом объединения будет множеств множество, полученное слиянием элементов этих множеств и исключением дублированных элементов |
- | Разность множеств | S1-S2 | Результатом операции взятия разности S1-S2 будет множество, составленное из элементов, входящих в S1, но не входящих в S2 |
* | Пересечение множеств | S1*S2 | Результатом пересечения будет множеств множество, состоящее только из тех элементов S1 и S2, которые содержатся одновременно и в S1, и в S2 |
Как видно, операции над множествами разделяются на операции сопоставления множеств и операции, создающие производные множества. И те, и другие будут работать лишь в том случае, когда их операнды сопоставимы. Это означает, что в операциях могут участвовать только те множества, которые построены на одном базовом типе (так, несопоставимы множества значений типа Char и типа Byte).
Операции сопоставления всегда двухместные. Результатом операции сопоставления будет логическое значение True или False. В этом смысле они близки операциям сравнения. Рассмотрим некоторые примеры сопоставлений (в них X — обозначение переменной базового типа множества, a S — обозначение некоего непустого сопоставимого множества) (рис. 7.2).
Операция проверки вхождения в множество in бывает очень полезна при проверке попадания в диапазоны перечислимых типов:
if Ch in ['а', 'х', 'А', 'Х'] then ...
if J in [ 100..200 ] then ...
В подобных конструкциях можно указывать множество-константу
- 146 -
ИСТИННО | ЛОЖНО |
[ 1, 2, 3] = [ 1, 3, 2] [ 5, X ] = [ X, 5 ] [] = [] [ 1, 2 ] <> [ 1 ] [ 5, X ] <> [ 5, Х+1 ] ['a','b'] <= [ 'a'..'z' ] [] >= S [X, Х+1] >= [ Х+1 ] 5 in [0..5] [] in [0..5] | [ 1, 2 ] = [1] [ 5, X ] = 5, Х+1 ] [] = [1] [ 1, 2, 3] <> [1, 3, 2] [ 5, X ] <> X, 5 ] ['0'..'9']<=[a]…[z] []>=S [1..3]>=[0..4] X in [X-1, X-2] X in [] |
Рис. 7.2
справа от оператора in, не вводя промежуточных описаний переменных-множеств .