Здесь мы перечислим основные операции над множествами.
1. Объединением двух данных множеств называется множество элементов, принадлежащих хотя бы одному из этих множеств. Знак операции объединения - "+".
Рис.1. Объединение двух множеств
Приведем примеры объединения множеств.
2. Пересечением двух множеств называется множество элементов, принадлежащих одновременно и первому, и второму множеству. Знак операции пересечения множеств - "*".
Рис.2. Пересечение двух множеств
Приведем примеры объединения множеств.
3. Разностью двух множеств называется множество, состоящее из тех элементов первого множества, которые не являются элементами второго. Знак операции вычитания множеств следующий: "-".
Рис.3. Разность двух множеств
Приведем примеры вычитания множеств.
4. Операция определения принадлежности элемента множеству. Ее общий вид следующий:
Рис.4. Операция проверки принадлежности элемента множеству
Эта логическая операция обозначается служебным словом in. Результат операции имеет значение True (истина), если элемент входит в множество, и False (ложь) в противном случае.
Приведем примеры.
Эту операцию удобно применять в случае множественной проверки. Например, вместо такого "длинного" оператора: If (ch='d') or (ch='D') or (ch='Д') or (ch='д') then <действие>; можно записать его "более короткий" аналог: If ch in ['d','D','Д','д'] then <действие>;.
5. Сравнение множеств. Для сравнения множеств используют следующие операции:
Приведем примеры.
В заключение приведем пример программы выделения следующих множеств из множества чисел от 1 до 20:
Program Videlenie; Type N=Set Of 1..20; {Описание множества целых чисел от 1 до 20.} Var N2:N; {Множество чисел, кратных 2.} N3:N; {Множество чисел, кратных 3.} N6:N; {Множество чисел, кратных 6.} N23:N;{Множество чисел, кратных 2 или 3.} i:Integer; Procedure Print (M:N); {Процедура вывода элементов полученных множеств. } {Входной параметр - переменная типа множество целых} {чисел от 1 до 20. } Var j:Integer; Begin Write('[ '); For j:=1 To 20 Do If j in M Then Write (j:3); Writeln(' ]'); End; Begin N2:=[]; {Начальные значения множеств.} N3:=[]; For i:=1 To 20 Do {Формирование множеств N2 и N3.} Begin {Если число делится на 2, то заносим его в N2.} If i mod 2=0 Then N2:=N2+[i]; {Если число делится на 3, то заносим его в N3.} If i mod 3=0 Then N3:=N3+[i]; End; N6:=N2*N3; {Пересечение множеств.} N23:=N2+N3; {Объединение множеств.} {Вывод полученных множеств.} WriteLn('Числа, кратные двум: '); Print(N2); WriteLn('Числа, кратные трем: '); Print(N3); WriteLn('Числа, кратные шести: '); Print(N6); WriteLn('Числа, кратные двум или трем: '); Print(N23); End.
Обратите внимание, что переменной типа "множество" нельзя присвоить значение
напрямую с клавиатуры, как это возможно, например, с переменной целого типа. Также
нельзя стандартным образом вывести значение переменной типа "множество", например,
на экран. Все эти особенности отражены в тексте приведенной программы.
. . . .
N2:=[];
i:=300;
N2:=N2+[i];
. . . .
Ответ и комментарии вы можете посмотреть
здесь.
На следующем шаге мы приведем несколько задач, иллюстрирующих применение множеств.