Множини
Множина – основне математичне поняття.
У Паскалі розглядаються тільки скінченні множини, що
складаються не більш ніж з 256 різних елементів. Всі елементи мають
бути значеннями одного порядкового типу (це типи Byte і Char або діапазон чи
перелік значень з урахуванням допустимої кількості елементів).
У Паскалі елементи множини беруть у квадратні дужки.
Множина може не мати елементів, тобто бути порожньою, тоді її зображають
так [ ].
У квадратних дужках можуть знаходитися допустимі вирази
зі змінними, наприклад, [i, j] – множина, що містить значення змінних i, j типу
Byte.
Порядок перерахування елементів ролі не грає і кожний елемент враховується
тільки один раз, тому множина [1, 7, 3] еквівалентно [3, 1, 7]. Запис
типу [5..5] відповідає множині [5] , а
[9..0] - порожній множині.
Після задання типу множини сукупність значень відповідної
змінної множинного типу визначається автоматично. У неї входять всі можливі
підмножини, що є довільними комбінаціями значень.
Змінну
множинного типу описують так:
1 спосіб
type IntSet = set of 1..3;
var m: IntSet;
2 спосіб
var m: set of 1..3;
c: set of char;
y: set
of (a,b,c);
z: set
of ‘a’..’f’;
Змінні множини m можуть набувати значень: [1, 2, 3],
[1, 2], [1, 3], [2, 3], [1], [2], [З], [].
Змінні множини b:Set of Boolean можуть мати
значення: [true, false], [true], [false], [].
Змінній m задамо значення [1, 2] за допомогою оператора
присвоєння: m:= [1, 2];
Набір операцій над множинами у Паскалі:
А = В
(Множини А і В збігаються)
А <> В (Множини А і В не збігаються)
А >= В (Всі
елементи множини В належать множині А)
А <= В (Всі
елементи множини А належать множині В)
х in А
(Значення х є того ж типу, що і
елементи множини А і належить множині А)
А + В
(Об’єднання множин А і В)
А * В
(Перетин множин А і В)
А - В
(Різниця множин А і В)
Перші
п’ять операцій у таблиці – це операції відношення. Вони повертають логічне
значення true або false. Останні три операції утворюють нові множини. Операнди
повинні бути одного типу.
Є дві
спеціальні процедури для роботи з одиночними елементами множини: include(А, x) і exclude(А, х), які відповідно включають або
виключають елемент х з множини А.
Множини
зберігаються у пам’яті дуже компактно: кожне значення типу множини представляється лише одним бітом. У пам’ять
комп’ютера заноситься 1 або 0 залежно від того, містить множина цей елемент чи
ні. Наприклад, опишемо змінну var m: set of 1..5;
то якщо m:= [1, 3]; то
у пам'яті множина буде представлена так 10100, якщо M := [];
тоді - 00000.
Д/З
1. Ввести рядок з цифр та
малих латинських літер. Визначити, яких букв – голосних (a, e, i, o, u) чи
приголосних – більше в цьому тексті.
2. var x,y,z:set of 8..100;
Змінній x присвоїти множину всіх цілих чисел від 8 до 100, змінній y
– множину всіх простих чисел із цього діапазону, а змінній z – множину всіх
складених чисел з цього діапазону.
3. Ввести рядок. В
алфавітному порядку надрукувати (по одному разу) всі малі англійські голосні
літери (a, e, i, o, u), що входять в цей текст.
4. Дано
текст із малих латинських літер, який закінчується крапкою. Надрукувати:
a) перші входження букв у текст,
зберігаючи їх початковий взаємний порядок;
b) всі літери, що входять в текст не менше ніж два рази;
c) всі літери, що
входять в текст по одному разу.