Множества в Delphi

Множество - это набор элементов (объектов) одного и того же типа. Оно может состоять из произвольного числа элементов (в Delphi не более чем из 256), в том числе не иметь ни одного элемента (пустое множество). Все элементы множества должны быть различны (если вы и попытаетесь до­бавить элемент, который уже имеется в множестве, то просто ничего не произойдёт).

Объявляются множества с помощью зарезервированных слов set и of, по­сле которых указывается тип элементов (базовый тип):


Type
Имя = set of тип_элементов;

Базовым типом могут быть: логический тип, символьный тип char, пере­числяемый и интервальный типы, содержащие не более 256 элементов. Типы целых и вещественных чисел не могут быть базовым типом, по­скольку они заведомо содержат более 256 элементов.

Например:


Type
A= set of 1..100;
B= set of boolean;
C= set of char;
TColor = (Red, Orange, Yellow, Green, Cyan, Blue, Violet);
Color= set of TColor;

Или так

color= set of (Red, Orange, Yellow, Green, Cyan, Blue, Violet);

 

Множество A может содержать 100 элементов со значениями от 1 до 100. Множество B может содержать 2 элемента со значениями FALSE и TRUE. Множество С может содержать 255 символов.

Множество color может содержать до 7 цветов радуги.

Интервальный тип должен укладываться в диапазон 0..255, поэтому объ­явление

A1= set of 0..25
5;

правильное, а A2= set of 1..256; - неправильное.

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


Var clr1, clr2, clr2: color;
Ch: C; 
Numbers: A;
Bool: B;

При объявлении переменные инициализируются пустым множе­ством [], то есть не содержат ни одного элемента.

Объявление типизированной константы можно совмещать с инициализа­цией множества. Для этого в квадратных скобках нужно перечислить че­рез запятую значения элементов множества (допускаются интервалы зна­чений):

const

prime: set of 2..10= [2,3,5,7]; alphabet : set of char= ['а'..'я’];

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


clr1:= []; //пустое, «бесцветное» множество
clr2:= [Red, Orange, Yellow],//множество тёплых цветов clr3:= [Green..Violet]; //множество холодных цветов

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


clr2:= [Red, Orange,Yellow];: 
clr2:= [Orange]; clr2:= clr2+[Red]; clr2:= clr2+[Yellow];

Для добавления элементов в множество можно использовать процедуру include(S,I), которая выполняет те же действия, что и оператор S := S + , но даёт более быстрый код:


Include(clr2,Orange);
Include(clr2,Red);
Include(clr2,Yellow);

Для обратной операции - исключения элемента из множества - служит процедура exclude(S,I), которая выполняет те же действия, что и оператор S := S - , но даёт более быстрый код:


clr2:= [Red, Orange, Yellow];
exclude(clr2,Red); // исключить из множества красный цвет.

������� ������ ��� dle ������� ��������� ������

Помоги проекту! Расскажи друзьям об этом сайте: