Паскаль. М5.ppt
- Количество слайдов: 19
Программирование на языке Паскаль Модуль 5. Множества
Множества - это наборы однотипных логически связанных друг с другом объектов. Множество может содержать от 0 до 255 элементов. Элементы множества не пронумерованы, не упорядочены. Действия можно выполнять только над множеством в целом. Тип элементов множества называется базовым типом Базовый тип может быть любым простым типом, кроме вещественного. Отрицательные элементы множеств не допускаются.
Множества Множественный тип описывается с помощью служебных слов Set of, например: type M = Set of B; Здесь М - множественный тип, В - базовый тип. Пример описания переменной множественного типа: type M = Set of 'A'. . 'D'; var MS: M;
Множества Описание множества в общем виде: Var <имя переменной>: Set of <базовый тип>; Примеры множеств: Type bukva = Set of Char; Var A, B: bukva; c: Set of Boolean; d: Set of Byte; k: Set of 0. . 9; -Конкретные элементы множества задаются в виде списка элементов множества, заключенных в [ ]. -В отличие от элементов массива, элементы множества не упорядочены и не имеют индексов. Записи эквивалентны: [1, 2, 3]=[3, 1, 2] - Каждый элемент в множестве учитывается только один раз. [1, 1, 1, 2, 2, 3, 2. . 4] = [1, 2, 3, 4]
Множества Работа с переменными множественного типа. Нельзя вводить и выводить значения переменных множественного типа с помощью операторов ввода-вывода. Множественная переменная может получить конкретное значение только в результате выполнения оператора присваивания. Например: a: =[]; b: =[‘a’, ’c’, ’b’]; b: =a;
Множества Можно сначала объявить тип множества, а потом использовать его для объявления переменных: type t_ch = set of char; var ch 1, ch 2: t_ch; Довольно часто в качестве базового типа множества используется тип перечисления или некоторый его диапазон: type week_days = (Mon, Tue, Wed, Thu, Fri); var work_days: set of week_days; lett: set of 'A'. . 'Z';
Множества Построение множества Чтобы во множестве появились элементы, необходимо выполнить оператор присваивания, в левой части которого стоит имя переменной-множества, а в правой — конструктор множества или некоторое выражение над множествами. type week_days = (Mon, Tue, Wed, Thu, Fri); var work_days: set of week_days; lett: set of 'A'. . 'Z'; begin work_days : = [Mon, Wed, Thu]; lett : = ['C', 'E'. . 'M', 'Z'] end.
Множества Следует помнить, что при задании множества порядок его элементов безразличен, но при задании диапазона такой порядок важен. Множество, в котором нет элементов, называется пустым (или нуль-множеством). В языке программирования Паскаль обозначается квадратными скобками, между которыми нет элементов: work_days : = [ ];
Множества Множество может быть объявлено типизированной константой, для чего в описании после знака равенства следует указать конструктор множества. Например: const lett: set of ['а'. . 'я'] = ['а', 'е', 'и', 'о', 'у', 'ы', 'у', 'ю', 'я']; В данном случае оператор описывает множество, элементами которого могут быть буквы русского алфавита, с записью в него начального значения, которое представляет собой множество гласных букв.
Множества Конструируя множества, можно использовать и переменные при условии, что их текущие значения попадают в диапазон базового типа множества. Так, если ch 1 и ch 2 имеют тип char, то допустима следующая последовательность операторов: ch 1 : = 'A'; ch 2 : = 'K'; chs : = [ch 1, ch 2, 'M']; В результате получится множество ['A', 'K', 'M']. Элементы множества нельзя вводить и выводить. Для организации ввода-вывода элементов множества следует использовать вспомогательные переменные. В то же время можно использовать множества как элементы типизированных файлов.
Множества Действия над множествами: * пересечение множеств; + объединение множеств; - разность множеств; = проверка эквивалентности; <> проверка неэквивалентности; <= проверка вхождения; in проверка принадлежности;
Множества 1) Объединение множеств. Знак операции объединения в Паскале - ’+’ Объединение двух множеств A и B (A + B) – это новое множество, состоящее из элементов, принадлежащих множеству A или B, либо тому и другому одновременно. var chs 1, chs 2, chs 3: set of char; begin chs 1 : = ['a', 'b', 'd']; chs 2 : = ['m', 'd', 'e']; chs 3 : = chs 1 + chs 2 + ['k', 'n']; end. Результат: chs 3 = ['a', 'b', 'd', 'm', 'e', 'k', 'n'].
Множества 2) Пересечение множеств. Знак операции объединения в Паскале – ’*’ Пересечение двух множеств A и B (A * B) – это множество, состоящее из элементов, одновременно принадлежащих множествам A и B. var chs 1, chs 2, chs 3: set of char; begin chs 1 : = ['a', 'b', 'd']; chs 2 : = ['m', 'd', 'e']; chs 3 : = chs 1 * chs 2; end. Результат: chs 3 = ['d’].
Множества 3) Разность множеств. Знак операции объединения в Паскале – ’-’ Разность двух множеств A и B (A - B) – о новое множество, состоящее из элементов множества A, не вошедших в множество B. var chs 1, chs 2, chs 3: set of char; begin chs 1 : = ['a', 'e', 't']; chs 2 : = chs 1 – ['e'] chs 3 : = ['m', 'n', 't'] – chs 2 End. { ['a', 't'] } { ['m', 'n'] }
Множества Манипуляция над множествами. Манипулируя операциями над множествами, можно добавлять элементы к множествам или удалять их. Для вставки и удаления элементов при работе с множествами в Pascal введены две процедуры: include (имя_множества, элемент) exclude (имя_множества, элемент) Первая из них позволяет выполнить добавление одного элемента в указанное множество, а вторая удалить. Например: include (chs 1, 'g'); { аналогично chs 1 + ['g'] } exclude (chs 2, 'a'); { аналогично chs 2 - ['a'] }
Множества Другие операции над множествами Над множествами можно выполнять четыре операции сравнения: =, <>, >=, <=. Два множества A и B равны (A = B), если каждый элемент множества A является элементом множества B и наоборот. Два множества A и B не равны (A <> B), если они отличаются хотя бы одним элементом. Множество A является подмножеством множества B (A <= B, или B >= A), если каждый элемент из A присутствует в B.
Множества Имеется также возможность выяснить, принадлежит ли данный элемент некоторому множеству. Для этого служит операция in. Пусть A – множество элементов некоторого базового типа, а x – переменная (константа, выражение) этого типа. Тогда выражение x in A истинно, если значение x является элементом множества A. Все операции сравнения множеств, а также операция in возвращают логическое значение true или false. В сложных выражениях над множествами операции имеют следующие приоритеты: 1) * 2) +, 3) =, <>, <=, >=, in
Множества Примеры: [1, 3] = [3, 1] возвращает true, [1. . 3] = [1, 2, 3] возвращает true, [1] <> [2] возвращает true, [1, 2, 3] = [1, 4, 3] возвращает false, [red, blue] = [red, yellow] возвращает false. [1, 3] + [1, 4] = [1, 3, 4]; [1, 3] * [1, 4] = [1]; [1, 3] - [1, 4] = [3].
Множества Пример: type digit. Char = set of '0'. . '9'; digit = set of 0. . 9; var sl, s 2, s 3 : digit. Char; s 4, s 5, s 6 : digit; begin s 1 = ['1', '2', '3']; s 2 = ['3', '2', '1']; s 3 = ['2', '3']; s 4 = [0. . 3, 6]; s 5 = [4, 5]; s 6 = [3. . 9]; end.