Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции СД.doc
Скачиваний:
212
Добавлен:
19.03.2015
Размер:
1.81 Mб
Скачать
    1. 4.3. Множества

Множеством называется неупорядоченная совокупность элементов порядкового типа, элементами которого могут быть величины типов ShortInt, Byte, Char, а также интервального и перечисляемого. Элементы множества могут принимать все значения базового типа, их количество не должно превышать 256. В табл. 4.6 перечислены операции, которые определены над множествами S, S1, S2.

Табл. 4.6. Операции над множествами.

Обозначение

Название

Результат

e in S

Принадлежность элемента

e множеству S.

Логический.

S1 = S2

Равенство S1 и S2.

- « -

S1 <> S2

Неравенство S1 и S2.

- « -

S1 <= S2

Включение S1 в S2.

- « -

S1 => S2

Включение S2 в S1.

- « -

S1 + S2

Объединение S1 и S2.

Множество элементов,

принадлежащих S1 или S2.

S1 - S2

Разность S1 и S2.

Множество элементов S1,

не принадлежащих S2.

S1 * S2

Пересечение S1 и S2.

Множество элементов,

принадлежащих S1 и S2.

В языке Паскаль для задания типа-множества есть зарезервированные слова set и of с помощью которых следует указать элементы множества в виде перечисления или диапазона:

type

< имя > = set of < тип >;

где

< имя > – идентификатор типа множества;

< тип > – идентификатор или определение типа элементов.

Примеры определения множеств:

type

TNumber=setof0..9;

TOperation = set of (Plus, Minus, Mult, Divide);

TSymbols = setofChar;

Тип множества может быть определен и при объявлении переменных:

var

Symbols: TSymbols;

Operation: TOperation;

Digits:setof0..9;

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

Digits:=[1, 3, 5, 7, 9]; { нечетные цифры }

Symbols:=[‘A’..’Z’, ‘a’..’z’]; { латинский алфавит }

Символьные множества хранятся в памяти также как и числовые. Разница лишь в том, что хранятся не числа, а коды ASCII символов. Множество может быть пустым, т.е. не иметь ни одного элемента: Symbols:= [ ].

Множество в памяти хранится как массив битов, в котором каждый бит указывает, является ли элемент принадлежащим объявленному множеству или нет. Число байтов, выделяемых для данных типа множество, вычисляется по формуле:

ByteSize = (max div 8)-(min div 8)+1

где max и min – верхняя и нижняя границы базового типа данного множества.

Номер байта для элемента Е вычисляется по формуле:

ByteNumber = (E div 8)-(min div 8)

а номер бита внутри байта по формуле:

BitNumber = E mod8

Например, переменная следующего типа:

type

TVideo= (MDA,CGA,HGC,EGA,EGAm,VGA,VGAm,SVGA,PGA,XGA);

в памяти будет занимать:

ByteSize = (9 div8)-(0div8)+1 = 2 байта