МНОЖИНИ
![]() |
Зміст | Задачі | ![]() |
Множиною називається структурний тип даних, який містить взаємозв'язані
по деякій ознаці або сукупності ознак об'єкти, які можна розглядати як єдине
ціле.
Кожен об’єкт в множені називається елементом множин. Всі елементи множин повинні
належати до одного зі скалярних типів, крім дійсного. Цей тип називається базовим
типом множини. Базовий тип задається діапазоном значень або перерахуванням значень.
Областю значень множинного типу є набір всеможливих підмножин, побудованих з
елементів базового типу.
У виразах значень елементів множини вказуються в квадратних дужках:[1, 2, 3,
4], ['a', 'b', 'c', 'd'], ['a'.. 'z']. Якщо множина не має елементів, то вона
називається порожньою і позначається[]
Для опису множиного типу використовується словосполучення set of (множина з).
Формат:
Type <ім'я типу>=set
of(<елемент 1>,... ,<елемент n>);
Var <ідентифікатор>:<ім'я
типу>;
Можна задати множинний тип і без попереднього описання:
Var <ідентифікатор>=set of(<елемент 1>,...,<елемент n>);
Приклад.
Type Proste=set
of(2,3,5,7,11);
Nomer=set of 1..31;
Var Pr:Proste; N:Nomer;
В даному прикладі змінна Pr може приймати значення 2, 3, 5, 7, 11;N-будь-яке значення з діапазону 1.. 31.
Кількість елементів множини не повинна перевищувати 256. Тому но-мера значень базового типу повинні знаходитись в діапазоні 0.. 255.
При роботі з множинами допускається використання операцій відношення "=", "<>", ">=", "<=", об'єднання, перетину, різниці множин і операція in. Результатом цих операцій є значення True або False.
Операція "рівно" (=). Дві множини А і В вважаються рівними, якщо вони складаються з однакових елементів. Порядок розміщення елементів ніякої ролі не грає.
Значення А
|
Значення В
|
Вираз
|
Результат
|
[1, 2, 3, 4] | [1, 2, 3, 4] | A=B | True |
['a', 'b', 'c'] | ['c', 'a'] | A=B | False |
Операція "не рівно"(<>). Дві множини A і B вважаються нерівними, якщо вони відрізняються по кількості або по значенню хоча б одного елемента.
Значення А
|
Значення В
|
Вираз
|
Результат
|
[1, 2, 3] | [3, 1, 2, 4] | A<>B | True |
['c'.. 't'] | ['t'.. 'c'] | A<>B | false |
Операція "менше або рівно"(<=). Використовується аналогічно попередній операції, але результат виразу A<=B рівний True, якщо всі елементи множини A містяться в множині B. В противному випадку результат рівний False.
Значення А
|
Значення В
|
Вираз
|
Результат
|
[1, 2, 3 ] | [1, 2, 3, 4, 5] | A<=B | True |
['d'.. 'h'] | ['z'.. 'b'] | A<=B | True |
['a'] | ['b', 'c'] | A<=B | False |
Операція in дозволяє ефективно проводити складні перевірки умов, замінюючи деколи десятки інших операцій. Наприклад, вираз
if(a=1)or(=2)or(a=3)or(a=4)or(a=5)then...
можна замінити більш коротким виразом
if a in [1..5]then...
Часто операцію in записують із запереченням. При цьому слід звертати увагу, що in має нижчий пріоритет, ніж not, тому вірним записом є
if not(a in [1..5]) then...
Об'єднання множин (+). Об'єднанням двох множин є третя множина, яка містить елементи цих двох множин.
Значення А
|
Значення В
|
Вираз
|
Результат
|
[1, 2, 3] | [1, 4, 5] | A+B | [1, 2, 3, 4, 5] |
['A'.. 'D'] | ['E'.. 'Z'] | A+B | ['A'.. 'Z'] |
Перетин множин (*). Перетином двох множин є третя множина, яка містить всі елементи, що входять одночасно в обидві множини.
Значення А
|
Значення В
|
Вираз
|
Результат
|
[1, 2, 3] | [1, 4, 2, 5] | A*B | [1, 2] |
['A'.. 'Z'] | ['B'.. 'R'] | A*B | ['B'.. 'R'] |
[] | [] | A*B | [] |
Різниця множин (-). Різницею двох множин є третя множина, яка містить елементи першої, які не входять в другу множину.
Значення А
|
Значення В
|
Вираз
|
Результат
|
[1, 2, 3, 4] | [3, 4, 1] | A-B | [2] |
['a'.. 'z'] | ['d'.. 'z'] | A-B | ['a'.. 'c'] |
[x1, x2. x3. x4] | [x4, x1] | A-B | [x2, x3] |
![]() |
Зміст | Задачі | ![]() |