Глава 36 безлічі в паскале

Безлічі, об'єднані знаками операцій і круглими дужками, утворюють

SN2: = (SN1 + [0..15]) * SN2;

Вирази, складені з множин, дуже схожі на вираження з чисел, але обчислюються за іншими правилами. Це оманливе схожість може спровокувати помилку - змішання в одному вираженні чисел і множин. Припустимо, ви хочете додати до безлічі число, що міститься в змінної K. Наступне вираз буде неправильним:

Правильно буде так:

Зрозуміло, за помилками такого роду доглядає компілятор, перевірте його реакцію на практиці.

порівняння множин

Безлічі можна порівнювати між собою, отримуючи в результаті логічне значення - TRUE або FALSE.

Два безлічі рівні. якщо містять одні й ті ж елементи:

Безлічі нерівні. якщо одне з них містить, хоча б один елемент, якого немає в іншому:

if SN1 <> [15, 17, 19] then ...

Перевірка на підмножина ( <= ) отвечает на вопрос: все ли элементы первого множества входят во второе?

Перевіркою на надмножество (=>) з'ясовують, чи всі елементи другого безлічі входять у першу:

Глава 36 безлічі в паскале

Безлічі в Паскалі

Перевірка на входження елемента в безліч (операція IN)

Чи входить певний елемент в безліч? Це можна з'ясувати так:

Зрозуміло, що, якщо число N входить в безліч S. то перетин [N] * S НЕ буде порожнім. Але простіше з'ясувати це операцією IN - вона введена спеціально для цього. Операція дає TRUE. якщо значення перечислимого типу входить в дану безліч, наприклад:

Рішення директорської завдання

Повернемося до тимчасово покинутому директору Семену Семеновичу. Нагадаю стоїть перед нами завдання: є текстовий файл, кожен рядок якого містить список номерів учнів, які перебувають в деякому гуртку:

9 17 12 11 3 5 18

Треба скласти список ніде не значаться нехлюїв.

Чи можна сприймати ці списки як безлічі? Ймовірно, так, судіть самі:

∙ кожен список містить номер учня не більше одного разу (помилкові повторні записи все одно відкинуть);

∙ порядок проходження в списку не важливий;

∙ список може бути порожнім (якщо ніхто не записався в цей гурток).

Добре, а чи буде безліччю список всіх учнів школи? Звичайно. Таке безліч буде повним. оскільки містить всі можливі елементи. А раз так, директорську завдання вирішимо через безлічі.

Безліч тих, хто записався хоча б в один гурток, знайдемо об'єднанням окремих множин-гуртків (S1 + S2 + S3). Віднявши це об'єднання з