КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Операции над множествами
Описание Описание типа множества имеет вид: type <имя типа> = set of <базовый тип>; Здесь <имя типа> - идентификатор; <базовый тип> - один из скалярных типов, кроме вещественного. Базовый тип задаётся диапазоном или перечислением. Из стандартных типов в качестве базового типа множества могут быть указаны типы byte, char и boolean. Базовый тип вводится либо через предварительное определение в разделе описаний программы, либо с помощью прямого указания после слов set of в описании типа множества, например: type letter = 'a'.. 'z'; // Описание ограниченного типа letter type SL = set of letter; // Описание множественного типа SL с базовым типом letter type SLR = set of ‘a’.. 'z'; // Прямое включение определения базового типа 'a.. 'z' в описание множественного типа SLR Если в программе используются переменные, значениями которых являются множества, то эти переменные описываются обычным образом: type intset = set of byte; var m1, m2: intset; // Переменные описаны через указание принадлежности ранее определённому типу var m3: set of 1..20; // Определение типа переменной непосредственно включено в её описание Задать значение переменной типа множества в программе можно с помощью оператора присваивания, в правой части которого в квадратных скобках перечислены через запятую элементы множества (так называемый конструктор множества). Примеры значений переменных множественного типа: [ ] – пустое множество; [1, 3, 5.. 12] – множество, содержащее элементы 1, 3, 5, 6,.. 12; Элементы типа множества могут задаваться в виде выражений, например: [2+4, 3 * 2]. Выражения должны иметь значения из заданного базисного множества порядкового типа. Область значений переменной множественного типа представляет собой набор всевозможных подмножеств, образованных из элементов базового типа. В отличие от перечислений нельзя говорить о первом, втором и т.п. элементах множества, поскольку для множеств понятие упорядоченности не имеет смысла. Если множество содержит всего три элемента, то общее количество возможных комбинаций составляет 2 * 2 * 2 = 8. Зарезервированное слово set способно определять множество размерностью до 256 элементов, т.е. 1,1579208923731619542357098500869e+77 вариантов. На практике такое количество вариантов никогда не понадобится. В частности, разработчики Delphi рекомендуют использовать множество с количеством элементов не более 16. Над переменными множественного типа могут выполняться те же операции, что и над обычными множествами: 1. Объединение (+); Кроме того, определённые операции проверки принадлежности элемента множеству (in), проверки тождественности множеств (=), нетождественности, множеств (<>), определения принадлежности (вложенности) множеств (>= или <=). Примеры: 1. [1, 2, 4] = [1, 4, 2] // Результат True Операция in позволяет определить, принадлежит ли элемент множеству или нет. Первым операндом, стоящим слева от слова in, является выражение базового типа. Второй операнд, стоящий справа от слова in, должен иметь множественный тип, например: a in [a, b, c, d] // Результат True При использовании операции in проверяемое на принадлежность значение и множество в квадратных скобках не требуют предварительного определения в разделе описаний, если они не заданы в виде конкретных значений. Операция in позволяет проводить эффективно сложные проверки условий. Например, вместо: (c >= '0') and (c <= '9') or (c >= 'a') and (c <='z'); Проще записать: c in [‘0’.. ‘9’, ‘a’.. 'z']; Причём последняя конструкция будет, как правило, более эффективной. Операции (=) и (<>) позволяют проверить, равны ли два множества или нет. С помощью операций (>=) и (<=) можно определить, является ли одно множество подмножеством другого. Пример: [red, white] = [red, green] // Результат False [1] <= [0.. 4] // Результат True Замечания: ['a', 'b'] = ['b'.. 'a'] // Результат False При проверке на подмножество выполняется тест на «меньше или равно», а не только проверка на собственное подмножество, т.е без «равно». Операции (<) и (>) не предусмотрены, поэтому при необходимости проверку на собственное подмножество для множеств A и B можно провести следующим образом: (A <= B) and (A >= B) или (A >= B) and (A <> B) Для задания правильного порядка выполнения операций следует учитывать принятый порядок старшинства (приоритета) операций над множествами: пересечение (*) имеет тот же приоритет, что и арифметические операции умножения и деления; объединение (+) и разность (-) занимают следующий, более низкий уровень приоритета, аналогично арифметическим операциям сложения и вычитания; на самом нижнем уровне находятся операции сравнения множеств (=, <>, <=, >=) и проверки принадлежности элемента множеству (in). Операции одного приоритета выполняются слева направо. Для изменения порядка выполнения операций используются круглые скобки.
Дата добавления: 2014-12-25; Просмотров: 698; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |