Пример 1. Пусть в нашем распоряжении имеется множество из трех монет разного достоинства: 1 к, 5 к, 10 к. Из этих монет можно составить следующие подмножества (их число равно 2? = 8):
Эти подмножества и будут принадлежать некоторому множеству, тип которого назовем SUM; сами элементы (монеты), из которых составляется подмножество, пусть принадлежат некоторому базовому типу, который назовем MONET.
Опишем типы данных этого примера:
Пример 2. Рассмотрим в качестве элементов базового типа сигналы от 4-х абонентов (АВ1, АВ2, АВЗ, АВ4), поступающие па телефонную станцию. Обозначим базовый тип через ABONENT:
тогда комбинации сигналов можно описать переменной типа "множество". Назовем этот тип SIGN:
Тип SIGN описывает такие комбинации:
1) только АВ1; 2) только АВ2; 3) только АВЗ; 4) только АВ4;
5) АВ1 и АВ2; 6) АВ1 и АВЗ; 7) АВ1 и АВ4; 8) АВ2 и АВЗ; 9) АВ2 и АВ4; 10) АВЗ и АВ4; 11) АВ1, АВ2 и АВЗ; 12) АВ1, АВ2 и АВ4;
13) АВ1, АВЗ и АВ4; 14) АВ2, АВЗ и АВ4; 15) АВ1, АВ2, АВЗ и АВ4; 16) отсутствие сигналов;
В общем виде тип "множество" описывается так:
Здесь А - идентификатор типа (произвольный); ТС - тип компонент множества, называемый базовым типом.
Значение переменной типа "множество" изображается путем перечисления конкретных компонент, разделенных запятыми и заключенных в квадратные скобки.
Пример 3. Пусть базовый тип INT и тип А заданы так:
Переменная типа А в этом случае может принимать следующие значения: [1], [3], [2], [1, 3], [1, 2], [3, 2], [1, 3, 2], [ ], где [ ] означает пустое множество. Например, если переменная В имеет тип А, то можно присвоить ей одно из значений: В: = [1,3]; В:= [1,3,2]; и т. д.
Пример 4. Если базовый тип описывает набор двоичных бит, то можно получить их комбинацию. Пусть
Переменная типа BTS может принимать значения: [BIT1],[BIT2], [BIT3],[BIT1,BIT2],[BIT1,BIT3],[BIT2,BIT3],[BIT1,BIT2,BIT3],
[ ].
Таким образом, используя переменные типа SET, можно работать с битовой информацией.
Паскаль допускает множества, состоящие из ограниченного числа элементов N ≤ NMAX, где NMAX - машинозависимая константа:
В качестве базового типа можно использовать любой простой тип, кроме REAL. Если в качестве базового типа выбран тип CHAR, то допускается использовать не более NMAX первых символов, имеющихся в распоряжении транслятора. Если задача требует использования множества, состоящего из большего числа элементов, то его можно представить как массив множеств, состоящих из допустимого числа элементов.
Для ограниченных типов от базового типа INTEGER можно использовать в качестве компонент целые числа от нуля до N ≤NMAX - 1