C.10.7. Лекция 7 (2 часа) Множества
Множество- неупорядоченная совокупность неповторяющихся элементов одного типа, имеющих общее имя. Количество элементов множества может меняться в пределах от 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.
Дата добавления: 2014-12-24; просмотров: 2339;