Программирование в среде Турбо Паскаль (Поляков, Круглов) - страница 93

7.3. Тип «множество» (Set). Операции с множествами


Турбо Паскаль поддерживает все основные операции с множествами. Множество, если оно не является пустым, всегда содержит что-то, и говоря «множество», необходимо указывать — «чего?». В Паскале множества определяются как наборы значений из некоего скалярного (перечислимого) типа. Скалярные типы — Byte и Char вводятся языком, они — перечислимые (их элементы можно поштучно назвать) и могут служить основой для построения множеств. Если же их станет мало, то всегда можно ввести свой скалярный тип, например:

TYPE

VideoAdapterType = (MDA, Hercules, AGA, CGA, MCGA, EGA, VGA, Other, NotDetected);

и использовать переменную

VAR

VideoAdapter : VideoAdapterType;

которая может иметь только перечисленные в задании типа значения. А далее можно ввести переменную — множество из тех же значений.

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

TYPE

SetOfChar = Set of Char; { множество из символов }

SetOfByte = Set of Byte; { множество из чисел }

SetOfVideo = Set of VideoAdapterType;

{ множество из названий видеоадаптеров }

SetOfDigit = Set of 0..9;

{ множество из чисел от 0 до 9 }

SetOfDChar = Set of '0'..'9';

{ множество из символов '0','1',...,'9'}

SetOfVA = Set of CGA..VGA;

{ подмножество названий видеоадаптеров }

- 143 -

Как видно из примеров, можно в задании типа множества «урезать» базовый тип, задавая поддиапазон его значений. В итоге множество сможет состоять только из элементов, вошедших в диапазон.

Если перечислимый тип вводится только для подстановки его имени в Set of, то можно на нем сэкономить и перечислить значения сразу в конструкции Set of. Не забудьте круглые скобки!

TYPE

SetOfVideo = Set of (MDA, Hercules, AGA, CGA, MCGA,


EGA, VGA, Other, NоtDetected);

SetOfGlasn = Set of ('А', 'И', 'О', 'У', 'Э');

Можно опустить фазу описания типа в разделе TYPE и сразу задавать его в разделе описания переменных:

VAR

V1 : Set of ...

В Турбо Паскале разрешено определять множества, состоящие не более чем из 256 элементов. Столько же элементов содержат типы Byte и Char, и это же число является ограничением количества элементов в любом другом перечислимом базовом типе множества, задаваемом программистом. Каждый элемент множества имеет сопоставимый номер. Для типа Byte номер равен значению числа, в типе Char номером символа является его ASCII-код. Всегда нумерация идет от 0 до 255. По этой причине не являются базовыми для множеств типы ShortInt, Word, Integer, LongInt.