Множество - неупорядоченная совокупность неповторяющихся элементов одного типа, имеющих общее имя. Количество элементов множества может меняться в пределах от 1 до 255. Описание типа множество имеет вид:
<имя типа > = Set Of <базовый тип >;
Здесь <базовый тип> - это тип элементов множества, в качестве которого может использоваться любой порядковый тип, кроме Integer. (В Турбо-Паскале также кроме типов Word, Shortint, Longint).
Для задания множества используется конструктор множества, заключенный в квадратные скобки список элементов множества, отделяемых друг от друга запятыми. Элементами могут быть константы или выражения базового типа, а также - тип-диапазон того же базового типа. Конструктор пустого множества имеет вид - [ ].
Пример 11.
Пример определения и задания множеств:
Type
digitChar = Set Of ‘0’.. ‘9’;
digit = Set Of 0.. 9;
Var
s1, s2, s3: digitChar;
s4, s5, s6: digit;
......
s1:= [‘1’, ‘2’, ‘3’];
s2:= [‘3’, ‘2’, ‘1’];
s3:= [‘2’, ‘3’];
s4:= [0..3, 6];
s5:= [4, 5];
s6:= [3..9];......
Над множествами определены следующие операции:
Операция
| Смысл
| Пример*
| Результат
|
*
| пересечение множеств
| s1*s3
| [‘2’, ‘3’]
|
+
| объединение множеств
| s4+s5
| [0..6]
|
-
| разность множеств
| s2-s3
| [‘1’]
|
=
| True, если множества
эквивалентны
| s1=s2
s1=s3
| True
False
|
<>
| True, если множества неэквивалентны
| s1<>s2
s1<>s3
| False
True
|
<=
| True, если первое множество содержится во втором
| s5<=s6
| True
|
>=
| True, если второе множество содержится в первом
| s2>=s3
| True
|
In
| проверка принадлежности значения выражения, стоящего слева множеству, стоящему справа
| 7-5 In s4
| True
|
* - примеры приведены согласно описаниям и конструкторам множеств в примере 11.
Пример 12.
Организовать ввод элементов трех множеств A, B, C. Вычислить и напечатать множества A + B, B * C, C - A.
Program CalcSet;
Type SetChar: Set Of Char;
Var A, B, C: SetChar;
{Процедура ввода множества}
Procedure EnterSet(Var D: SetChar);
Var ch: Char;
Begin
Writeln(‘Введите элементы множества, точка - конец ввода’);
Read(ch);
D:=[];
While ch<>‘.’ Do
Begin D:= D + [ch]; Read(ch) End;
End;{EnterSet}
{Процедура вывода множества}
Procedure PrintSet(D: SetChar);
Var i: Byte;
Begin For i:= 0 To 255 Do
If Chr(i) in D Then Writeln(Chr(i))
End;{PrintSet}
Begin {Основная программа}
Writeln(‘Введите элементы множества A’);
EnterSet(A);
Writeln(‘Введите элементы множества B’);
EnterSet(B);
Writeln(‘Введите элементы множества C’);
EnterSet(C);
PrintSet(A+B); PrintSet(B*C); PrintSet(C-A)
End.