Скачать презентацию МНОЖИНИ Множини належать до порівняно рідко використовуваних Скачать презентацию МНОЖИНИ Множини належать до порівняно рідко використовуваних

Множини.ppt

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

МНОЖИНИ МНОЖИНИ

Множини належать до порівняно рідко використовуваних засобів мови Pascal. Однак у ряді випадків використання Множини належать до порівняно рідко використовуваних засобів мови Pascal. Однак у ряді випадків використання множин дозволяє помітно підвищити компактність і наочність програм. Множина (set) – це структурований тип даних, елементи якого складаються зі скінченого набору до 256 даних одного типу, значення яких записують через кому в квадратних дужках.

Потрібно звернути увагу на дві обставини. По-перше, всі значення базового типу, що утворять конкретні Потрібно звернути увагу на дві обставини. По-перше, всі значення базового типу, що утворять конкретні значення множинного типу, повинні бути РІЗНІ. По-друге, порядок "розташування" елементів у множині ніяк НЕ ФІКСУЄТЬСЯ. Це відповідає прийнятому в математиці трактуванню множини як безповторної невпорядкованої сукупності об'єктів.

Turbo Pascal допускає як базові типи для множини дискретні типи не більш ніж з Turbo Pascal допускає як базові типи для множини дискретні типи не більш ніж з 256 різними значеннями, причому (для цілих типів) ці значення повинні лежати в діапазоні від 0 до 255. Таким обмеженням задовольняють тільки стандартні типи byte і char, перелічувані типи, а також обмежені типи, утворені з них.

Множинний тип задається за допомогою двох службових слів set і of - і наступного Множинний тип задається за допомогою двох службових слів set і of - і наступного за ним базового типу. Наприклад: type Digits = set of 1. . 5; var S : Digits;

Змінна S, визначена в прикладі, може приймати значення, що складаються з наступних сукупностей цілих Змінна S, визначена в прикладі, може приймати значення, що складаються з наступних сукупностей цілих чисел: <порожньо> 1 1, 2 , 3 1, 5 1, 3, 4, 5 … 1, 2, 3, 4, 5

В Pascal-програмі допускаються явні зображення значень множинних типів. Зображення множини (або конструктор множини) будується В Pascal-програмі допускаються явні зображення значень множинних типів. Зображення множини (або конструктор множини) будується зі списку елементів множини, розділених комами. Весь список береться у квадратні дужки, наприклад: [1, 2, 5] [Red, Yellow]

Як елементи в зображенні множини допускаються вирази, тип яких повинен збігатися з базовим типом Як елементи в зображенні множини допускаються вирази, тип яких повинен збігатися з базовим типом множини. Крім того, можна вказувати діапазони значень, що складаються із пари граничних значень, розділених знаком. . (дві крапки); наприклад, два зображення множин [1. . 3, 5] і [1, 2, 3, 5] еквівалентні. Порожня множина зображується двома квадратними дужками: [ ].

Необхідно пам'ятати, що множина - це безповторна сукупність елементів, так що, наприклад, наступні три Необхідно пам'ятати, що множина - це безповторна сукупність елементів, так що, наприклад, наступні три зображення позначають одну й ту ж множину: [1, 2, 3] [1, 2, 3, 2, 2, 3, 1].

Наведемо ще приклад опису множин. type Set. Of. Char= set of char; Digits= set Наведемо ще приклад опису множин. type Set. Of. Char= set of char; Digits= set of 0. . 100; var My. Chars : Set. Of. Char; My. Dig 1, My. Dig 2 : Digits; Begin … My. Chars : = [ ' a '. . ' z ', ' 0 '. . ' 9 ', ' - ' ] ; My. Dig 1 : = []; My. Dig 2 : = My. Dig 1; My. Dig 1 : = [x. . x+10, 0, y-1, y+1]; …

Операції над множинами Для множинних типів існують наступні групи операцій: n теоретико-множинне об'єднання, перетин Операції над множинами Для множинних типів існують наступні групи операцій: n теоретико-множинне об'єднання, перетин і віднімання множин; n перевірка приналежності елемента множині; n перевірка на рівність і нерівність множин; n перевірка на входження (приналежність) однієї множини в іншу.

Розглянемо докладніше перераховані операції. 1. Об'єднання, перетин та віднімання множин. Ці операції позначаються, відповідно, Розглянемо докладніше перераховані операції. 1. Об'єднання, перетин та віднімання множин. Ці операції позначаються, відповідно, символами '+', '*' і '-' і означають традиційні дії із множинами, прийняті в математиці.

ü * - перетин двох множин: результат містить елементи, спільні для обох множин. ü ü * - перетин двох множин: результат містить елементи, спільні для обох множин. ü + - об'єднання двох множин: результат містить елементи першої множини, доповнені відсутніми елементами із другої множини. ü - - різниця множин: результат містить елементи з першої множини, які не належать другій.

Наступний приклад ілюструє наведені операції (у правому стовпчику показана множина - результат операції): [1, Наступний приклад ілюструє наведені операції (у правому стовпчику показана множина - результат операції): [1, 2] + [3, 4] [1. . 10] + [5. . 15] [1. . 10] * [5. . 15] [1, 2] * [3, 4] [1. . 10] - [5. . 15] [1, 2, 3, 4] [1. . 15] [5. . 10] [] [1. . 4]

2. Перевірка приналежності множині. Ця логічна операція позначається службовим словом in. Правий операнд повинен 2. Перевірка приналежності множині. Ця логічна операція позначається службовим словом in. Правий операнд повинен бути множиною, лівий значенням базового типу множини. Результат true, якщо значення входить у множину, і false, якщо не входить. Наприклад: 2 in [1. . 10, 12] true 5 in [1, 2, 7, 10] false

Операцію перевірки приналежності зручно використовувати для виключення більш складних перевірок. Наприклад, оператор виду if Операцію перевірки приналежності зручно використовувати для виключення більш складних перевірок. Наприклад, оператор виду if (ch='a') or (ch='b') or (ch='x') or (ch='y') then S може бути переписаний у набагато більш компактній і наочній формі: if ch in ['а', 'b', 'х', 'у'] then S Помітимо, що другий варіант більш ефективний з погляду швидкодії.

3. Перевірки на рівність, нерівність і включення множин. Ці бінарні операції також мають звичайний 3. Перевірки на рівність, нерівність і включення множин. Ці бінарні операції також мають звичайний теоретикомножинний зміст і позначаються наступними знаками: = рівність (збіг) двох множин <> нерівність множин <= перевірка на входження множини з лівого операнда в множину з правого операнда >= перевірка на входження множини із правого операнда в множину з лівого операнда

Результатом всіх цих операцій буде логічне значення true або false залежно від успіху перевірки. Результатом всіх цих операцій буде логічне значення true або false залежно від успіху перевірки. Нижче наводяться приклади використання цих операцій. [1, 2, 3] = [1, 2] false [1, 2, 3] >= [1, 2] true [S] <= [1. . 10] true, якщо S - ціле число з діапазону 1. . 10 [1, 2, 3] <> [1, 2, 2] true

Приклад: підрахувати кількість цифр в рядку використовуючи множини. Program mn 1; Const cyfra=[‘ 0’, Приклад: підрахувати кількість цифр в рядку використовуючи множини. Program mn 1; Const cyfra=[‘ 0’, ’ 1’, ‘ 2’, ’ 3’, ‘ 4’, ’ 5’, ‘ 6’, ’ 7’, ‘ 8’, ’ 9’]; Var s: string; i, k: word; Begin Writeln(‘Enter string’); readln(s); k: =0; For i: =1 to length(s) do if s[i] in cyfra then k: =k+1; Writeln(‘string contens’, k: 3, ’cyfr’); End.

Program mn 2; Var cyfra: set of char; s: string; i, k: word; Begin Program mn 2; Var cyfra: set of char; s: string; i, k: word; Begin cyfra=[‘ 0’, ’ 1’, ‘ 2’, ’ 3’, ‘ 4’, ’ 5’, ‘ 6’, ’ 7’, ‘ 8’, ’ 9’]; Writeln(‘Enter string’); readln(s); k: =0; For i: =1 to length(s) do if s[i] in cyfra then k: =k+1; Writeln(‘string contens’, k: 3, ’cyfr’); End.