Ветвление

Download Report

Transcript Ветвление

Ветвление
(развилка) – это такая форма организации
действий, при которой в зависимости от
выполнения или невыполнения некоторого
условия совершается либо одна, либо другая
последовательность действий
1
Ветвление
Неполное
да
УВ
Полное
нет
да
УВ
нет
Х
Х1
Х2
IF <УВ> THEN <X>;
IF <УВ> THEN <X1> ELSE <X2> ;
Выполнение программы может пойти двумя различными
(альтернативными) путями.
2
НЕПОЛНОЕ ветвление
да
нет
При выполнении одной из ветвей никаких изменений данных,
3
поступающих на вход, не происходит.
ПОЛНОЕ ветвление
да
нет
4
РЕШЕНИЕ ЗАДАЧ
ДАНО:
значения
данных
переменных
А и В.
Даны
значения
двух
величин,
выбратьопределим
большее как
из них.
ПОЛУЧИТЬ:
результат сохраним в Max
Program Primer1;
Начало
А, В, Max – числа вещественного типа.
Var A, B, Max: real;
Begin
МАТЕМАТИЧЕСКИЕ СВЯЗИ:
Max = A, если А > В
Ввод А, В
Write(‘Введите два числа ’);
Max = В, если В > А
Readln(A,B);
да
нет
If A > B then Max:= A else Max:=B;
А>В
Writeln(‘Большее:’, Max:5:1);
Max:=A
Max:=B Readln;
End.
Анализ результатов.
Для проверки работоспособности данной
Вывод Max
программы ее необходимо выполнить как min 2 раза:
1. А = 1, В = 2.
2. А = 2, В = 1.
Конец
5
Результат: Большее: 2.0
Вопрос: по какой ветви пойдет выполнение программы в случае А = В ?
Начало
Другой вариант решения этой же задачи
Ввод А, В
Max:=A
да
В > Max
Max:=В
Вывод Max
Конец
нет
Program Primer2;
Var A, B, Max: real;
Begin
Write(‘Введите два числа ’);
Readln(A,B);
Max:= A;
If B > Max then Max:= B;
Writeln(‘Большее:’, Max:5:1);
Readln;
End.
Анализ результатов:
1. Введите два числа 1 2
Большее: 2.0
2. Введите два числа 2 1
Большее: 2.0
6
Даны значения трех величин, выбрать большее из них.
Напишите в тетради
Начало
• условие задачи
Ввод А,В,C
• что дано;
да
А>В
Max:=A
да
нет
Max:=B
С > Max
Max:=C
Вывод Max
Конец
нет
• что получить;
• тип данных;
• связи между исходными
данными и результатами
Напишите
программу для
Спишите
данного алгоритма.
предложенный
Проведите анализ
алгоритм
результатов.
8
Начало
Второй вариант решения задачи
Ввод А,В,C
да
да
Max:=A
А>C
A>B
нет
нет
да
Max:=B
Max:=C
B>C
нет
Max:=C
Вывод Max
ЗАДАНИЕ.
Конец
1. Проанализируйте каким образом
соединяются алгоритмические конструкции при решении9
данной задачи первым и вторым вариантами.
Program Primer4;
Var A, B, C, Max: real;
Begin
Write(‘Введите три числа ’);
Readln(A,B,С);
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:5:1); 1. А = 1, В = 2, С = 3;
Readln;
2. А = 1, В = 3, С = 2;
3. А = 2, В = 1, С = 3;
End.
4. А = 2, В = 3, С = 1;
Для какого варианта написана данная программа?
5. А = 3, В = 1, С = 2;
Спишите программу в тетрадь рядом с соответствующим ей
6. А = 3, В = 2, С = 1.
вариантом алгоритма.
Известны радиус круга и сторона квадрата.
Задача
У какой фигуры площадь больше?
Распечатать сообщение: «Площадь … больше. S…=…»
R
A
Skr = Pi*R2
Skv = A*A
11
Дано:
R – радиус круга;
R, A
A – сторона квадрата.
(вещественные числа)
Skr=Pi*R*R
Получить:
Skv=A*A
да
Skv >Skr
Площадь квадр >
Skv
Сообщение «Площадь
квадрата больше. Skv = …»
нет
или «Площадь круга больше
Skr = …»
Площадь круга >
Skr
Sкруга = πR2;
Sквадрата = А2
12
Program Primer5;
Var r,a,skr,skv: real;
Begin
write(‘Введите радиус круга ’); readln(r);
write(‘Введите сторону квадрата ’); readln(а);
skr:= Pi*r*r;
skv:=a*a;
If skr > skv then begin
writeln(‘Площадь круга больше больше’);
writeln(‘Skr = ‘,skr:5:1)
end
else begin
writeln(‘Площадь квадрата больше’);
writeln(‘Skv = ‘,skr:5:1)
end;
ВНИМАНИЕ!
End.
В случае, если после Then (Else) более одного оператора
13
используются операторные скобки (Begin – End)
При вложении более трех структур ВЕТВЛЕНИЯ
возрастает вероятность появления ошибок.
В этом случае рекомендуется использовать
алгоритмическую конструкцию
ВЫБОР
14
Дано X, вычислить Y(x)
Задача
-x , если х ≤ 0;
Y = x, если 0 < х ≤ 2;
2, в остальных случаях.
y
2
x
0
2
20
Анализ
результатов:
X
да
Обратите
внимание
на условие!
X<= 2
нет
X<= 0
1. Х = -1, Y = 1;
2. Х = 0, Y = 0;
3. Х = 1, Y = 1;
4. Х = 5, Y = 2;
5. Х = 2, Y = 1;
да
Y=-X
Y= X
X<= 2
нет
Y=2
X, Y
21
Напишите программу для данного алгоритма. (При написании применяйте
Дано X, вычислить Y(x)
Cамостоятельная работа
Y=
-x , если х ≤ 0;
x, если х > 0;
y
Написать алгоритм,
программу.
2
Провести анализ
результатов
x
0
2
22
Y= - x - 1
Y= x + 1 Y= - x + 1
Y= x - 1
y
1
x
-1
0
1
Определить что дано, что надо получить.
Написать условие задачи в виде функции.
Написать алгоритм, программу.
Провести анализ результатов
23
Какое значение будет иметь переменная x после
выполнения операторов?
1. y := 7; z:= 4;
If y - z >= 3 Then x := y Else x := z; x:= x +4;
2. y := 7; z:= 4;
If y - z >= 3 Then x := y Else begin x := z; x:= x +4;
end;
3. x := 0; z := 5; y := 5;
If z > 2 Then If y > 2 Then x:= 1
Else x := 2;
24
y := 7; z:= 4;
If y - z >= 3 Then x := y Else x := z; x:= x +4;
y := 7
z:= 4
да
y - z >= 3
нет
x := z
x := y
x:= x +4
25
y := 7; z:= 4;
If y - z >= 3 Then x := y Else begin x := z; x:=x +4; end;
y := 7
z:= 4
да
x := y
y - z >= 3
нет
x := z
x:= x +4
26
x := 0; z := 5; y := 5;
If z > 2 Then If y > 2 Then x:= 1 Else x := 2;
x := 0
z := 5
y := 5
да
нет
z>2
да
x := 1
y>2
нет
x:= 2
27
Задача: «Оптимальный вес»
Написать программу, которая вычисляет
оптимальный вес пользователя, сравнивает
его с реальным и выдает рекомендацию о
необходимости поправиться или похудеть.
Оптимальный вес вычисляется по формуле:
рост (в см) – 100. Рекомендуемый вид
экрана во время работы программы:
Введите в одной строке через пробел рост (см) и вес (кг)
затем нажмите <Enter>
--> 170 68
Вам надо поправиться на 2.00 кг.
28
Математическая модель
Дано: rost – рост пользователя;
ves – вес пользователя. (Вещественные числа)
Получить: оптимальный вес – opt_v (вещест. число),
сравнить его с реальным и дать рекомендацию:
«Вам надо поправиться на opt_v – ves кг», если ves < opt_v
«Вам надо похудеть на ves – opt_v кг», если ves > opt_v
«Ваш вес оптимален!», если ves = opt_v
Связи: opt_v = rost – 100
29
Задание:
• Написать алгоритм в виде блок-схемы.
• Проверить верно ли написан алгоритм для
теста. (Сколько раз надо проверять?)
• Набрать программу.
• Проанализировать полученный результат.
• Списать программу в тетрадь
30
Известны площадь круга и площадь квадрата
Уместится ли круг в квадрате?
R
A
Skv = A*A
Skr = Pi*R2
A = √ Skv
R = √ Skr/Pi
31
R
R
A
2R < A
A
2R = A
R
2R > A
A
32
Алгоритм ветвления на бытовую тему
Планы
на вечер
да
Почитаю
книгу
В 19 часов
будет дождь?
нет
Пойду
гулять
33
Решение задач
1)
Задача: Известны два расстояния: одно в километрах,
другое – в футах (1 фут = 0.45 м). Какое из расстояний
меньше?
• Задание: Написать алгоритм и программу на ЯП Паскаль.
Проанализировать полученный результат.
2)
Задача: Известны две скорости: одна в километрах в
час, другая – в метрах в секунду. Какая из скоростей
больше?
• Задание: Написать алгоритм и программу на ЯП Паскаль.
Проанализировать полученный результат.
34
Перевод:
1 фут = 0.45 м = 0.00045км
1м = 20/9 фут
1км = 20000/9 фут
Перевод:
1 км/час = 1000/3600=10/36 м/сек.
1м/сек = 36/10 км/час
35
Известны два расстояния: одно в километрах, другое – в
футах (1 фут = 0.45 м). Какое из расстояний меньше?
Km,Fut
Fut_km=0.00045*Fut
да
В км <
Km
< Fut_km
нет
В фут <
36
Известны площадь круга и площадь квадрата
Уместится ли квадрат в круге?
A
R
R
A
A <= R√2
A > R√2
Решение задач
37