Теоретический материал (Паскаль)
Логические операции над множествами: проверка принадлежности элемента множеству, проверка включения элемента в множество, сравнение множеств
Определение. Множества считаются равными, если все элементы, содержащиеся в одном множестве, присутствуют в другом, и наоборот.
В соответствии с этим правилом определяется результат операций сравнения "=" и "<>".
Например,
If WarmSeason*Vacation=Summer |
Задание. Сравните множества М1 и М2, пользуясь рисунками.
Проверка включения
Определение. Одно множество считается входящим в другое, если все элементы первого множества содержатся во втором, при этом обратное в общем случае может быть несправедливо.
Операции проверки вхождения одного множества в другое записываются как "<=" или ">="
if S1<=S2 |
Задание. Подумайте, что напечатает оператор Write в каждом из случаев:
1.
if Vacation>=Summer |
2.
if Vacation<=Summer |
Проверка принадлежности
Операция проверки принадлежности элемента множеству записывается с использованием оператора in.
Например, выражение
May in WarmSeason |
имеет значение True.
Использование множеств и операции in позволяет, в частности, сделать эффективнее проверку правильности вводимых символов.
Например, для проверки допустимости введенного символа можно использовать следующее условие:
(Reply='y') or (Reply='Y') or (Reply='n') or (Reply='N') |
Но если ввести множество
Const |
проверяемое условие можно записать в более компактной форме:
Reply in AllowSymbol |
Примечание. Множественный тип данных не может быть использован для определения функции.
Рассмотрите пример.
Задача. Описать множество М(1..50). Сделать его пустым. Вводя целые числа с клавиатуры, заполнить множество 10-ю элементами.
В разделе описания переменных опишем множество целых чисел от 1 до 50, переменную Х целого типа будем использовать для считывания числа-кандидата в множество, целую переменную i используем для подсчета количества введенных чисел.
В начале программы применим операцию инициализации множества М:=[ ]. Так множество в правой части оператора присваивания не имеет элементов, множество М будет пустым.
Заполнние множества организуем в цикле Repeat, параметр которого i будет указывать порядковый номер вводимого элемента. Операцию добавления элемента в множество запишем оператором присваивания М:=M+[X]. Перед добавлением элемента выполним его проверку на допустимость (0 < X < 50). При выполнении условия X in M выведем сообщение о том, что число Х уже принадлежит в множеству.
Текст программы описания и заполнения множества будет таким:
Program InputMno; |
Задание. Наберите рассмотренную программу, откомпилируйте ее. Проверьте работу программы, исполняя ее по шагам и наблюдая текущие значения переменных i, X, M в окне просмотра. Попробуйте задать значения числа большие 50, повторно задавать одинаковые значения Х и анализируйте значения множества М. Дополните программу выводом на экран содержимого полученного множества. Откомпилируйте программу.