Справочник от Автор24
Найди эксперта для помощи в учебе
Найти эксперта
+2

Множества в Pascal

Определение 1

Множества в Pascal — это совокупность связанных взаимно по определенному признаку или набору признаков однотипных компонентов.

Введение

В большинстве языков программирования присутствует специальный тип данных, именуемый множеством. Множеством является неупорядоченная структура данных, в которой все значения могут быть представлены лишь одни раз. В языке Pascal множества имеют ряд особенностей. Все компоненты одного множества обязаны принадлежать к одному и тому же базовому типу. Размер множества в Паскале ограничивается максимально допустимым числом компонентов. Во множествах могут присутствовать лишь такие компоненты, порядковые значения которых в их базовых типах не могут выходить за пределы 0...255. Если рассматривать целочисленные множества, то это означает, что в них допускается присутствие только чисел от 0 до 255. Наличие отрицательных компонентов во множествах является недопустимым.

Вышеизложенное означает, что базовым типом не может быть, к примеру, integer. Если требуется множество, состоящее из целочисленных объектов, то базовый тип должен объявлен как диапазон типа byte. Для символьных множеств базовым типом может выступать char (в нем имеется двести пятьдесят шесть значений с порядковыми номерами от нуля до двухсот пятидесяти пяти).

Множества в Pascal

В математических задачах, для того чтобы обозначить множества используются фигурные скобки, к примеру, так {4, 7, 12}, в Паскале для этих целей служат квадратные скобки, к примеру, это может быть $[$1, 3, 5$]$. Порядок компонентов во множестве значения не имеет. Например, множества $[$4, 7, 8$]$ и $[$8, 4, 7$]$ считаются одинаковыми.

По формату записи объявление переменной типа множество аналогично объявлению одномерного массива:

Var

имя: sėt of тип;

К примеру, объявление переменной ch в качестве множества с базовым типом char, будет иметь следующий вид:

Var

ch: sėt of char;

Допускается вначале объявить тип множества, а далее применять его, для того чтобы объявить переменные:

«Множества в Pascal» 👇
Помощь эксперта по теме работы
Найти эксперта
Решение задач от ИИ за 2 минуты
Решить задачу
Найди решение своей задачи среди 1 000 000 ответов
Найти

Type

t_ch = sėt of char;

var

ch1, ch2: t_ch;

Иногда в качестве базового типа могут быть использованы перечисления и диапазоны: type

wėek_days = (Mon, Tuė, Wėd, Thu, Frí);

var

work_days: sėt of wėek_days;

lėtt: sėt of 'A'..'Z';

typė

nums = 5..25;

var

a: sėt of nums;

Объявление множества в качестве переменной не может присвоить ей набор значений.

Для того чтобы во множестве могли появиться компоненты, следует исполнить оператор присваивания, в левой части которого расположено имя переменной, являющейся множеством, а в правой части расположен конструктор множества или некоторое выражение над множествами.

Конструктором множества является заключенный в квадратные скобки список компонентов, которые разделены запятыми. В качестве компонентов могут быть использованы диапазоны значений:

Typė

wėek_days = (Mon, Tuė, Wėd, Thu, Fri);

var

work_days: sėt of wėek_days;

lėtt: sėt of 'А'..'Z';

begin

work_days := $[$Mon, Wėd, Thu$]$;

lėtt := $[$'C', 'E'..'M', 'Z'$]$

ėnd.

Необходимо отметить, что при задании множества порядок расположения его компонентов является безразличным, однако при задании диапазона такой порядок выступает как важный.

Множество, в котором отсутствуют компоненты, именуется пустым, или иначе нуль-множеством. В языке программирования Паскаль пустые множества следует обозначать квадратными скобками, внутри которых отсутствуют компоненты:

work_days := $[$ $]$;

Множество можно объявить, как типизированную константу. Для этого в описании после знака равенства необходимо указать конструктор множества. К примеру, так: const

lėtt: sėt of $[$'а'..'я'$]$ = $[$'а', 'е', 'и', 'о', 'у', 'р', 'э', 'ю', 'я'$]$;

При конструировании множеств, можно применять так же и переменные при условии, что их текущие значения могут попасть в диапазон базового типа множества. К примеру, если ch1 и ch2 обладают типом char, то допустимой будет следующая очередность операторов:

ch1 := 'A';

ch2 := 'K';

chs := $[$ch1, ch2, 'M'$]$;

В итоговом результате сформировано множество $[$'A', 'K', 'M'$]$.

В языке Pascal компоненты множества невозможно вводить и выводить. Для того чтобы организовать их ввод и вывод, необходимо применять вспомогательные переменные. При этом допускается использование множеств как компонентов типизированных файлов.

Type

nums = 0..10;

var

a: set of nums;

i: byte;

begín

a := $[$3, 0, 2$]$;

for í := 0 to 10 do

íf í ín a then

wríteln(i);

end.

Результат исполнения следующий:

0

2

3

В языке программирования Pascal над множествами могут выполняться следующие операции:

  1. Операция присвоения.
  2. Операция объединения.
  3. Операция пересечения.
  4. Операция дополнения.
  5. Операция тождественности.
  6. Операция не тождественности.
  7. Операция «содержится во множестве».
  8. Операция «содержит множество».
  9. Операция принадлежности компонента множеству.

Над множествами могут выполняться операции объединения (+), пересечения (*) и разности (-). Объединением двух множеств A и B (A + B) является новое множество, которое состоит из компонентов, входящих во множество A или B, либо и в то и другое одновременно:

Var

chs1, chs2, chs3: set of char;

begin

chs1 := $[$'a', 'b', 'd'$]$;

chs2 := $[$'m', 'd', 'e'$]$;

chs3 := chs1 + chs2 + $[$'k', 'n'$]$;

end.

Результатом будет:

chs3 = $[$'a', 'b', 'd', 'm', 'e', 'k', 'n'$]$.

Пересечением двух множеств A и B (A * B) является множество, которое состоит из компонентов, одновременно входящих во множества A и B:

chs3 := chs1 * chs2;

Результатом будет:

chs3 = $[$'d'$]$.

Разностью (дополнением) множеств A и B (A - B) является новое множество, которое состоит из компонентов множества A, не входящих во множество B:

chs1 := $[$'a', 'e', 't'$]$;

chs2 := chs1 – $[$'e'$]$ { $[$'a', 't'$]$ }

chs3 := $[$'m', 'n', 't'$]$ – chs2 { $[$'m', 'n'$]$ }

За счет использования операций объединения, пересечения и разности, имеется возможность добавления компонентов к множествам или их удаления.

Для того чтобы вставить и удалить компоненты, при работе с множествами в Pascal существуют следующие процедуры:

ínclude(имя_множества, компонент)

exclude(имя_множества, компонент)

Дата написания статьи: 24.10.2022
Найди решение своей задачи среди 1 000 000 ответов
Крупнейшая русскоязычная библиотека студенческих решенных задач
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot