Transcript Презентация по теме "Разветвляющийся алгоритм"
Slide 1
Разветвляющийся
алгоритм
Slide 2
начало
Ввод
данных
команда 1
При решении задач,
в которых алгоритм имеет
линейную структуру
…
команда N
(линейный алгоритм),
команды выполняются
последовательно одна за другой.
Вывод
конец
Slide 3
В
разветвляющиеся
алгоритмы
входит
условие,
в
зависимости от выполнения или невыполнения которого
выполняется
та
или
иная
последовательность
(серий).
да
серия
команд 1
условие
выполнено?
нет
серия
команд 2
команд
Slide 4
Разветвляющимся
называется алгоритм,
в котором определенная
последовательность действий
зависит от выполнения или
невыполнения некоторого условия.
Slide 5
Разветвляющийся алгоритм
может быть представлен
в неполной или полной форме.
Slide 6
Неполная форма
алгоритм
да
серия
команд
условие
выполнено?
Slide 7
Неполная форма
алгоритм
да
серия
команд
условие
выполнено?
условный оператор Паскаля
if <условие> then <оператор>;
if <условие> then
begin
<оператор1>;
<оператор2>;
...
<операторN>
end;
Slide 8
Простой формой логического выражения
является операция отношения.
В Паскале допускаются все виды отношений:
< (меньше)
>= (больше или равно)
> (больше)
= (равно)
<= (меньше или равно)
< > (не равно)
Slide 9
Задача_1.
Выбрать большее из двух чисел
(применить неполную форму
разветвляющегося алгоритма)
Slide 10
начало
Ввод А,B
Max:=A
да
B>A
Max:=B
Вывод Max
конец
Задача_1.
Выбрать большее из двух чисел
(применить неполную форму
разветвляющегося алгоритма)
Slide 11
начало
Задача_1.
Выбрать большее из двух чисел
(применить неполную форму
разветвляющегося алгоритма)
Ввод А,B
Program BID_1;
Max:=A
Var A, B, Max: Integer;
Begin
да
Write (‘Введите значения чисел A и B ’);
B>A
ReadLn(A, B);
Max:=A;
Max:=B
If B>A then Max:=B;
WriteLn(‘Большее из двух чисел = ’, Max);
Вывод Max
ReadLn;
конец
End.
Slide 12
начало
Задача_1.
Выбрать большее из двух чисел
(применить неполную форму
разветвляющегося алгоритма)
Ввод А,B
Program BID;
Max:=A
Var A, B, Max: Integer;
Begin
да
Write (‘Введите значения чисел A и B’);
B>A
ReadLn(A, B);
Max:=A;
Max:=B
If B>A then
Max:=B;
Вывод Max
WriteLn(‘Большее из двух чисел =’, Max);
ReadLn;
конец
End.
Slide 13
Задача_2. Сортировка
(применить неполную форму
разветвляющегося алгоритма)
Slide 14
начало
Ввод X,Y
да
X>Y
C:=X
X:=Y
Y:=C
Вывод X,Y
конец
Задача_2. Сортировка
(применить неполную форму
разветвляющегося алгоритма)
Slide 15
начало
Задача_2. Сортировка
(применить неполную форму
разветвляющегося алгоритма)
Ввод X,Y
да
X>Y
C:=X
X:=Y
Y:=C
Вывод X,Y
конец
Program Sort;
Var X, Y, C: Integer;
Begin
Write (‘Введите значения чисел X и Y ’);
ReadLn(X, Y);
If X>Y then
Begin
C:=X;
X:=Y;
Y:=C
End;
WriteLn(‘Результат сортировки: ’ , X, Y);
ReadLn;
End.
Slide 16
Полная форма
алгоритм
да
серия
команд 1
условие
выполнено?
нет
серия
команд 2
Slide 17
Полная форма
условный оператор Паскаля
if <условие> then <оператор1> else <оператор 2>;
if <условие> then
begin
<оператор1_1>;
<оператор1_2>;
...
<оператор1_N>
end
else
begin
<оператор2_1>;
<оператор2 _2>;
...
<оператор2_N>
end;
Slide 18
Задача_3.
Выбрать большее из двух чисел
(применить полную форму
разветвляющегося алгоритма)
Slide 19
Задача_3.
Выбрать большее из двух чисел
начало
(применить полную форму
разветвляющегося алгоритма)
Ввод А,B
да
B>A
Max:=B
нет
Max:=A
Вывод Max
конец
Slide 20
Задача_3.
Выбрать большее из двух чисел
начало
(применить полную форму
разветвляющегося алгоритма)
Ввод А,B
Program BID_2;
да
B>A
нет
Var A, B, Max: Integer;
Begin
Max:=B
Max:=A
Write (‘Введите значения чисел A и B’);
ReadLn(A, B);
If B>A then Max:=B else Max:=A;
Вывод Max
WriteLn(‘Большее из двух чисел =’, Max);
ReadLn;
конец
End.
Slide 21
Задача_3.
Выбрать большее из двух чисел
начало
(применить полную форму
разветвляющегося алгоритма)
Ввод А,B
Program BID;
да
B>A
нет
Var A, B, Max: Integer;
Begin
Max:=B
Max:=A
Write (‘Введите значения чисел A и B’);
ReadLn(A, B);
If B>A
Вывод Max
then Max:=B
else Max:=A;
конец
WriteLn(‘Большее из двух чисел =’, Max);
ReadLn;
End.
Slide 22
Задание для самостоятельной работы:
Составить алгоритм в виде блок-схемы и программный код
для решения следующей задачи:
Нечётный USER
x , y x min y , z
2 x min y , z / max x , y
max
2
2
Чётный USER
max min a , b , min c , d
Slide 23
Задача_4.
Выбрать большее из трех чисел.
(полная форма условного оператора)
Slide 24
Задача_4.
Выбрать большее из трех чисел.
(полная форма условного оператора)
начало
Ввод
А,B,C
нет
A>B
Max1:=B
нет
да
Max1:=A
C>Max1
Max:=Max1
да
Max:=C
Вывод
Max
конец
Slide 25
Задача_4.
Выбрать большее из трех чисел.
(полная форма условного оператора)
начало
Ввод
А,B,C
Program BIT_a;
нет
A>B
да
Var A, B, C, Max1, Max: Integer;
Begin
Max1:=B
Max1:=A
Write (‘Введите значения чисел A, B и C’);
ReadLn(A, B, C);
нет
C>Max1
да
If A>B then Max1:=A else Max1:=B;
If C>Max1 then Max:=C else Max:=Max1;
Max:=Max1
Max:=C
WriteLn(‘Большее из трех чисел =’, Max);
ReadLn;
Вывод
Max
конец
End.
Slide 26
Задача_4.
Выбрать большее из трех чисел.
(вложенное полное ветвление)
Slide 27
начало
Ввод
А,B,C
нет
нет
Max:=C
B>C
A>B
да
нет
да
Max:=B
Max:=C
Вывод
Max
конец
A>С
да
Max:=A
Slide 28
Задача_4. Выбрать большее из трех чисел.
(вложенное полное ветвление)
Program BIT_b;
Var A, B, C, Max: Integer;
Begin
Write (‘Введите значения чисел A, B и C’);
ReadLn(A, B, C);
If A>B
then if A>C then Max:=A else Max:=C
else If B>C then Max:=B else Max:=C;
WriteLn(‘Большее из трех чисел =’, Max);
ReadLn;
End.
Slide 29
В записи логических выражений используются
также логические операции:
И
AND
ИЛИ
OR
НЕ
NOT
Slide 30
Задача_4.
Выбрать большее из трех чисел.
(с применением логических операций)
Slide 31
начало
Задача_4.
Выбрать большее из трех чисел.
(с применением логических операций)
Ввод
А,B,C
нет
нет
Max:=C
B>A
и
B>C
A>B
и
A>C
да
да
Max:=A
Max:=B
Вывод
Max
конец
Slide 32
начало
Задача_4.
Выбрать большее из трех чисел.
(с применением логических операций)
Ввод
А,B,C
Program BIT_с;
Var A, B, C, Max: Integer;
нет
A>B и A>C
да
Begin
Write (‘Введите значения чисел A, B и C’);
нет
B>A и B>C
да
Max:=A
ReadLn(A, B, C);
If (A>B) and (A>C) then Max:=A
Max:=C
Max:=B
else if
(B>A) and (B>C) then Max:=B
else Max:=C;
Вывод
Max
конец
WriteLn(‘Большее из трех чисел =’, Max);
ReadLn;
End.
Slide 33
Примеры логических выражений
Условие
Формат записи
Дробная часть вещественного
числа a равна 0
frac(a)=0
Целое число а четное
a mod 2 = 0
Целое число а нечетное
a mod 2 = 1
a mod 2 <> 0
Число K кратно семи
K mod 7 = 0
Каждое из чисел a,b
положительно
(a>0) and (b>0)
Только одно из чисел a,b
положительно
((a>0) and (b<=0)) or
(a<=0) and (b>))
Хотя бы одно из чисел a, b, c
отрицательно
(a<0) or (b<0) or (c<0)
Число Х удовлетворяет условию
a
(x>a) and (x
Число Х имеет значение в
промежутке [1,3]
(X>=1) and (X<=3)
Целые числа а и b имеют
одинаковую четность
((a mod 2 =0) and (b mod 2 =0)) or
((a mod 2 =1) and (b mod 2 =1))
Slide 34
Примеры логических выражений
Точка с координатами (x,y) лежит
в круге радиуса r с центром в
точке (a,b)
(sqr(x-a)+sqr(y-b)) < sqr(r)
Уравнение ax2+bx+c=0 не имеет
действительных корней
sqr(b)-4*a*c < 0
Точка (x,y) принадлежит первому
или третьему квадранту
((x>0) and (y>0)) or
((x<0) and (y<0))
Точка (x,y) принадлежит
внешности единичного круга с
центром в начале координат или
его второй четверти
(sqr(x)+sqr(y) > 1) or
((sqr(x)+sqr(y)<=1) and
(x<0) and (y>0)
Целые числа a и b являются
взаимно-противоположными
a=-b
Целые числа a и b являются
взамно-обратными
a*b=1
Число а больше среднего
арифметического положительных
чисел b,c,d
a>(b+c+d)/3
Число a не меньше среднего
геометрического чисел b,c,d
a>= exp((1/3)*Ln(b*c*d))
Slide 35
Оператора выбора CASE
условие_1
да
команда_1
условие_2
да
команда_2
Если оператор IF позволяет
сделать выбор из двух альтернатив,
то оператор выбора CASE
позволяет сделать выбор из
произвольного числа имеющихся
вариантов.
Формат оператора выбора CASE
case <выражение_селектор> of
условие_3
да
команда_3
<список 1>: <оператор 1>;
<список 2>: <оператор 2>;
<список 3>: <оператор 3>;
условие_N
да
...
команда_N
<список N>: <оператор N>
else
end;
<оператор>
Slide 36
Селектор интервального типа
Program Interval;
Var I: Integer;
Begin
Write (‘Введите значение числа I ’); readln (I);
case I of
1..10: writeln(‘Число ’ , I:4, ’ в диапазоне 1 – 10’);
11..20: writeln(‘Число ’ , I:4, ’ в диапазоне 11 – 20’);
21..30: writeln(‘Число ’ , I:4, ’ в диапазоне 21 –30’);
else
end;
End.
writeln(‘Число ’ , I:4, ’ вне пределов контроля’);
Slide 37
Селектор целочисленного типа
…
case i of
1: z:=i+ 10;
2: z:=i+100;
3: z:=i+1000;
end;
Slide 38
Program Day_Week;
Var
Задача 1: определить название
дня недели по его номеру.
Day: Byte;
Begin
Write (‘Введите номер дня недели: ’); readln (Day);
case Day of
1: writeln(‘Понедельник’);
2: writeln(‘Вторник’);
3: writeln(‘Среда’);
4: writeln(‘Четверг’);
5: writeln(‘Пятница’);
6: writeln(‘Суббота’);
7: writeln(‘Воскресенье’)
else writeln(‘ Вы ввели неверный номер дня недели’);
end;
End.
Slide 39
Задача 2: определить четность числа Х.
Program Chet_Nechet;
Var X: Integer;
Begin
Write(‘Введите значение числа X '); readln(X);
case X mod 2 of
0: writeln(‘Число ', X,' - четное');
1: writeln(‘Число ', X,' - нечетное');
end;
end.
Slide 40
ГБОУ Центр образования № 953
автор работы: учитель информатики и ИКТ
Рябова Елена Васильевна
2009 год
Разветвляющийся
алгоритм
Slide 2
начало
Ввод
данных
команда 1
При решении задач,
в которых алгоритм имеет
линейную структуру
…
команда N
(линейный алгоритм),
команды выполняются
последовательно одна за другой.
Вывод
конец
Slide 3
В
разветвляющиеся
алгоритмы
входит
условие,
в
зависимости от выполнения или невыполнения которого
выполняется
та
или
иная
последовательность
(серий).
да
серия
команд 1
условие
выполнено?
нет
серия
команд 2
команд
Slide 4
Разветвляющимся
называется алгоритм,
в котором определенная
последовательность действий
зависит от выполнения или
невыполнения некоторого условия.
Slide 5
Разветвляющийся алгоритм
может быть представлен
в неполной или полной форме.
Slide 6
Неполная форма
алгоритм
да
серия
команд
условие
выполнено?
Slide 7
Неполная форма
алгоритм
да
серия
команд
условие
выполнено?
условный оператор Паскаля
if <условие> then <оператор>;
if <условие> then
begin
<оператор1>;
<оператор2>;
...
<операторN>
end;
Slide 8
Простой формой логического выражения
является операция отношения.
В Паскале допускаются все виды отношений:
< (меньше)
>= (больше или равно)
> (больше)
= (равно)
<= (меньше или равно)
< > (не равно)
Slide 9
Задача_1.
Выбрать большее из двух чисел
(применить неполную форму
разветвляющегося алгоритма)
Slide 10
начало
Ввод А,B
Max:=A
да
B>A
Max:=B
Вывод Max
конец
Задача_1.
Выбрать большее из двух чисел
(применить неполную форму
разветвляющегося алгоритма)
Slide 11
начало
Задача_1.
Выбрать большее из двух чисел
(применить неполную форму
разветвляющегося алгоритма)
Ввод А,B
Program BID_1;
Max:=A
Var A, B, Max: Integer;
Begin
да
Write (‘Введите значения чисел A и B ’);
B>A
ReadLn(A, B);
Max:=A;
Max:=B
If B>A then Max:=B;
WriteLn(‘Большее из двух чисел = ’, Max);
Вывод Max
ReadLn;
конец
End.
Slide 12
начало
Задача_1.
Выбрать большее из двух чисел
(применить неполную форму
разветвляющегося алгоритма)
Ввод А,B
Program BID;
Max:=A
Var A, B, Max: Integer;
Begin
да
Write (‘Введите значения чисел A и B’);
B>A
ReadLn(A, B);
Max:=A;
Max:=B
If B>A then
Max:=B;
Вывод Max
WriteLn(‘Большее из двух чисел =’, Max);
ReadLn;
конец
End.
Slide 13
Задача_2. Сортировка
(применить неполную форму
разветвляющегося алгоритма)
Slide 14
начало
Ввод X,Y
да
X>Y
C:=X
X:=Y
Y:=C
Вывод X,Y
конец
Задача_2. Сортировка
(применить неполную форму
разветвляющегося алгоритма)
Slide 15
начало
Задача_2. Сортировка
(применить неполную форму
разветвляющегося алгоритма)
Ввод X,Y
да
X>Y
C:=X
X:=Y
Y:=C
Вывод X,Y
конец
Program Sort;
Var X, Y, C: Integer;
Begin
Write (‘Введите значения чисел X и Y ’);
ReadLn(X, Y);
If X>Y then
Begin
C:=X;
X:=Y;
Y:=C
End;
WriteLn(‘Результат сортировки: ’ , X, Y);
ReadLn;
End.
Slide 16
Полная форма
алгоритм
да
серия
команд 1
условие
выполнено?
нет
серия
команд 2
Slide 17
Полная форма
условный оператор Паскаля
if <условие> then <оператор1> else <оператор 2>;
if <условие> then
begin
<оператор1_1>;
<оператор1_2>;
...
<оператор1_N>
end
else
begin
<оператор2_1>;
<оператор2 _2>;
...
<оператор2_N>
end;
Slide 18
Задача_3.
Выбрать большее из двух чисел
(применить полную форму
разветвляющегося алгоритма)
Slide 19
Задача_3.
Выбрать большее из двух чисел
начало
(применить полную форму
разветвляющегося алгоритма)
Ввод А,B
да
B>A
Max:=B
нет
Max:=A
Вывод Max
конец
Slide 20
Задача_3.
Выбрать большее из двух чисел
начало
(применить полную форму
разветвляющегося алгоритма)
Ввод А,B
Program BID_2;
да
B>A
нет
Var A, B, Max: Integer;
Begin
Max:=B
Max:=A
Write (‘Введите значения чисел A и B’);
ReadLn(A, B);
If B>A then Max:=B else Max:=A;
Вывод Max
WriteLn(‘Большее из двух чисел =’, Max);
ReadLn;
конец
End.
Slide 21
Задача_3.
Выбрать большее из двух чисел
начало
(применить полную форму
разветвляющегося алгоритма)
Ввод А,B
Program BID;
да
B>A
нет
Var A, B, Max: Integer;
Begin
Max:=B
Max:=A
Write (‘Введите значения чисел A и B’);
ReadLn(A, B);
If B>A
Вывод Max
then Max:=B
else Max:=A;
конец
WriteLn(‘Большее из двух чисел =’, Max);
ReadLn;
End.
Slide 22
Задание для самостоятельной работы:
Составить алгоритм в виде блок-схемы и программный код
для решения следующей задачи:
Нечётный USER
x , y x min y , z
2 x min y , z / max x , y
max
2
2
Чётный USER
max min a , b , min c , d
Slide 23
Задача_4.
Выбрать большее из трех чисел.
(полная форма условного оператора)
Slide 24
Задача_4.
Выбрать большее из трех чисел.
(полная форма условного оператора)
начало
Ввод
А,B,C
нет
A>B
Max1:=B
нет
да
Max1:=A
C>Max1
Max:=Max1
да
Max:=C
Вывод
Max
конец
Slide 25
Задача_4.
Выбрать большее из трех чисел.
(полная форма условного оператора)
начало
Ввод
А,B,C
Program BIT_a;
нет
A>B
да
Var A, B, C, Max1, Max: Integer;
Begin
Max1:=B
Max1:=A
Write (‘Введите значения чисел A, B и C’);
ReadLn(A, B, C);
нет
C>Max1
да
If A>B then Max1:=A else Max1:=B;
If C>Max1 then Max:=C else Max:=Max1;
Max:=Max1
Max:=C
WriteLn(‘Большее из трех чисел =’, Max);
ReadLn;
Вывод
Max
конец
End.
Slide 26
Задача_4.
Выбрать большее из трех чисел.
(вложенное полное ветвление)
Slide 27
начало
Ввод
А,B,C
нет
нет
Max:=C
B>C
A>B
да
нет
да
Max:=B
Max:=C
Вывод
Max
конец
A>С
да
Max:=A
Slide 28
Задача_4. Выбрать большее из трех чисел.
(вложенное полное ветвление)
Program BIT_b;
Var A, B, C, Max: Integer;
Begin
Write (‘Введите значения чисел A, B и C’);
ReadLn(A, B, C);
If A>B
then if A>C then Max:=A else Max:=C
else If B>C then Max:=B else Max:=C;
WriteLn(‘Большее из трех чисел =’, Max);
ReadLn;
End.
Slide 29
В записи логических выражений используются
также логические операции:
И
AND
ИЛИ
OR
НЕ
NOT
Slide 30
Задача_4.
Выбрать большее из трех чисел.
(с применением логических операций)
Slide 31
начало
Задача_4.
Выбрать большее из трех чисел.
(с применением логических операций)
Ввод
А,B,C
нет
нет
Max:=C
B>A
и
B>C
A>B
и
A>C
да
да
Max:=A
Max:=B
Вывод
Max
конец
Slide 32
начало
Задача_4.
Выбрать большее из трех чисел.
(с применением логических операций)
Ввод
А,B,C
Program BIT_с;
Var A, B, C, Max: Integer;
нет
A>B и A>C
да
Begin
Write (‘Введите значения чисел A, B и C’);
нет
B>A и B>C
да
Max:=A
ReadLn(A, B, C);
If (A>B) and (A>C) then Max:=A
Max:=C
Max:=B
else if
(B>A) and (B>C) then Max:=B
else Max:=C;
Вывод
Max
конец
WriteLn(‘Большее из трех чисел =’, Max);
ReadLn;
End.
Slide 33
Примеры логических выражений
Условие
Формат записи
Дробная часть вещественного
числа a равна 0
frac(a)=0
Целое число а четное
a mod 2 = 0
Целое число а нечетное
a mod 2 = 1
a mod 2 <> 0
Число K кратно семи
K mod 7 = 0
Каждое из чисел a,b
положительно
(a>0) and (b>0)
Только одно из чисел a,b
положительно
((a>0) and (b<=0)) or
(a<=0) and (b>))
Хотя бы одно из чисел a, b, c
отрицательно
(a<0) or (b<0) or (c<0)
Число Х удовлетворяет условию
a
(x>a) and (x
Число Х имеет значение в
промежутке [1,3]
(X>=1) and (X<=3)
Целые числа а и b имеют
одинаковую четность
((a mod 2 =0) and (b mod 2 =0)) or
((a mod 2 =1) and (b mod 2 =1))
Slide 34
Примеры логических выражений
Точка с координатами (x,y) лежит
в круге радиуса r с центром в
точке (a,b)
(sqr(x-a)+sqr(y-b)) < sqr(r)
Уравнение ax2+bx+c=0 не имеет
действительных корней
sqr(b)-4*a*c < 0
Точка (x,y) принадлежит первому
или третьему квадранту
((x>0) and (y>0)) or
((x<0) and (y<0))
Точка (x,y) принадлежит
внешности единичного круга с
центром в начале координат или
его второй четверти
(sqr(x)+sqr(y) > 1) or
((sqr(x)+sqr(y)<=1) and
(x<0) and (y>0)
Целые числа a и b являются
взаимно-противоположными
a=-b
Целые числа a и b являются
взамно-обратными
a*b=1
Число а больше среднего
арифметического положительных
чисел b,c,d
a>(b+c+d)/3
Число a не меньше среднего
геометрического чисел b,c,d
a>= exp((1/3)*Ln(b*c*d))
Slide 35
Оператора выбора CASE
условие_1
да
команда_1
условие_2
да
команда_2
Если оператор IF позволяет
сделать выбор из двух альтернатив,
то оператор выбора CASE
позволяет сделать выбор из
произвольного числа имеющихся
вариантов.
Формат оператора выбора CASE
case <выражение_селектор> of
условие_3
да
команда_3
<список 1>: <оператор 1>;
<список 2>: <оператор 2>;
<список 3>: <оператор 3>;
условие_N
да
...
команда_N
<список N>: <оператор N>
else
end;
<оператор>
Slide 36
Селектор интервального типа
Program Interval;
Var I: Integer;
Begin
Write (‘Введите значение числа I ’); readln (I);
case I of
1..10: writeln(‘Число ’ , I:4, ’ в диапазоне 1 – 10’);
11..20: writeln(‘Число ’ , I:4, ’ в диапазоне 11 – 20’);
21..30: writeln(‘Число ’ , I:4, ’ в диапазоне 21 –30’);
else
end;
End.
writeln(‘Число ’ , I:4, ’ вне пределов контроля’);
Slide 37
Селектор целочисленного типа
…
case i of
1: z:=i+ 10;
2: z:=i+100;
3: z:=i+1000;
end;
Slide 38
Program Day_Week;
Var
Задача 1: определить название
дня недели по его номеру.
Day: Byte;
Begin
Write (‘Введите номер дня недели: ’); readln (Day);
case Day of
1: writeln(‘Понедельник’);
2: writeln(‘Вторник’);
3: writeln(‘Среда’);
4: writeln(‘Четверг’);
5: writeln(‘Пятница’);
6: writeln(‘Суббота’);
7: writeln(‘Воскресенье’)
else writeln(‘ Вы ввели неверный номер дня недели’);
end;
End.
Slide 39
Задача 2: определить четность числа Х.
Program Chet_Nechet;
Var X: Integer;
Begin
Write(‘Введите значение числа X '); readln(X);
case X mod 2 of
0: writeln(‘Число ', X,' - четное');
1: writeln(‘Число ', X,' - нечетное');
end;
end.
Slide 40
ГБОУ Центр образования № 953
автор работы: учитель информатики и ИКТ
Рябова Елена Васильевна
2009 год