Множина – це кінцевий набір значень деякого базового типу.
Базовий тип
не може мати більше 256 можливих значень, і порядкові значення нижньої та
верхньої межі не повинні виходити за межі діапазону 0..255.
В якості базового
може бути використаний любий порядковий тип, крім типів word, integer,
LongInt.
Будь-яка множина може приймати значення [ ], що називається
порожньою множиною.
Опис множини має вигляд:
<ім’я множини>=set of <базовий тип>;
Наприклад:
type
digitChar=set of ‘0’..’9’;{тип множина цифрових символів}
digit=set of 0..9;{тип множина цілих чисел від 0 до 9}
var
s1,s2,s3:digitchar;
s4,s5,s6:digit;
Над множинами можна виконувати такі операції:
“+” – об’єднання двох множин з сумісними базовими типами ;
“-” – різниця двох множин з сумісними базовими типами;
“*” – перетин двох множин з сумісними базовими типами.
Результати операцій над множинами підпорядковуються правилам
математичної логіки множин, а саме:
• порядкове значення С належить множині (А+В) тільки в тому випадку,
коли воно належить множині А або множині В;
• порядкове значення С належить множині (А-В) тільки в тому випадку,
коли воно належить множині А, але не належить множині В;
• порядкове значення С належить множині (А*В) тільки в тому випадку,
коли воно належить і множині А, і множині В одночасно;
Допустимою також являється операція перевірки належності елемента до
заданої множини. Перевірка здійснюється за допомогою оператора “in”. Цей
оператор повертає логічне значення “true”, якщо даний елемент належить
заданій множині і значення “false”, якщо не належить.
Крім того існують дві процедури, які полегшують процес формування
множин – це процедура
Include(var s: set of T; I:T), яка додає елемент до
множини, та
процедура Exclude(var s: set of T; I:T), яка видаляє вказаний
елемент із множини.
Наприклад:
type
digitChar = set of ‘0’ .. ‘9’;
digit = set of 0 .. 9;
var
s1,s2,s3:digitchar;
s4,s5,s6:digit;
begin
s1 :=[‘1’,’2’,’3’]; { задаємо множину s1, що складається з символів 1, 2, 3}
s2 :=[‘3’,’4’,’5’]; { задаємо множину s2, що складається з символів 3, 4, 5}
s3 :=s1+s2; {множина s3 складатиметься із символів 1, 2, 3, 4, 5}
s4 :=[0..3,6]; { множина s4 складатиметься із цифр 0, 1, 2, 3, 6}
s5 := [2,3]; { множина s5 складатиметься із цифр 2, 3}
s6 := s4-s5; { множина s6 складатиметься із цифр 0,1,6}
s6:=s4*s5; { множина s6 складатиметься із цифр 2,3}
if (1 in s6 ) then
writeln(‘Yes’) {перевіряємо чи належить цифра 1 до s6}
else
writeln(‘No’); {і друкуємо Yes, якщо належить, або No, якщо не
належить. В даному випадку буде надруковано
No}
include(s6,4); {множина s6 складатиметься з елементів 2,3,4}
exclude(s6,2); { множина s6 складатиметься з елементів 3,4}
end.
Окрім перелічених вище операцій над множинами допустимою є також
операція порівняння двох множин. При цьому діють такі правила:
• вираз А=В істинний тільки тоді, коли А і В містять однакові елементи;
• вираз А<>В істинний, якщо хоч одна із заданих множин містить хоч
один елемент, відсутній в іншій;
• вираз А<=В істинний, якщо кожен елемент множини А являється також
елементом множини В;
• вираз А>=В істинний, якщо кожен елемент множини В являється також
елементом множини А.
Використання множин дозволяє зробити програму більш еффективною за
рахунок зменшення кількості перевірок.
Немає коментарів:
Дописати коментар