Лекция №12. Множественный тип данных

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

Элементы множества не пронумерованы, поэтому, нельзя обратиться к отдельному элементу множества по его индексу.

Тип элементов множества называется базовым типом множества. Область значений типа множества – это набор всевозможных подмножеств, составленных из элементов базового типа.

В ТР имеются ограничения на базовый тип. Это может быть только порядковый тип, количество значений которого не превышает 256, из простых типов к таким относятся Char, Byte, Boolean. Разрешается использовать перечисляемый тип и диапазон.

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

При задании значений элементов множества используются квадратные скобки. Например: [1,2,3,4], [‘a’..’z’], [‘a’,’b’,’c’]. Множество, не содержащее элементов, называется пустым. Пустое множество может быть включено в любое другое множество.

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

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

Здесь <имя типа> - правильный идентификатор, set of- зарезервированные слова (множество из), <базовый тип> - базовый тип элемента множества, в качестве которого может использоваться любой порядковый тип, кроме Word, Integer, LongInt.

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

Если все элементы одного множества входят также и в другое, говорят о включении первого множества во второе. Пустое множество включается в любое другое.

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

Type

MnogChar = set of '0'..'9';

MnogCifr = set of 0..9;

Var

S1, S2, S3: MnogChar;

S4, S5, S6: MnogCifr;

Begin

……

S1:= ['1', '2', '3'];

S2:= ['3', '2', '1'];

S3:= ['2', '3'];

S4:= [0..3, 6];

S5:= [4, 5];

S6:= [3..9];

……

End;

В этом примере множества S1 и S2 эквивалентны, а множество S3 включено в S2, но не эквивалентно ему.

Для задания множества используется так называемый конструктор множества: список спецификаций элементов множества, отделяемых друг от друга запятыми; список обрамляется квадратными скобками. Спецификации могут быть константы или выражения базового типа, а также тип-дапазон того же базового типа.

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

- * - пересечение множеств; результат содержит элементы, общие для обоих множеств; например, S4*S6 содержит [3], S4*S5 – пустое множество.

- + - объединение множеств; результат содержит элементы первого множества, дополненные недостающими элементами из второго множества:

o S4 + S5 содержит [0,1,2,3,4,5,6];

o S5 + S6 содержит [3,4,5,6,7,8,9];

- - - разность множеств; результат содержит элементы из первого множества, которые не принадлежат второму:

o S6 – S5 содержит [3,6,7,8,9];

o S4 – S5 содержит [0,1,2,3,6];

- = - проверка эквивалентности; возвращает True, если оба множества эквивалентны.

- <> - проверка неэквивалентности; возвращает True, если оба множества неэквивалентны.

- <= - проверка вхождения; возвращает True, если первое множество включено во второе.

- >= - проверка вхождения; возвращает True, если второе множество включено в первое.

- In- проверка принадлежности; в этой операции первый элемент – выражение, а второй – множество одного и того же типа; возвращает True, если выражение имеет значение, принадлежащее множеству;

o 3 in S6 возвращает True;

o 2*2 in S1 возвращает False.

- Дополнительно к этим операциям можно использовать две процедуры.

- Include - включает новый элемент во множество. Обращение к процедуре:

O Include (S, I),

- Здесь S – множество, состоящее из элементов базового типа,

- I – новый элемент, который необходимо включить во множество.

- Exclude– исключает элемент из множества, например:

O Exclude(S, I).

Исходя из особенностей внутреннего представления множеств, можно сделать следующие выводы:

- в множестве не может быть двух одинаковых элементов;

- все операции над множествами выполняются значительно эффективней, чем над другими структурами данных.

 

Пример. Даны два множества M1 и M2 натуральных чисел (множества задаются произвольно). Нужно получить третье множество M3, состоящее из объединенных двух первых множеств, M4 - разность множеств М1 и М2, включить в М4 элемент, равный 22, если такого элемента нет в М4, исключить из М3 элемент, равный 15, если такой элемент есть в М3.

uses crt;

type

mnog = set of 1..100;

var

i,k: integer;

m1,m2,m3,m4: mnog;

begin

clrscr;

m1:= [1..9];

m2:= [1..7,15,18];

m3:= m1+m2;

m4:= m1-m2;

if 22 in m4 then

writeln('число 22 уже есть в M4')

else

include (m4,22);

if 15 in m3 then

exclude (m3,15);

writeln;

for i:= 1 to 100 do

if i in m4 then

write(' M4 - ',i:3);

writeln;

for i:= 1 to 100 do

if i in m3 then

write(' M3 - ',i:3);

readln;

end.








Дата добавления: 2017-11-04; просмотров: 880;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.013 сек.