`a`, `b`

advertisement
Множества
Программирование на языке Паскаль
Старший преподаватель кафедры
Компьютерных систем в управлении и проектировании
Потапова Евгения Андреевна
Вопросы входного контроля
- Как объявляются переменные
множественного типа данных ?
- Множественный тип данных относится к
простым или составным?
2
Множественный тип данных
Множественный тип является составным.
Значениями базового типа могут быть :
• Символы
• Ограниченный тип
• Перечислимый тип
Если базовый тип – ограниченный целый, то значения должны быть в
диапазоне от 0 до 255.
Количество элементов в множестве – не более 256
3
Операции над множествами:
• Объединение
A=[1,2,3]
B=[3,4,5]
А+В=> [1,2,3,4,5]
A
B
1,2,3 4,5
4
• Пересечение
A = [‘a’, ‘b’]
B= [‘a’, ‘b’, ’z’]
A*B=>[‘a’]
A
ba cz
B
5
• Разность
A=[1,2,3]
B=[1,3,4]
A-B=>[2]
B-A=>[4]
A
2
1,3,4
B
6
Над множествами возможны операции сравнения
<=, >=
Эти операции используются для определения, входит ли
множество А в множество В
A=[1,4] ; B=[1,2]
A<=B => False
C=[5]; D=[5,6]
C<=D => True
А
4 1,2
В
С
5,6
D
7
Стандартные процедуры для работы с множествами :
• Include(A, c) – включить элемент в множество
A:=A+[c];
• Exclude(A, c) – исключить элемент из множества
A:= A-[c]
Оператор IN – используется для проверки принадлежности
элемента множеству:
•
If ‘a’ in A then … - результат относится к булевскому типу:
Мы можем сказать ДА (true), элемент принадлежит данному
множеству,
либо НЕТ (false), элемент не принадлежит данному множеству.
8
Описание множеств в разделе описания переменных:
Var
A: set of ‘базовый тип’;
Добавить элемент в множество можно так:
A:=A+[‘a’];
D:=D+[b];
Include(A, f);
9
Ввод с клавиатуры и вывод на экран
Для ввода с клавиатуры нужно использовать вспомогательную
переменную базового типа, например:
Var A: set of 1..200;
k: 1..200;
i:integer;
Begin
A:=[]
Writeln(‘Vvedite znacheniya’);
For i:=1 to 10 do
Begin
Readln(k);
A:=A+[k];
{Include(A,k)}
End;
10
Для вывода на экран тоже используем вспомогательную
переменную базового типа:
……………..
For k:=1 to 200 do
If k in A then Writeln(k);
11
Запомните:
• Элементы множества не имеют порядковых номеров
• Элементы не повторяются (можно сказать, элемент либо входит в
множество, либо нет)
• Максимальное количество элементов в множестве 256
• Нельзя напрямую ввести элемент в множество с клавиатуры
• Нельзя напрямую вывести элемент множества на экран
12
Разберем пример 1:
Спортлото : 6 из 49.
Составьте программу, в которой загадываются, иначе говоря,
создаются, 6 разных чисел, значения которых никак не связаны друг с
другом, а величина лежит в диапазоне от 1 до 49.
Для решения будем использовать множества.
13
начало
'Lotereya 6 iz
49'
K:=0; A:=[]
нет
i=1,49
randomize
да
да
нет
I in A
i:=random(49)+1;
Вывод i
нет
Not(I in A)
да
A:=A+[i];
k:=k+1;
нет
да
конец
K=6
Блок-схема программы
14
Разберем пример 2:
Напечатать все натуральные числа от 10 до 32767, в
десятичной записи которых нет одинаковых цифр.
Решение простое, если использовать множества.
15
начало
'Chisla s
raznimi
chiframi'
нет
i=10,32767
да
t:=true;A:=[];
n:=i;
нет
да
t
n>0
конец
да
:
K:=n Mod 10
нет
нет
Вывод i
Not(k in A)
and t
да
A:=A+[k]
t:=false
N:=n div 10
Блок-схема программы
16
Разберем пример 3:
Дана строка. В алфавитном порядке напечатайте (по разу)
все малые латинские буквы, входящие в эту строку
не менее двух раза.
Решение простое, если использовать множества.
17
начало
Ввод
строки
A:=[‘a’..’z’]
i=1,length(s)
нет
Больше
одного
да
s[i] in A
нет
нет
B:=B+s[i]
S[i] in B
t=‘a’,’z’
да
да
C:=C+s[i]
нет
t in C
конец
да
Вывод t
Блок-схема программы
18
Разберем пример 4:
Дана строка символов. Подсчитайте количество различных
латинских малых букв, входящих в данную строку
Напишем программу
19
начало
A:=['a'..'z'];
C:=[];k:=0;
Вводим
строку
нет
i=1,length(s)
да
да
s[i] in A
t=‘a’,’z’
нет
нет
да
да
include(C,s[i])
t in C
нет
Вывод k
inc(k)
конец
20
Разберем пример 5:
Дана строка. В алфавитном порядке выведите на экран
Все малые латинские буквы, которые встречаются в
строке ровно один раз.
Напишем программу с использованием множеств.
21
Вопросы по теме:
• Каково максимальное количество элементов в множестве?
• Могут ли в множестве быть одинаковые элементы?
• Как описать переменную множественного типа?
22
В ходе лекции были рассмотрены следующие вопросы:
• множественные типы данных ( SET OF )
• особенности работы с множествами
• стандартные процедуры
• примеры программ с множественным типом данных
23
Спасибо за внимание!
24
Download