Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОСНОВЫ АЛГОРИТМИЗАЦИИ.doc
Скачиваний:
188
Добавлен:
16.03.2015
Размер:
1.82 Mб
Скачать

13.1. Объявление множества

Всему множеству в целом даётся имя, которое объявляется в разделе var или type. Для описания множественного типа используется словосочетание SET OF (множество из …).

TYPE <имя типа> = SET OF <базовый тип>;

VAR <имя множества> : <имя типа>;

Здесь, <имя типа> - правильный идентификатор;

SET OF – зарезервированные слова (множество, из);

<базовый тип> - базовый тип элементов множества, в качестве которого может использоваться любой порядковый тип, кроме WORD, INTEGER, LONGINT.

Пример 13.1.

TYPE m = set of char;

CONST d1 : m = [‘0’..’9’];

d2 : m = [‘a’..’z’, ’A’..’Z’];

Пример 13.2.

TYPE m = 11..19;

m1 = set of ‘a’..’f’;

VAR a : set of m;

a1 : m1;

a2 : set of 1..31;

Пример 13.3.

TYPE

DigitChar = set of ‘0’..’9’;

Digit = set of 0..9;

VAR

S1, S2, S3 : DigitChar;

S4, S5, S6 : Digit;

Begin

…..

S1 := [‘1’, ‘2’, ‘3’];

S2 := [‘3’, ‘2’, ‘1’];

S3 := [‘2’, ‘3’];

S4 := [0..3, 6];

S5 := [4, 5];

S6 := [3..9];

…..

End.

Множество, не содержащее элементов, называется пустым или нуль множеством, и обозначается [].

Например, const M = [];

Здесь, множества S1 и S2 эквивалентны, а множество S3 включено в S2, но не эквивалентно ему.

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

  1. Объединение А и В есть новое множество, состоящее из элементов, принадлежащих множеству А или В, или тому и другому одновременно.

Например,

S4 + S5 содержит [0, 1, 2, 3, 4, 5,6];

S5 + S6 содержит [3, 4, 5, 6, 7, 8, 9];

Объединять можно только множества одного базового типа.

  1. Пересечение А * В есть новое множество, состоящее из элементов, принадлежащих и А, и В.

Например,

S4 * S6 содержит [3,6];

S4 * S5 – пустое множество.

  1. Разность А – В есть новое множество, состоящее только из тех элементов А, которых нет в В (из А убираются все элементы, которые обнаружены в В).

Например,

S6 – S5 содержит [3, 6, 7, 8, 9];

S4 – S5 содержит [0, 1, 2, 3, 6];

13.3. Сравнение множеств

В Паскале множества сравнивают между собой применяя операции отношения.

  1. Два множества А и В равны, если каждый элемент множества А является элементом множества В и наоборот, то есть А = В.

  2. Множество А есть подмножество множества В, если каждый элемент А присутствует в В: А <= В или В >= А.

  3. Принадлежность множеству (оператор in). Пусть А – множество элементов базового типа, а X – переменная этого типа. Выражение X in A истинно, если X является элементом множества А.

Например,

3 in S6 возвращает TRUE;

2 * 2 in S1 возвращает FALSE;

Дополнительно к этим операциям можно использовать две процедуры: INCLUDE - включает новый элемент во множество.

Обращение к процедуре:

Include (s, I);

Здесь, S – множество, состоящее из элементов базового типа;

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

И вторая процедура EXCLUDE – исключает элемент из множества.

Обращение к процедуре имеет вид:

EXCLUDE (S, I);

Например,

VAR

chars1, chars2, chars3 : set of char;

…..

chars1 := [‘a’, ‘x’, ‘o’];

chars2 := chars1 – [‘a’]; {то есть chars2 = [‘o’, ‘x’];}

chars3 := chars1 + chars2 + [‘e’]; {то есть chars3 = [‘a’, ‘x’, ‘e’, ‘o’]}

not(‘g’inchars2) – ‘g’ не является элементомchars2.

Выражение

chars1 <> chars2 – множества не совпадают по составу входных элементов;

chars1 >= chars2 – каждый элемент chars2 присутствует и в chars1;

chars1 <= chars3 – каждый элемент chars1 присутствует и в chars3;

‘a’ in chars1 – элемент ‘a’ присутствует во множестве chars1;