Множества.pptx
- Количество слайдов: 18
Язык программирования TURBO PASCAL 7. 0
ØМножеством называется совокупность однотипных элементов, рассматриваемых как единое целое. ØВ отличие от элементов массива элементы множества не пронумерованы, не упорядочены. ØКонкретные значения множества задаются в виде списка элементов в квадратных скобках.
• • • [ 3, 4, 7, 9, 12] – множество из пяти целых чисел; [ 1. . 100] - множество целых чисел от 1 до 100; [ ‘a’, ’b’, ’c’] - множество, содержащее три литеры a, b, c. [ ] – пустое множество. [январь. . декабрь] – множество, состоящее из названий месяцев.
Var < идентификатор> : Set Of <базовый тип > Например: var A, D: Set Of Byte; B: Set Of ‘ a’. . ‘z’; C: Set Of Boolean; Можно множество описать как тип (type), а переменную через описание типа. Например: type Alfa = set of ‘a’. . ‘z’; Ten = set of 0. . 9; Number = set of ‘ 0’. . ‘ 9’; var B: Alfa; Index: Ten;
Обозначение + * = <> <= >= in Операция Объединение множеств Разность множеств Пересечение множеств Проверка эквивалентности двух множеств Проверка неэквивалентности двух множеств Проверка, является ли левое множество подмножеством правого множества Проверка, является ли правое множество подмножеством левого множества Проверка, входит ли элемент, указанный слева, в множество, указанное справа
Объединением двух множеств А и В называется множество, состоящее из всех элементов, принадлежащих хотя бы одному из множеств А и В. Например: [1, 2, 3, 4] + [3, 4, 5, 6] [1, 2, 3, 4, 5, 6] A + B
Разностью двух множеств А и В называется множество, состоящее из всех элементов множества, не принадлежащих множеству В. Например: [1, 2, 3, 4] - [3, 4, 5, 6] [1, 2] [3, 4, 5, 6] - [1, 2, 3, 4] [5, 6] A B
Пересечением двух множеств А и В называется множество, состоящее из всех элементов, принадлежащих одновременно множеству А и множеству В. Например: [1, 2, 3, 4] * [3, 4, 5, 6] [3, 4] A * B
Отношение Результат True False A=B A <> B A <= B Множества А и В совпадают Множества А и В не совпадают Все элементы А принадлежат В В противном случае A >= B Все элементы В принадлежат А В противном случае
Пусть переменная М описана в программе следующим образом: Var M: Set Of Byte; В разделе операторов ей присваивается значение: М: = [3, 4, 7, 9] Тогда операции отношения дадут следующие результаты: Операция отношения M = [4, 7, 3, 3, 9] M <> [4, 7, 3, 3, 9] [3, 4] <= M [ ] <=M M >= [1. . 10] M <= [3. . 9] Результат true false true
Это операция, устанавливающая связь между множеством и скалярной величиной, тип которой совпадает с базовым типом множества. Если x – такая скалярная величина, а М – множество, то операция вхождения записывается так: x in M Результат – логическая величина true, если значение х входит в множество М, и false - d в противном случае. Пример. Для описанного выше множества 4 in M – true 5 in M - false
Пример 1 Дана символьная строка. Подсчитать в ней количество знаков препинания. Program P 1; Var S: String; i, k: Byte; Begin Readln (S); k : = 0; For i : = 1 To Length(S) do IF S[i] in [‘. ’ , ‘ – ’, ‘ , ’, ‘ ; ’ , ’ : ’ , ’ ! ’ , ’ * ’ , ’ ? ’] Then k : = k + 1; Writeln (‘ Число знаков препинания равно’, k); End. В этом примере использована множественная константа с символьным типом элементов.
Пример 2. Ввести строку символов, состоящую из латинских букв, цифр и пробелов. Осуществить проверку правильности введенных символов. Program P 2; Var Str : string; L : Byte; Tru : Boolean; Begin Write. Ln(‘Введите строку’); Read. Ln(Str); L : = Length(Str); { число введенных символов} Tru : = L >0; { true, если не пустая строка} While Tru and (L >0) do Begin Tru : = Str[ L ] in [ ‘ 0’. . ‘ 9’, ‘A’. . ‘Z’, ‘a’. . ‘z’, ‘ ‘]; {проверка допустимости cимвола} Dec(L) ; {предыдущий символ} End; If Tru then Write. Ln(‘Правильная строка’) else Write. Ln(‘Неправильная строка’); End.
Пример 3. Даны две символьные строки, содержащие только строчные латинские буквы. Построить строку S 3, в которую войдут только общие символы строк S 1 и S 2 в алфавитном порядке и без повторений. Program P 2; Type Mset = Set Of ‘a’. . ‘z’; Var S 1, S 2, S 3: String; MS 1, MS 2, MS 3: Mset; C: Char; Procedure SM(S: String; Var MS: Mset); {Формирует множество MS из строки S} Var i : Byte; Begin MS : = [ ]; For i : = 1 to Length(S) do MS : = MS + [ S [ i ] ] End; Begin {Ввод исходных строк} Read. Ln(S 1); Read. Ln(S 2); SM(S 1, MS 1); SM(S 2, MS 2); { Формирует множества MS 1 и MS 2} MS 3 : = MS 1*MS 2; { Формирует пересечение множеств}
{ Формирование результирующей строки} S 3 : = ‘ ‘; For C : = ‘a’ to ‘z’ do If C in MS 3 then S 3 : = S 3 + C; Writeln (‘Рузультат: ’, S 3) End. Проверьте работу программы на следующих исходных данных: S 1 = ehnwdynxhdn S 2 = dzbepnaedkr Заполните строку для множеств: MS 1=[ ] MS 2=[ MS 3=[ ] ]
Упражнение 1 В программе присутствуют описания: Var P : Set of 0. . 9; i, j : integer; Если i=3 и j=5, то какое значение получит переменная Р при выполнении следующих операторов присваивания: a) P : = [i + 3, j div 2, j. . Sqr(i) – 3]; b) P : = [2*i. . j ]; c) P : = [ i, j, 2*i, 2*j ]. Упражнение 2 Вычислить значения отношений: a) [2] <> [2, 2, 2]; b) [4, 5, 6] = [4, 5, 6]; c) [2, 3, 5, 7] <= [1. . 9]; d) Trunc(3. 9) in [1, 3, 5]; e) f) g) h) [‘c’, ‘b’] = [‘c’. . ‘b’]; [3, 6. . 8] <= [2. . 7, 9]; [ ‘a’, ‘b’ ] = [‘b’, ‘a’]; Odd (4) in [ ].
Упражнения 3 Вычислить значения выражений: a) [1, 3, 5] + [2, 4]; b) [1, 3, 5] * [2, 4]; c) [1, 3, 5] – [2, 4]; d) [1. . 6] + [3. . 8]; e) [1. . 6] * [3. . 8]; f) [1. . 6] – [3. . 8]; g) [ ] + [4]; h) [ ] – [4]; i) [ ] *[4].
Конец
Множества.pptx