Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Сборник заданий по T-Pascal.doc
Скачиваний:
64
Добавлен:
18.03.2015
Размер:
3.03 Mб
Скачать

5 Множества

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

Множества- это структурированный тип данных, представляющий собой набор взаимосвязанных по какому- либо признаку или группе признаков объектов, которые можно рассматривать как единое целое. Каждый отдельный объект в множестве называется элементом множества. Все элементы множества должны принадлежать одному из скалярных типов, кроме вещественного. Этот тип называется базовым типом множества. Базовый тип задается диапазоном или перечислением. Область значений типа множество- набор всевозможных подмножеств, составленных из элементов базового типа. В выражениях на языке Паскаль значения элементов множества указываются в квадратных скобках: [1,2,3,4], ['а', 'b', 'c'], ['a'..'z'].Если множество не имеет элементов оно называется пустым и обозначается как [ ]. Количество элементов множества называется его мощностью.

Для описания множественного типа используется словосочетание set of (множество из…). Синтаксическая диаграмма множественных типов имеет следующий вид:

Изображение множества:

Исходя из синтаксической диаграммы, представим формат записи: множественных типов:

Type

<имя типа>= set of <элемент1,…,элемент n>;

var

<идентификатор,…>: <имя типа>;

Можно задать множественный тип и без предварительного описания:

Var

<идентификатор, …>: set of <элемент1,…>;

Примеры:

1. TYPE

Simple= set of 'a'..'h';

Number= set of 1..31;

Var

Pr: Simply;

N: Number;

Letter: set of char;{Определение множества без предварительного описания в разделе типов}.

В данном примере переменная Pr может принимать значения символов латинского алфавита от 'a' до 'h'; N- любое значение в диапазоне 1..31; Letter- любой символ. Попытка присвоить другие значения вызовет программное прерывание.

2. TYPE

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

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

SetOfDigit = Set of 0..9; {множество чисел от 0 до 9}

SetOfDChar = Set of ’0’.. ’9’; {множество символов ’0’,’1’ ’2’.. ’9’}

Можно использовать не только базовые типы:

3. TYPE

ElemColor = (Red, Yellow, Blue); {круглые скобки!}

Color = Set of ElemColor;

Последнее описание можно записать короче:

Color = Set of (Red, Yellow, Blue);

Если же переменная описана:

VAR S: Set of (1,3,5);

то возможны следующие присваивания:

S := [];

S := [2];

S := [1,3];

S := [5,1,3];

Элементы множества записываются в квадратных скобках через запятую. Возможно и указание диапазонов.

Sprost := [2,3,5,7,11];

Sdiap := [1..4, 6,8, 10..15];

Schar1 := [’a’, ’d’, ’n’, ’z’];

ScharRus := [’а’.. ’п’, ’р’.. ’я’];

Spusto := []; {пустое множество}

Заметим, что порядок следования и число повторений не имеет значения. Так следующие множества означают одно и то же.

[1,2,3]

[3,1,2]

[2,3,2,1,1,1]

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

VAR

X: byte;

S : Set of Byte;

X:=7;

S:=[1,3,X];

S:=S+[X+1];

Количество элементов множества не должно превышать 256. соответственно номера значений базового типа должны находиться в диапазоне 0..255. Контроль диапазонов осуществляется включением директивы {$R+}. Объем памяти, занимаемый одним элементом множества, составляет 1 бит. Объем памяти для переменной типа множество вычисляется по формуле:

Объем памяти =(Max DIV 8) - (Min DIV 8) + 1 , где Max и Min- верхняя и нижняя границы базового типа.