Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование(лекции).pdf
Скачиваний:
183
Добавлен:
14.02.2015
Размер:
1.89 Mб
Скачать

Лекция 12. Множества

Лекция 12. Множес тва

Одним из фундаментальных разделов математики является теория множеств. Некоторые моменты математического аппарата этой теории реализованы в Паскале через множественный тип данных (множества).

Множеством называется совокупность однотипных элементов, рассматриваемых как единое целое. Реализация Паскаля обычно определяет предельный размер множеств, причем он может быть достаточно небольшим. Этот предел непосредственно связан с диапазоном значений базового типа данного множественного типа.

В отличие от элементов массива элементы множества не пронумерованы, не упорядочены. Каждый отдельный элемент множества не идентифицируется, и с ним нельзя выполнить какие-либо действия. Действия могут выполняться только над множеством в целом.

Тип элементов множества называется базовым типом. Базовый тип может быть любым порядковым за исключением word, integer, longint.

Конс трук тор множес тва

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

[ 3

, 4 , 7 , 9 , 12 ] множество из пяти целых чисел ;

[ 1

. . 100 ]

множество целых чисел от 1до 100;

[ 'а', 'b', 'с' ]

множество ,содержащее три литеры a, b,с ;

[ 'А' . . 'Z' , '?' , '!' ] множество ,содержащее все прописные латинские буквы ,а также знаки ? и !.

Символы [] обозначают пустое множество, т.е. множество, не содержащее никаких элементов.

Не имеет значения порядок записи элементов множества внутри конструктора. Например, [1, 2, 3 ] и [3, 2, 1] эквивалентные множества.

Каждый элемент в множестве учитывается только один раз. Поэтому множество [ 1, 2, 3, 4, 2, 3, 4, 5 ] эквивалентно [ 1. . 5 ].

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

Описание типа множества имеет вид: type

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

Переменные множественного типа описываются так: var

<имя переменной>: set of <базовый тип>;

Например: type

53

П.П.Кудрявцев. Курс лекций по дисциплине: "Информатика и программирование"

Colors = set of (Black, White, Red); var

C: Colors;

В : set of 'a'..'z';

Нельзя вводить значения во множественную переменную оператором ввода и выводить оператором вывода. Множественная переменная может получить конкретное значение только в результате выполнения оператора присваивания следующего формата:

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

Например:

C := [Black, Red]; C := [];

C := [White];

В : = ['m', 'n', 'k'];

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

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

В Паскале реализованы основные операции теории множеств. Это объединение, пересечение, разность множеств. Во всех таких операциях операнды и результаты есть множественные величины одинакового базового типа.

Объединение множеств. Объединением двух множеств А и В называется множество, состоящее из всех элементов, принадлежащих хотя бы одному из множеств А или В. Знак операции объединения в Паскале «+».

Например:

результатом выполнения операции [1, 2, 3, 4] + [3, 4, 5, 6] будет [1, 2, 3, 4, 5, 6]

Пересечение множеств. Пересечением двух множеств А и В называется множество, состоящее из всех элементов принадлежащих, одновременно множеству А и множеству В. Знак операции пересечения в Паскале «*».

Например:

результатом выполнения операции [1, 2, 3, 4] * [3, 4, 5, 6] будет [3, 4]

Разность множеств. Разностью двух множеств А и В называется множество, состоящее из элементов множества А, не принадлежащих множеству В.

Например:

[1, 2, 3, 4] - [3, 4, 5, 6] получим [1, 2] [3, 4, 5, 6] - [1, 2, 3, 4] получим [5, 6]

Очевидно, что операции объединения и пересечения перестановочны , а разность множеств не перестановочная операция .

Операции отношения. Множества можно сравнивать между собой, т.е. для них определены операции отношения. Результатом отношения является логическая величина. Для множеств применимы все операции отношения, за исключением > и <. В таблице описаны операции отношения над множествами. Предполагается, что множества А и В

54

Лекция 12. Множества

содержат элементы одного типа.

Отношение

Результат

 

 

True

False

 

 

 

А = В

Множества А и В совпадают

В противном случае

А <> В

Множества А и В не совпадают

В противном случае

А <= В

Все элементы А принадлежат В

В противном случае

А >= В

Все элементы В принадлежат А

В противном случае

 

 

 

Примеры использования операций отношения.

Пусть переменная M описана в программе следующим образом: var

M:set of byte;

Вразделе операторов ей присваивается значение:

М := [3, 4, 7, 9];

Тогда операции отношения дадут следующие результаты:

М = [4, 7, 3, 3, 9] -

true,

M <> [7, 4, 3, 9]

-

false,

[3, 4] <= М

-

true,

[] <= М

-

true,

М >= [1..10]

-

false,

М <= [3..9]

-

true.

Операция вхождения. Это операция, устанавливающая связь между множеством и скалярной величиной, тип которой совпадает с базовым типом множества. Если х такая скалярная величина, M множество ,то операция вхождения записывается так :

х in M

Результат логическая величина true,если значение х входит в множество M,и false в противном случае. Для описанного выше множества

4 in M — true,

5 in M — false.

Процедуры include и exclude

Дополнительно к перечисленным выше операциям можно использовать две процедуры. include включает новый элемент во множество .Обращение к процедуре : include(s, i);

где:

s множество ,

i элемент ,тип которого совпадает с базовым типом множества .

55