Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
собеседование.docx
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
132.56 Кб
Скачать

Pascal. Множества

Под множеством в Паскале понимается совокупность взаимосвязанных элементов одного типа. Его элементы должны быть порядкового типа данных и описываться перечислением и/или интервалом. Служебные слова Set Of говорят, что объявлен множественный тип:

Type <имя типа> = Set Of <базовый тип>;

Размер множества может меняться, но количество элементов в нем, как правило, не должно превышать 256. Поэтому если нужно определить множество, состоящее из чисел, то следует указывать значения входящие в тип byte (от 0 до 255).

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

['A', 'B', 'C'] [0, 1, 2, 5, 9] [1..9] [1, 2, 3, 10..20]

Элементы множества в отличие от массивов не имеют индексов (номеров), и поэтому порядок не важен. Возьмем, к примеру, два множества: [2, 3, 5] и [3, 5, 2], не смотря на расположение элементов, они тождественны.

С помощью конструктора множеств можно присвоить множественной переменной, какие-либо значения:

I:=[1, 2, 3, 5, 8]; C:=['b', 'd', 'f']; B: = [True, False];

В ЯП Pascal над множествами предусмотрены следующие операции.

Объединение (+)

Объединением множеств A и B является множество C, которое содержит общие или хотя бы одного из них элементы.

Пример:

[1, 2, 3, 4] + [3, 4, 5] = [1, 2, 3, 4, 5] ['A', 'B', 'C', 'D'] + ['B', 'E', 'G'] = ['A', 'B', 'C', 'D', 'E', 'G']

Пересечение (*)

Пересечением множеств A и B является множество C, которое содержит элементы обоих множеств.

Пример:

[1, 2, 3, 4] * [3, 4, 5] = [3, 4] ['A', 'B', 'C', 'D'] * ['B', 'E', 'G'] = ['B']

Разность (-)

Разностью множеств A и B является множество C, которое содержит элементы множества A, не вошедшие в множество B.

Пример:

[1, 2, 3, 4] — [3, 4, 5] = [1, 2] ['A', 'B', 'C', 'D'] — ['B', 'E', 'G'] = ['A', 'C', 'D']

Тождественность (=)

Два множества считаются равными, если они состоят из одних и тех же элементов.

Пример:[1, 2, 3, 4] = [2, 1, 4, 3] => True ['A', 'B', 'C', 'D'] = ['B', 'E', 'G'] => False

Нетождественность (<>)

Два множества  считаются  неравными, если  они состоят из разных элементов.

Пример:

[1, 2, 3, 4] <> [2, 1, 4, 3] => False ['A', 'B', 'C', 'D'] <> ['B', 'E', 'G'] => True

Содержит (>=)

Выражение возвращает истину, если второе множество является подмножеством первого множества.

Пример:

[1, 2, 3, 4] >= [2, 1] => True ['A', 'B', 'C', 'D'] >= ['B', 'E', 'G'] => False

Содержится (<=)

Выражение возвращает истину, если первое множество является подмножеством второго множества.

Пример:

[1, 2, 3, 4] >= [2, 1] => False ['A', 'B'] >= ['B', 'A', 'G'] => True

Операция in

Проверяет наличие определенного элемента в заданном множестве:

Пример:

1 In [1, 2, 3, 4] => True B In ['A', 'G'] => False

Множества Pascal-Паскаль

Еще одним фундаментальным классом данных являются данные, структурированные в виде множеств.

О перечисляемых типах

Мы уже рассматривали три скалярных типа, которые, в принципе, являются перечисляемыми типами, – это boolean, char и integer. В самом деле, ведь каждый из этих типов можно задать следующим образом:

type

Boolean= (false, true);

char= #0..#255;

integer= -32768..32767;

(Представление #xxx означает, что должен быть взят символ, чей код в таблице ASCII равен xxx).

Это базовые типы, которые не требуется задавать каждый раз, уже определены в системе именно таким образом. Кроме них имеется еще несколько интервальных типов, с некоторыми из которых мы знакомы:

shortint>= -128..127;

longint= -2147483648..247483647;

byte= 0..255;

word= 0..65535;

Переменные, имеющие эти типы, могут принимать значения, лежащие в границах соответствующих интервалов.

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

ord(N) – возвращает номер элемента N в множестве;

succ(N) – возвращает следующее значение для N;

pred(N) – возвращает предыдущее значение для N.

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

type

<имя_типа>=(<идентификатор1>,<идентификатор2>,  ..,<идентификаторN>);

В скобках перечисляются все возможные значения, которые может принимать переменная данного типа. Следует запомнить, что названия значений нельзя давать по-русски(это важно!).

Например, мы можем описать тип данных color и перечислить семь основных цветов:

type

color=(red, orange, yellow, green, blue, magenta);

При этом значения получают номера в порядке их перечисления, начиная с 0. Поэтому для данного типа справедливыми будут отношения элементов:

red< orange< yellow< green< blue< magenta;

ord(red)=0;

succ(blue)= magenta;

pred(green)=yellow;