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

4.5 Уявлення в пам’яті машини множин; операції над множинами. Уявлення графів. Дерева і бінарні дерева. Характеристики дерев. Ліс. Уявлення бінарних дерев. Перехід від дерева до бінарного дерева.

4.5.1 Множини. Опис множин, операції над множинами.

Поняття множин в мові програмування ґрунтується на математичному уявленні про множини: це обмежена сукупність різних елементів. Для побудови конкретного множинного типу використовується, перелічуваний чи інтервальний тип даних. Тип елементів, з яких складається множина, називається базовим типом.

Множинний тип описується за допомогою службових слів Set of, наприклад:

type M= Set of B;

Тут М – множинний тип, B – базовий тип.

Приклад опису змінної множинного типу:

Type M= Set of 'A'..'D';

Var MS: M;

Приналежність змінних до множинного типу може бути визначена прямо в розділі опису змінних:

var C: Set of 0..7;

Константи множинного типу записуються у виді вкладеної в квадратні дужки послідовності елементів чи інтервалів базового типу, розділених комами, наприклад: ['A', 'C'], [0, 2, 7], [3, 7, 11..14].

Константа виду [ ] означає порожню підмножину.

Множина містить у собі набір елементів базового типу, усі підмножини даної множини, а також порожня підмножину. Якщо базовий тип, на якому будується множина, має K елементів, то число підмножин, що входять у цю множину, дорівнює 2k . Нехай є змінна Р інтервального типу: var P: 1..3;

Ця змінна може приймати три різних значення – або 1, 2, або 3.

Змінна Т множинного типу var T: Set of 1..3; може приймати вісьмох різних значень:

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

Порядок перерахування елементів базового типу в константах безладний.

Значення змінної множинного типу може бути задане конструкцією виду [T], де T – змінна базового типу.

До змінного і константам множинного типу застосовні операції присвоювання(:=), об'єднання(+), перетин(*) і різниця (-):

['A','B'] + ['A','D'] дасть ['A','B','D']

['A'] * ['A','B','C'] дасть ['A']

['A','B','C'] - ['A','B'] дасть ['C'].

Результат виконання цих операцій є величина множинного типу.

До множинних величин застосовні операції: тотожність (=), нетотожність (<>), міститься в (<=), містить (>=). Результат виконання цих операцій має логічний тип, наприклад:

['А','В'] = ['А','С'] дасть FALSE

['А','В']<>['А','С'] дасть TRUE

['В']<=['В','С'] дасть TRUE

['С','D']>=['А'] дасть FALSE.

Крім цих операцій для роботи з величинами множинного типу в мові програмування використовується операція in – приналежність елемента, що перевіряється, базового типу, стоїть ліворуч від знака операції, до множини, що стоїть праворуч від знака операції. Результат виконання цієї операції – булевий. Операція перевірки належності елемента множині часто використовується замість операцій відношень, наприклад:

A in ['А', 'В'] дасть TRUE,

2 in [1, 3, 6] дасть FALSE.

При використанні в програмах даних множинного типу виконання операцій відбувається над бітовими рядками даних. Кожному значенню множинного типу в пам'яті ЕОМ відповідає один двійковий розряд. Наприклад, множина

['А','В','С','D'] представлена в пам'яті ЕОМ бітовим рядком 1 1 1 1.

Підмножини цієї множини представлені рядками:

['A','B','D'] 1 1 0 1

['B','C'] 0 1 1 0

['D'] 0 0 0 1

Величини множинного типу не можуть бути елементами виведення.

У кожній конкретній реалізації транслятора з мови програмування кількість елементів базового типу, на якому будується множина, обмежена.

Ініціалізація величин множинного типу виробляється за допомогою типізованих констант:

const seLit: Set of 'A'..'D'