вівторок, 27 лютого 2018 р.

Множини

Множини

Множина – основне математичне поняття.
            У Паскалі розглядаються тільки скінченні множини, що складаються не більш ніж з 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) всі літери, що входять в текст по одному разу.


Немає коментарів:

Дописати коментар