Операция со множествами

Лекция №1

Структурированные типы данных. Множества. Объявление множеств. Построение множеств. Операции над множествами. Приоритеты множественных операций. Примеры. Записи. Объявление записей. Вложенные записи.

В языке программирования множество представляет собой ограниченную своеобразную представленную в памяти (по сравнению с другими типами данных) совокупность элементов одного и того же базового типа, который выступает в качестве универсального множества (универсума). В качестве базового типа может выступать: 1) Целочисленный тип: Byte; 2) Символьный тип: char; 3) Перечислимый пользователем тип данных.

В множестве могут присутствовать элементы, порядковые значения которые не выходят за диапазон 0..255. Разрешено объявлять множества, состоящие не более чем из 256 элементов. Нумерация элементов во множестве идет от 0 до 255. В отличие от других типов данных один элемент множества занимает в памяти 1 бит. Исходя из этого для хранения полного множества из 256 элементов, достаточно 32 байта. Такая двоичная форма хранения информации позволяет эффективно реализовывать представление множества и операций над ними. Для обозначения используются квадратные скобки: [ ].

Объявление множеств:

Исполняется ключевым словом set (набор).

Синтаксическое объявление:

Var «Имя переменной»:set of «базовый тип»;

Примеры:

Type

Charset= set of char;

Var

m_ch1,m_ch2:charset;

m_arr: array [1..5] of charset;

m_b: set of byte;

Описывая множество, бывает удобно сразу указать какие элементы, оно может содержать. Это можно осуществить двумя способами: 1.Перечислить все возможные значения (множественно-перечислимый тип); 2. Указать пары граничащих значений (используется чаще).

Примеры:

Type

Digits=setoff 0..9;

Charset=set of ‘A’..’Z’;

Var

M1:set of 0..6; (Объем памяти =1 байт)

M2:digits; (Объем памяти =2 байта)

M3:charset;

M4:set of 0..4;

M5:set of(black, white,grey);

M6:set of 7..16; (объем памяти =3 байта, в первый байт входит 7,в третий 16)

Number1,number2:0..9;

Определение памяти требуется для множеств:

M:set of N1…N2; N2>N1.

Поскольку параметры N1 и N2, определяющим диапазон значений множества соответствует N1ый и N2ой биты блока памяти, выделенного под множество, то объем памяти будет определяться исходя из того в какие байты эти биты попадут, причем множеству будут доступны целиком байты. в которые попадают N1ый и N2ой биты и находящиеся между ними. Совокупность доступных байт определяет объем множества.

В общем случае использованное множеств не предполагает значение их машинного представления.Эти знания могут быть необходимы при обращении к множеству напрямую, например, через указатель. Размер, занимаемый множеством можно определить с помощью функции size of():

I:= Size of(m6);

Построение множеств:

На этом этапе решается задача с заполнением множеств. способы заполнения множеств:

1.

1) m1:=[0,1,4];

2) m1:=[1,4,0];

3) m5:=[gray, white];

4) m3:=[‘K’..’P’]; аналогично m3:=[‘K’,’L’, ‘M’, ‘N’, ‘O’,’P’ ];

5) m2:=[9,4..7]

2. Задание стартового значения в разделе Const:

Const

M7:set of char=[‘a’..’e’];

3. Заполнение множеств, использую множественные операции (объединение, пересечение, вычитание, исключение смотри ниже).

Обнуление множества:m6:=[];

При задание множества можно использовать переменные в соответствии с базисным типом:

Number1:=1; Number2:=2;

M2:=[number1, number2, 6 ];

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

1. M1:=[1,4,6];

2. M1:=[1,3,6,8,7,10];

3. M1:=[1,3,6,7];

4. M6:=[1,2,7,8,16,20,29];

5. M6:=1,2,7,8,16,20];

Массив множеств.

Type charset=set of char;

Var

M_arr:array [1..3] of charset;

M_arr=([…], […], […]);

M_arr[1]:=[‘A’,’B’];

M_arr=([‘A’,’B’], [ ],[ ]);

Операция со множествами.

1. Объединение: + А=В u C

Var

a,b,c: set of byte;

:

:

a:=[1,2,3];

b:=[3,4,5];

c:=a + b;

c=[1..5].

2. Пересечение: * A=B*C

c:=a*b;

c:=[3];

3. Вычитание: - A=B/c

c:=b-a;

c=[4,5];

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

a:=[1,2];

a:=a+[3];

a:=a+[3,4,5];

a:=a-[3,4];

a:=a-[10];


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: