Скачать презентацию Множественный тип данных Множества Множество Скачать презентацию Множественный тип данных Множества Множество

множества.ppt

  • Количество слайдов: 17

Множественный тип данных Множественный тип данных

Множества § Множество – это тип данных, представляющих собой набор взаимосвязанных по какому-либо признаку Множества § Множество – это тип данных, представляющих собой набор взаимосвязанных по какому-либо признаку и ли группе признаков объектов, которые рассматриваются как единое целое. §Каждый объект в множестве называется элементом множества. § Все элементы должны принадлежать одному из скалярных (целочисленные, символьные, булевы) типов, кроме вещественного.

Множества § Этот тип называется базовым. § Базовый тип задается диапазоном или перечислением. § Множества § Этот тип называется базовым. § Базовый тип задается диапазоном или перечислением. § Количество элементов множества называют его мощностью (от 0 – пустое множество до 256). § Мощность множества не превышает 256 элементов. § Множество отличается от массивов и записей непостоянством количества элементов.

Множества § Множество в памяти хранится как массив битов, в котором каждый бит указывает Множества § Множество в памяти хранится как массив битов, в котором каждый бит указывает является ли элемент принадлежащим объявленному множеству или нет. Максимальное число элементов множества 256, а данные типа множество могут занимать не более 32 байт.

Описание множества § Type <имя типа> = Set of <тип элементов>; § Var <имя Описание множества § Type <имя типа> = Set of <тип элементов>; § Var <имя множества>: <имя типа>; § или § Var <имя множества>: Set of <тип элементов>;

Пример описания Type mnog_Char=Set of Char; Var mn 1: Set of Char; mn 2: Пример описания Type mnog_Char=Set of Char; Var mn 1: Set of Char; mn 2: mnog_Char; mn 3: Set of ‘A’. . ’Z’; s 1: Set of Byte; s 2: Set of (‘A’, ’O’, ’E’);

Пример описания Type digit = Set of 1. . 5; Var s: digit; Переменная Пример описания Type digit = Set of 1. . 5; Var s: digit; Переменная s может принимать значения, состоящие из любой совокупности целых чисел от 1 до 5: [] — пустое множество; [1], [2], [3], [4], [5] — одноэлементные множества; [1, 2], [1, 3], . . . , [2, 4], [4, 5] — двухэлементные множества (пара любых элементов); [1, 2, 3], [1, 2, 4], . . . , [3, 4, 5] — трехэлементные множества (тройка элементов); [1, 2, 3, 4], [2, 3, 4, 5], [1, 2, 3, 5] — четырехэлементные множества; [1, 2, 3, 4, 5] — полное множество (взяты все элементы базового типа).

Операции над множествами Объединением двух данных множеств называется множество элементов, принадлежащих хотя бы одному Операции над множествами Объединением двух данных множеств называется множество элементов, принадлежащих хотя бы одному из этих множеств. Знак операции объединения множеств в Паскале — «+» . n Пример: [‘A’, ‘F’]+[‘B’, ’D’]=[‘A’, ’B’, ’D’, ‘F’]; n

Операции над множествами Пересечением двух множеств называется множество элементов, принадлежащих одновременно и первому, и Операции над множествами Пересечением двух множеств называется множество элементов, принадлежащих одновременно и первому, и второму множеству. Знак операции пересечения множеств в Паскале — «*» . n Пример: [‘A’, ‘F’]*[‘B’, ‘D’]=[ ] [1. . 3, 5, 7, 11]*[3. . 8, 10, 12, 15. . 20]=[3, 5, 7]; n

Операции над множествами Разностью двух множеств называется множество, состоящее из тех элементов первого множества, Операции над множествами Разностью двух множеств называется множество, состоящее из тех элементов первого множества, которые не являются элементами второго. Знак операции вычитания множеств — «-» . Пример: [‘A’, ‘F’]- [‘B’, ‘D’]=[‘A’, ’F’] [1. . 3, 5, 7, 11]-[3. . 8, 10, 12, 15. . 20]=[1, 2, 11];

Операции над множествами Операция принадлежности элемента множеству. Эта логическая операция обозначается служебным словом in. Операции над множествами Операция принадлежности элемента множеству. Эта логическая операция обозначается служебным словом in. Результат операции имеет значение true, если элемент входит в множество, и false — в противном случае. Пример: Выражение 5 in [3. . 7] имеет значение true, Выражение ‘a’ in [‘A’. . ’Z’] имеет значение false.

Операции над множествами Используя операцию принадлежности, можно не только работать с элементами множества, но Операции над множествами Используя операцию принадлежности, можно не только работать с элементами множества, но и, даже если в решении задачи явно не используются множества, некоторые логические выражения можно записать более лаконично. 1) Натуральное число n является двухзначным. Вместо выражения (n >= 10) and (n <=99) можно записать n in [10. . 99]. 2) Символ c является русской буквой. Вместо выражения (c >= ‘А’) and (c <= ‘Я’) or (c>=‘а’) and (c<=‘п’) or (c>=‘р’) and (c<=‘я’) пишем c in [‘А’. . ‘Я’, ‘а’. . ‘п’, ‘р’. . ‘я’] и т. д.

Сравнение множеств Для сравнения множеств используются операции отношения: n = проверка на равенство (совпадение) Сравнение множеств Для сравнения множеств используются операции отношения: n = проверка на равенство (совпадение) двух множеств; n <> проверка на неравенство двух множеств; n <=, < проверка на вхождение первого множества во второе; n >=, > проверка на вхождение второго множества в первое.

Пример1. Подсчитать количество цифр в тексте и вывести разные цифры из текста. var c, Пример1. Подсчитать количество цифр в тексте и вывести разные цифры из текста. var c, z: set of char; k, I, b: byte; s: string; p; char; begin z: =[ ]; c: =[‘ 0’. . ’ 9’]; b: =0; readln(s); k: =length(s); for i: =1 to k do if s[i] in c then begin z: =z+[s[i]]; inc(b); end; writeln(‘кол цифр =‘, b); writeln(‘разные цифры’); for p: =‘ 0’ to ‘ 9’ do if p in z then write(p: 2); end.

Пример2. Составить программу поиска простых чисел в промежутке [1. . N]. «Решето Эратосфена» var Пример2. Составить программу поиска простых чисел в промежутке [1. . N]. «Решето Эратосфена» var m: set of byte; i, k, n: integer; begin readln(n); m: =[2. . n]; for k: =2 to n div 2 do for i: =2 to n do if (i mod k=0) and (i<>k) then m: =m-[i]; for i: =1 to n do if i in m then write(i, ’ ‘); end.

Пример 3. Дана строка. Сохранить в ней только первые вхождения символов, удалив все остальные. Пример 3. Дана строка. Сохранить в ней только первые вхождения символов, удалив все остальные. program ex_set_3; var m : set of char; s : string; i : byte; begin write('Введите строку: '); readln(s); m : =[]; i : = 1; while i <= length(s) do if s[i] in m then delete(s, i, 1) else begin m: =m+[s[i]]; i : = i + 1 end; writeln(s); end.

 Составить программу выделения следующих множеств из множества целых чисел от 1 до 30: Составить программу выделения следующих множеств из множества целых чисел от 1 до 30: n множества чисел, кратных 2; n множества чисел, кратных 3; n Из первых двух множеств создать ¡ ¡ ¡ множество чисел, кратных 6; множество чисел, кратных 2 или 3; множество чисел, делящихся на 3, но неделящихся на 2.