Переменная, относящаяся к типу множество, может содержать любую комбинацию величин, взятых из базового ординального типа. Каждая величина базового типа может принадлежать и не принадлежать этому множеству. Описатель множества выглядит так:
SET OF базовый тип
Базовым типом может являться любой ординальный тип, содержащий не более 256 элементов. Например: VAR set1,set2,even,anyset: SET OF 0..100;
Конструктором множества является заключенный в квадратные скобки список (через запятую) элементов множества (элементов базового типа). Элементы могут задаваться в виде выражения базового типа, либо в виде диапазона между двумя значениями, заданными выражениями. Например:
set1:=[1..20];
even:=[2,4,6,8,10,12,14,16,18,20];
set2:=[15..25];
anyset:=[3,3+2,11..15,17..4*5];
Над данными типа множество определены следующие операции:
- set1=set2 - сравнение (результат операции - FALSE);
- set1<>set2 - сравнение на несовпадение (TRUE);
- set2<=set1- входит ли set2 как подмножество в set1? (FALSE);
- set1>=even- содержит ли set1 как подмножество even? (TRUE);
- 5 in set1 - является ли 5 элементом множества set1? (TRUE).
- set1+set2 - объединение множеств - множество [1..25],
- set1*set2 - пересечение множеств - множество [15..20],
- set1-even - разность множеств - множество нечетных чисел меньших 20.
Вместо оператора cifra:=(c>='0') and (c<='9') в программе Enter_int (см. лекцию 7) можно использовать более ясную и лаконичную конструкцию
cifra:=c in ['0'..'9'].
В TP множество реализуется как последовательность бит, с помощью которой устанавливается, принадлежит (1) или нет (0) элемент, номер которого совпадает с порядковым номером бита, данному множеству. Таким образом, для базового типа из K элементов каждое множество задается строкой из K бит.