Множества

Множество относится к структурным типам данных. Тип «множество» задаёт интервал значений, который является множеством всех подмножеств базового типа. Базовый тип – это перечислимый тип, кроме word, integer, longint. Синтаксис определения типа множества:

 

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

Примеры:

Type

Tdigit = set of 0 .. 9;

Tsimv = set of 'A' .. 'Z' ;

Var

digit : Tdigit ;

simv : Tsimv;

 

Если переменная типа «множество» описана как set of 1 .. 3, то она может принимать следующие значения: (1, 2, 3), (1, 2), (1, 3), (2, 3), (1), (2), (3), ().

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

Константы множественного типа записываются с помощью квадратных скобок и списка элементов в них.

Примеры:

Const

alpha = ['A' .. 'Z' , 'a' .. 'z' ];

empty = [] ;

digits = [ 0 .. 9] ;

 

Зарезервированное слово in для определения принадлежности элемента множеству:

if ch in alpha then …

В этом операторе выполняется проверка принадлежности элемента ch множеству alpha. Часто это гораздо проще, чем многократно сравнивать ch с некоторыми элементами.

Множества языка Object Pascal обладают свойствами математических множеств. Над ними можно выполнять те же операции. Если S1 и S2 – константы или переменные множественного типа, то S1+ S2 будет их объединением, S1*S2 - пересечением, S1-S2 – разностью. Операции отношений = (равенство), <> (неравенство), <= (первое является подмножеством второго), >= (второе является подмножеством первого) к множествам применяются, а отношения строго включения типа «<» или «>» - не применяются.

Чтобы добавить в множество какой-либо элемент, можно добавить множество, состоящее из единственного элемента. Либо использовать процедуру include(S,a) , где S – множество, в которое добавляем, a – добавляемый элемент. Имеется и обратная процедура – exclude(S , a) - для исключения элемента из множества. Здесь параметры S и a имеют тот же смысл.

Пример:

program p10_2;

var

S: set of 'A' .. 'Z' ;

ch: char;

Begin

S := [ ];

ch := 'A';

repeat

S := S+[ch] ;

Inc(ch);

Until ch >= 'Z' ;

……………………..

В этом примере в цикле заполняется множество S (изначально пустое) символами английского алфавита.

11 Пользовательские процедуры и функции

В лекции 5 мы уже говорили об использовании стандартных процедур и функций. Но язык Object Pascal позволяет программисту создавать собственные подпрограммы (функции и процедуры). Их описание располагается в описательной части программы и начинается с заголовка.