Презентация по теме "Разветвляющийся алгоритм"

Download Report

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 год