Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Структурированные типы данных..doc
Скачиваний:
6
Добавлен:
05.09.2019
Размер:
98.82 Кб
Скачать

6.5. Множество

В языке Паскаль типом-множеством называется множество-степень исходного множества объектов порядкового типа, т. е. множество всевозможных сочетаний объектов исходного множества. Число элементов исходного множества в Turbo Pascal не может быть больше 256, а порядковые номера элементов (т. е. значение функции Ord) должны находиться в пределах от 0 до 255.

Для задания типа-множества следует использовать зарезервированные слова set и of, а затем указать элементы этого множества, как правило, в виде перечисления или диапазона, например:

type

Alfa = set of 'A'..'Z';

Count = set of (Plus, Minus, Mult, Divid);

Ten = set of 0..9;

Number = set of '0'..'9' ;

Введя тип-множество, можно задать переменные или типизированные константы этого

типа-множества. При задании значений константе-множеству ее элементы перечисляются через запятую (допустимо указывать диапазоны) и помещаются в квадратные скобки. Например, для введенных выше типов можно задать такие переменные и типизированные константы:

var

CharVal: Alfa;

Operation: Count;

const

Index: Ten = [0, 2, 4, 6, 8];

Digit: Number = ['0'..'9'];

Примечание.

Так же как и для других структурированных типов, тип-множество можно ввести непосредственно при задании переменных или типизированных констант:

var

CharVal: set of 'A'..'Z';

Operation: set of (Plus, Minus, Mult, Divid);

const

Index: set of 0..9 = [0, 2, 4, 6, 8];

Digit: set of '0'..'9'=['0'..'9'];

Множеству можно в программе присвоить то или иное значение. Обычно значение задается с помощью конструктора множества. Конструктор задает множество элементов с помощью перечисления в квадратных скобках выражений, значения которых дают элементы этого множества. Допустимо использовать диапазоны элементов.

Пример. Следующие структуры являются конструкторами множеств:

[Plus, Minus]

[1..К mod 12, 15]

[Chr(0)..Chr(31), 'A' , 'В' ]

В каждое множество включается и т. н. пустое множество [ ], не содержащее никаких элементов.Конструктор множества можно использовать и непосредственно в операциях над множествами.

Для множеств определены следующие операции:

+ - объединение множеств;

- - разность множеств;

* - пересечение множеств;

= - проверка эквивалентности двух множеств;

<> - проверка неэквивалентности двух множеств;

<= - проверка, является ли левое множество подмножеством правого множества;

>= - проверка, является ли правое множество подмножеством левого множества;

in - проверка, входит ли элемент, указанный слева, в множество, указанное справа.

Результатом операции объединения, разности или пересечения является соответствующее

множество, остальные операции дают результат логического типа.

Пример.

Ввести строку символов, состоящую из латинских букв, цифр и пробелов.

Осуществить проверку правильности введенных символов.

program EXAMPLE13;

var

Str: string;

L: Byte;

Tru: Boolean;

begin

WriteLn('Введите строку');

ReadLn(Str);

L := Length(str); {число введенных символов}

Tru := L > 0; {true, если не пустая строка}

while Tru and (L > 0) do {проверка с конца строки}

begin

Tru:=Str[L] in ['0'..'9', 'A'.,'Z', 'a'..'z', ' '];

{проверка допустимости символа}

Dec(L) {предыдущий символ}

end;

if Tru then

WriteLn('Правильная строка') else

WriteLn('Неправильная строка')

end.