Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Билеты 16-30.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
30.62 Кб
Скачать

30 Вопрос

Множества

Множественный тип данных в языке Паскаль соответствует математическому представлению о множествах: это ограниченная совокупность различных элементов. Множество создается на основе элементов базового типа, он может быть перечисляемым, интервальным или byte. В множестве не может быть более 256 элементов.

Множество описывается с помощью служебных слов set of:

type имя_типа = set of базовый_тип;

Примеры:

type Caps = set of 'A' .. 'Z';

Colors = set of (RED, GREEN, BLUE);

Numbers = set of byte;

Принадлежность переменных к множественному типу может быть определена прямо в разделе описания переменных, например:

var oct : set of 0 .. 7;

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

['A', 'D'] [1, 3, 6] [2, 3, 10 .. 13].

Константа вида [ ] означает пустое подмножество.

Тип "множество" задает набор всех возможных подмножеств его элементов, включая пустое. Если базовый тип, на котором строится множество, имеет k элементов, то число подмножеств, входящих в это множество, равно 2k.

Переменная множественного типа содержит одно конкретное подмножество значений множества. Пусть имеется переменная bинтервального типа:

var b : 1 .. 3;

Эта переменная может принимать три различных значения: 1, 2 или 3. Переменная m множественного типа

var m : set of 1 .. 3;

может принимать восемь различных значений:

[ ] [1] [2] [3] [1, 2] [1, 3] [2, 3] [1, 2, 3]

Порядок перечисления элементов базового типа в константах безразличен.

Операции над множествами

Величины множественного типа не могут быть элементами списка ввода-вывода. Допустимые операции над множествами перечислены в таблице:

Знак Название Математическая запись Результат

:= присваивание

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

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

- дополнение \ множество

= тождественность = логический

<> нетождественность  логический

<= содержится в  логический

>= содержит  логический

in принадлежность логический

Пример 2

Рассмотрим примеры применения операций.

Пусть задано множество, основанное на значениях прописных латинских букв:

type Caps = set of 'A' .. 'Z';

var a, b, c : Caps;

begin

a := ['A', 'U' .. 'Z'];

b := [ 'M' .. 'Z'];

c := a; { присваивание }

c := a + b; { объединение, результат ['A', 'M' .. 'Z'] }

c := a * b; { пересечение, результат ['U' .. 'Z'] }

c := b - a; { вычитание, результат ['M' .. 'T'] }

c := a - b; { вычитание, результат ['A'] }

if a = b then writeln ('тождественны'); { не выполнится }

if a <> b then writeln ('не тождественны'); { выполнится }

if c <= a then writeln ('c содержится в а'); { выполнится }

if 'N' in b then writeln ('в b есть N'); { выполнится }

end.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]