Операции над множествами
При работе с множествами допускается использование операций отношения (=, <>, >=, <=), объединения, пересечения, разности множеств и операции in.
Операции сравнения (=, <>). Два множества считаются равными, если они состоят из одних и тех же элементов. Порядок следования элементов в сравниваемых множествах значения не имеет. Два множества A и B считаются не равными, если они отличаются по мощности или по значению хотя бы одного элемента.
Выражение | Результат |
[1, 2] <> [1, 2, 3] | True |
[1, 2] = [1, 2, 2] | True |
[1, 2, 3] = [3, 2, 1] | True |
[1, 2, 3] = [1..3] | True |
Операции принадлежности (>=, <=). Выражение A >= B равно True, если все элементы множества B содержатся в множестве A. Выражение A <= B равно True, если выполняется обратное условие, т.е. все элементы множества A содержатся в множестве B.
Выражение | Результат |
[1, 2] <= [1, 2, 3] | True |
[1, 2, 3] >= [1, 2] | True |
[1, 2] <= [1, 3] | False |
Операция in. Используется для проверки принадлежности элемента указанному множеству. Обычно применяется в условных операторах.
Выражение | Результат |
5 in [1..9] | True |
5 in [1..4, 6..9] | False |
Операция in позволяет эффективно и наглядно выполнять сложные проверки условий, заменяя иногда десятки других операций. Например, оператор
if (X = 1) or (X = 2) or (X = 3) or (X = 5) or (X = 7) then |
можно заменить более коротким:
if X in [1..3, 5, 7] then |
Операцию in иногда пытаются записать с отрицанием: X not in S. Такая запись является ошибочной, так как две операции следуют подряд. Правильная запись имеет вид: not (X in S).
Объединение множеств (+). Объединением двух множеств является третье множество, содержащее элементы обоих множеств.
Выражение | Результат |
[ ] + [1, 2] | [1, 2] |
[1, 2] + [2, 3, 4] | [1, 2, 3, 4] |
Пересечение множеств (*). Пересечение двух множеств — это третье множество, которое содержит элементы, входящие одновременно в оба множества.
Выражение | Результат |
[ ] * [1, 2] | [ ] |
[1, 2] * [2, 3, 4] | [2] |
Разность множеств (–). Разностью двух множеств является третье множество, которое содержит элементы первого множества, не входящие во второе множество.
Выражение | Результат |
[1, 2, 3] – [2, 3] | [1] |
[1, 2, 3] – [ ] | [1, 2, 3] |
В язык Delphi введены две стандартные процедуры Include и Exclude, которые предназначены для работы с множествами.
Процедура Include(S, I) включает в множество S элемент I. Она дублирует операцию + (плюс) с той лишь разницей, что при каждом обращении включает только один элемент и делает это более эффективно.
Процедура Exclude(S, I) исключает из множества S элемент I. Она дублирует операцию – (минус) с той лишь разницей, что при каждом обращении исключает только один элемент и делает это более эффективно.
Выражение | Результат |
S := [1, 3]; | [1, 3] |
Include(S, 2); | [1, 2, 3] |
Exclude(S, 3) | [1, 2] |
Использование в программе множеств дает ряд преимуществ: значительно упрощаются сложные операторы if, улучшается наглядность программы и понимание алгоритма решения задачи, экономится время разработки программы. Поэтому множества широко используются в библиотеке компонентов среды Delphi.
Записи
Запись — это составной тип данных, состоящий из фиксированного числа элементов одного или нескольких типов. Описание типа записи начинается словом record и заканчивается словом end. Между ними заключен список элементов, называемых полями, с указанием идентификаторов полей и типа каждого поля:
type TPerson = record FirstName: string[20]; // имя LastName: string[20]; // фамилия BirthYear: Integer; // год рождения end; |
Идентификаторы полей должны быть уникальными только в пределах записи. Допускается вложение записей друг в друга, т.е. поле записи может быть в свою очередь тоже записью.
Чтобы получить в программе реальную запись, нужно создать переменную соответствующего типа:
var Friend: TPerson; |
Записи можно создавать и без предварительного описания типа, но это делается редко, так как мало отличается от описания полей в виде отдельных переменных.
Доступ к содержимому записи осуществляется посредством идентификаторов переменной и поля, разделенных точкой. Такая комбинация называется составным именем. Например, чтобы получить доступ к полям записи Friend, нужно записать:
Friend.FirstName := 'Alexander'; Friend.LastName := 'Ivanov'; Friend.BirthYear := 1991; |
Обращение к полям записи имеет несколько громоздкий вид, что особенно неудобно при использовании мнемонических идентификаторов длиной более 5 символов. Для решения этой проблемы в языке Delphi предназначен оператор with, который имеет формат:
with <запись> do <оператор>; |
Однажды указав имя записи в операторе with, можно работать с именами ее полей как с обычными переменными, т.е. без указания идентификатора записи перед идентификатором поля:
with Friend do begin FirstName := 'Alexander'; LastName := 'Ivanov'; BirthYear := 1991; end; |
Допускается применение оператора присваивания и к записям в целом, если они имеют один и тот же тип. Например,
Friend := BestFriend; |
После выполнения этого оператора значения полей записи Friend станут равными значениям соответствующих полей записи BestFriend.
- Язык программирования Pascal Алфавит языка Pascal
- Числа. Представления чисел
- Имена и идентификаторы.
- Структура программы на Pascal
- Типы данных
- Простые типы данных. Данные целого типа.
- Данные вещественного типа
- Данные логического типа
- Данные символьного типа
- Стандартные процедуры и функции
- Арифметические выражения
- Логическое выражение
- Оператор присваивания
- Составной оператор
- Пустой оператор
- Операторы ввода
- Вводи числовых данных
- Ввод символьных данных
- Ввод логических данных
- Вывод данных на экран
- Оператор выбора или оператор варианта
- Перечислимый тип данных
- Ограниченный тип данных или тип диапазон
- Оператор цикла
- Оператор цикла с предусловием
- Оператор цикла с постусловием
- Оператор цикла с параметром
- Итерационный цикл
- Оператор присоединения
- Подпрограммы
- Подпрограммы-процедуры
- Подпрограммы-функции
- Параметры массивы и параметры строки.
- Рекурсия
- Типизированные константы
- Алгоритм создания последовательного файла.
- Алгоритм доступа к элементам файла.
- Алгоритм добавления элементов в последовательный файл.
- Строковый тип данных. Строковые выражения.
- Операция отношения.
- Процедуры.
- Текстовый файл.
- Заголовок модуля. Связь модуля с программой.
- Стандартные модули
- Объектно-ориентированное программирование (ооп)
- Работа с массивами
- Множества
- Операции над множествами
- Понятие файла
- Работа с файлами
- Структура модуля
- Стандартные модули языка Delphi