Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Delphi, Pascal.docx
Скачиваний:
8
Добавлен:
26.04.2019
Размер:
566.19 Кб
Скачать

17. Понятие множеств в языке Pascal. Как они описываются? Какие операции над ними допустимы? Привести примеры их полезного использования.

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

Для работы с множествами в Паскале введен тип переменных set of:

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

var A,B,C: имя типа;

здесь <базовый тип> - любой порядковый тип кроме Word, Integer, Longint, т.е. (перечисляемый, интервальный, char, byte, boolean).

Множество-константа: [i1, i2, …, ik], где ik – элементы множества.

Операции над множествами: сложения, вычитания, умножения, вхождения

Объединением 2-х множеств A и B наз-тся множество, состоящее из элементов, входящих хотя бы в одно из множеств A или B(знак операции +): D=A+B={ω1, ω2, ω3, ω4, ω5}, множество D состоит из элементов, входящих или в А или в В.

Разность 2-х множеств A и B наз-тся множество, состоящее из элементов множества A, не входящих во множество B (знак операции -): Е=А-В={ω2,ω5}, множество Е состоит из элементов множества А, не входящих в В.

Пересечение 2-х множеств A и B наз-тся множество, состоящее из элементов, одновременно входящих во множество A и во множество B (знак операции *):F=A*B={ω1, ω4}, множество F состоит из элементов, одновременно входящих в А и в В.

Вхождение- это операция, устанавливающая связь между множеством и скалярной величиной, тип которой совпадает с базовым типом множества. Если x - такая скалярная величина, а M - множество, то операция вхождения записывается так: x in M. Результат - логическая величина true, если значение x входит в множество M, и false - в противном случае.

Эти операции дополняют две процедуры:

Include (S, i); - добавление в множество S элемента i, базового типа;

Exclude (S, i); - исключение из множества S элемента i, базового типа.

Эти операции выполняются значительно быстрее, чем их эквивалентные s:=s+[i]; s:=s-[i];

Примеры описаний:

1. Ввод n элементов множества:

......

Var A:set of char;

s:char;

n:Word;

begin

A:=[ ]; // Очистка множества

for i:=1 to n do begin

read(s);

A:=A+[s];

end;

end.

2. Распечатать содержимое множества:

......

Var B:set of 1..100;

k:byte;

begin

for k:=1 to 100 do if k in B then Write(k);

......

end.

3. type bukva=set of (‘a’..’z’);

simv=set of char;

cifra=set of byte;

Var a, b : bukva;

c, d : simv;

e, g : cifra;

Begin

c:=[‘u’, ‘v’, ‘z’]; // Задать множество из трех букв

e:=[1,2,0]; // Задать множество из 3 чисел

g:=e+[5]; // Добавить в множество Е элемент 5

d:=[ ]; // Пустое множество

End;