Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Informatika_Lektsia_9.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
355.33 Кб
Скачать

9.3.2. Предметные операции с множествами

Допустим, некоторые множества А,В,С уже заданы, например, перечислением их элементов. Используя предметные операции, из данных простых множеств можно получить составные множества F(А,В,С), у которых автоматически будут определены составляющие их элементы. Предметными являются следующие операции.

1. Объединение. Операция обозначается (+). В результирующее множество входят все элементы из объединяемых множеств, например:

[0,2,4]+[1,3] равно [0,1,2,3,4]

['a','b'] + ['b','c','d'] равно ['a','b','c','d']

2. Пересечение. Операция обозначается (*). В результирующее множество входят только те элементы, которые присутствуют в каждом из пересекаемых множеств, например:

[0,2,4] * [1,3] равно []

['a','b'] * ['b','c','d'] равно ['b']

3. Вычитание. Если из множества А вычитается множество В, то в результирующее множество входят только те элементы, которые присутствуют в А, но отсутствуют в В (операция обозначается (-)), например:

[0,2,4] - [1,3] равно [0,2,4]

['a','b'] - ['b','c','d'] равно [' a ']

9.3.3. Операции сравнения над множествами

Если некоторые множества А,В,С уже заданы, то задачей операций сравнения является проверка выполнения ряда их свойств. Итогом выполнения данных операция всегда является логическое значение – Истина (True) или Ложь (False). В Паскале используются следующие операции сравнения множеств, в записи которых всегда входит левое и правое множество, разделенные знаком соответствующей операции.

1. Тождественность (=). Результат является истиной, если оба множества равны друг другу, т.е. состоят из одинаковых элементов, иначе – ложный результат, например:

[0,2,4] = [1,3] равно False

['a','b'] = ['b','a'] равно True

2. Нетождественность (<>). Результат является истиной, если множества не равны друг другу, иначе – ложный результат, например:

[0,2,4] = [1,3] равно True

['a','b'] = ['b','a'] равно False

3. Содержится в (<=). Результат - истина, если левое множество содержится в правом, иначе – ложь, например:

[0,2,4] <= [1,3] равно False

['a','b'] <= ['b','a','с'] равно True

4. Содержит (>=). Результат - истина, если левое множество содержит правое, иначе – ложь, например:

['a','b','с'] >= ['b','a'] равно False

['a','b','с'] >= ['b','a'] равно True

Помимо операций между множествами в Паскале есть операция in, применяемая к паре “элемент-множество ”, проверяющая принадлежность элемента базового типа (стоящего в левой части выражения) заданному множеству (правая часть), например:

0 in [1,3] равно False

'a' in ['b','a'] равно True

9.3.4. Цикл типа For..In. Вывод множеств и их элементов.

Переменные множественного типа являются подмножествами базового множества. В Паскале нет возможности обращаться к их элементам так же, как к отдельным символам строковых величин или элементам массива. Для осуществления действий, требующих перебора элементов множества проще всего использовать цикл типа For...in. Данный цикл применяется в тех случаях, когда необходимо выполнить фиксированное число вычислений для переменной цикла, которая принимает значения из перечислимого либо другого порядкового типа. Free Pascal поддерживает данный тип цикла, начиная с версии 2.4.2. Рассмотрим вначале синтаксис цикла и его применение к различным порядковым типам на примере перечисляемого типа week из примера 1 п. 9.1.

Цикл For...in имеет следующий синтаксис:

For переменная in тип do оператор

где For,in,do – служебные слова,

переменная – идентификатор языка Паскаль,

тип – порядковый тип языка Паскаль, все значения которого в заданном порядке должна пройти переменная,

оператор – оператор языка Паскаль (если требуется выполнить несколько действий, применить составной оператор).

Тип, применяемый в цикле For...in, должен быть упорядоченным и ограниченным. Рассмотрим простейший пример, в котором используется перечисляемый тип week из примера 1 п. 9.1.

Пример 8. Код программы, которая распечатывает все дни недели с новой строки:

type week = (Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday);

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]