Основная операция над множеством – проверка наличия в нем искомого значения. Для выполнения этой проверки программа проверяет значение бита с порядковым номером, равным искомому значению. Данная операция обозначается IN. Ее очень удобно использовать при обработке ввода с клавиатуры, чтобы не различать заглавные и строчные буквы:
VAR a:CHAR; … READ(a); IF a IN [‘y’,’Y’,’д’,’Д’] THEN …
Подобный подход гораздо логичнее и проще, чем написание сложного условия вида IF (a='Y') OR (a='Y')…
Остальные три операции над множествами – объединение, пересечение и вычитание – требуют, чтобы оба участвующих в операции множества имели один и тот же базовый тип данных.
Объединениемножеств A+B образует новое множество, в которое входят элементы и первого, и второго исходных множеств. Поскольку одинаковых элементов в множествах не бывает по определению (один элемент – один бит), то при объединении два одинаковых элемента превращаются в один. Обозначается операция объединения знаком "+". Схематически операция объединения показана на Рис. 2.2.
Рис. 5.2. Объединение множеств.
Рассмотрим пример:
TYPE ts=SET OF CHAR; VAR a,b,c:ts; … a:=[’a’..’c’]; b:=[’d’..’f’]; c:=a+b;
Объединение множеств [’a’,’b’,’c’] и [’d’,’e’,’f’] приведет к результату ['a','b','c','d','e','f'].
Пересечениемножеств A*B заключается в нахождении тех элементов, которые есть и в первом множестве, и во втором. Операция пересечения обозначатся знаком "*". Ее схема показана на Рис. 2.3
Рис. 5.3. Пересечение множеств.
В нашем примере:
TYPE ts=SET OF CHAR; VAR a,b,c:ts; … a:=[’a’..’d’]; b:=[’d’..’f’]; c:=a*b;
Пересечение множеств [’a’,’b’,’c’, ’d’] и [’d’,’e’,’f’] приведет к результату ['d'] – этот элемент присутствовал в обоих множествах сразу. Если общих элементов нет, результатом пересечения будет пустое множество [].
Вычитаниемножеств A-B образует множество, в котором присутствуют только те элементы множества А, которых нет в множестве В (Рис. 2.4).
Рис. 5.4. Вычитание множеств.
Вычитание множеств [’a’,’b’,’c’, ’d’] и [’d’,’e’,’f’] приведет к результату [’a’,’b’,’c’] – эти элементы не присутствовали во втором множестве.
Массив(array) – самый распространенный сложный тип данных. Массив однороден: все его элементы имеют один и тот же базовый тип.Массив в памяти – структура данных с прямым доступом к каждому элементу (в отличие от файла на диске). Это означает, что для считывания содержимого элемента массива с номером 25 не нужно просматривать предыдущие 24 элемента (сравните CD и кассету). Нужный элемент в массиве находится по его индексу. В описании массива тип индекса также надо указывать. Таким образом, в описании массива присутствуют два типа данных: