Множество - это набор логически связанных между собой элементов. Со времён “классического” Паскаля множества мало чем изменились (или вообще не изменились - здесь точно не скажу). Так что в Lazarus (а, следовательно, и в FreePascal) множество - это набор элементов порядкового типа. Количество элементов может быть от 0 до 255. Если в множестве 0 элементов, то это пустое множество.
Объявляется множество так:
ИмяМножества : set of БазовыйТип;
Пример:
var M1 : set of Byte;
Здесь мы объявили множество M1, в котором могут храниться значения типа Byte. Но изначально множество будет пустым, так как в Паскале все переменные при запуске программы инициализируются нулями (или их эквивалентами).
Множества хороши тем, что можно легко проверить, входит ли какой-то элемент в множество. Например, входит ли число в какой-то заданный набор чисел. Выполнить проверку можно так:
if Элемент in ИмяМножества then Здесь что-то делаем;
Более наглядно на рисунке:
Здесь мы проверяем, входит ли число 100 в множество М1. Но поскольку изначально множество пустое, то программа выведет на экран сообщение, что число 100 в множество не входит. Затем мы включаем в множество три числа, в том числе и 100. После чего проверка ожидаемо выдаёт нам сообщение, что число 100 в множество входит.
Как вы догадались, чтобы присвоить переменной множества какое-то значение, надо использовать квадратные скобки. Примеры:
M1 := [100, 101, 102];
M1 := [10..30, 80..90]; //Теперь элемента 100 нет в М1
Тут нас ждёт маленькая неприятность. Во второй строке примера мы перезаписали множество, и теперь в нём нет чисел 100, 101, 102. Однако это не проблема. В множество можно добавлять элементы вот так (это называется объединением множеств - надеюсь, вы ещё помните школьный курс математики))):
M1 := M1 + [10..30, 80..90];
или так:
Include(M1, 10);
Вместо диапазона в квадратных скобках, разумеется, можно использовать переменную, связанную с другим множеством.
Удалить элемент из множества можно подобным образом:
M1 := M1 - [100, 101];
или
Exclude(M1, 101);
С помощью процедур можно работать только с одним элементом. С помощью операторов + и - можно добавить или удалить не только один элемент, но и другое множество.
Если вам надо проверить, входит ли элемент в какой-либо диапазон, то не обязательно объявлять переменную. Можно и так:
X := 101;
if X in [100, 200, 300] then
WriteLn('Число 100 входит в набор')
else
WriteLn('Число 100 НЕ входит в набор');
Для значений множества можно использовать в том числе и пользовательские типы данных и перечисления. При необходимости перебрать все элементы множества это можно сделать в цикле:
Здесь два способа. Понятно, что для множества проще использовать цикл for … in. Однако и первый способ тоже не помешает знать.
На этом всё. Подписывайтесь на канал, чтобы ничего не пропустить.