В разделе var множества описываются следующим образом:
| var <имя_множества>: set of <тип_элементов_множества>; |
Элементы могут принадлежать к любому порядковому типу, размер которого не превышает 1 байт (256 элементов). Например:
| var s1: set of char; {множество из 256-ти элементов} s2: set of 'a'..'z','A'..'Z'; {множество из 52-х элементов} s3: set of 0..10; {множество из 11-ти элементов} s4: set of boolean; {множество из 2-х элементов} |
Множество-константа
Неименованная константа
Множество можно задать неименованной константой прямо в тексте программы. Для этого необходимо заключить список элементов создаваемого множества в квадратные скобки:
| [<список_элементов>] |
Список элементов может быть задан перечислением элементов нового множества через запятую, интервалом или объединением этих двух способов. Элементы и границы интервалов могут быть переменными, константами и выражениями. Если левая граница интервала окажется больше правой, результатом будет пустое множество.
Примеры конструирования и использования различных множеств:
| if c in ['a','e','i','o','u'] then writeln('Гласная буква'); if set1 < [k*2+1..n,13] then set1:=[]; |
Нетипизированная константа
Множество - это структурированный тип данных, поэтому его невозможно задать нетипизированной константой.
Типизированная константа
Задать множество как типизированную константу можно в разделе const:
| <имя_константы>:set of <тип_элементов> =[<список_элементов>]; |
Например:
| type cipher = set of '0'..'9'; const odds: cipher = ['1','3','5','7','9']; vowels: set of 'a'..'z' = ['a','o','e','u','i']; |
Операции с множествами
Все теоретико-множественные операции реализованы и в языке Pascal:
| 1) Пересечение двух множеств s1 и s2: | s:=s1*s2; |
| 2) Объединение двух множеств s1 и s2: | s:=s1+s2; |
| 3) Разность двух множеств s1 и s2 (все элементы, которые принадлежат множеству s1 и одновременно не принадлежат множеству s2): | s:=s1-s2; |
| 4) Проверка принадлежности элемента el множеству s (результат этой операции имеет тип boolean): | el in s |
| 5) Обозначение для пустого множества: | [] |
| 6) Создание множества из списка элементов: | s:=[ e1,_,eN]; |
| 7) Проверка двух множеств на равенство или строгое включение (результат этих операций имеет тип boolean): | s1 = s2 s1 > s2 s1 < s2 |
Не существует никакой процедуры, позволяющей распечатать содержимое множества. Это приходится делать следующим образом:
| {s: set of type1; k: type1} for k:= min_type1 to max_type1 do if k in s then write(k); |






