Структурная методика построения алгоритмов.

advertisement
Ветвление
(развилка) – это такая форма организации
действий, при которой в зависимости от
выполнения или невыполнения некоторого
условия совершается либо одна, либо другая
последовательность действий
Ветвление
Неполное
да
У
Ц
Полное
нет
да
УЦ
нет
Х
Х1
Х2
IF <УЦ> THEN <X>;
IF <УЦ> THEN <X1> ELSE <X2> ;
Выполнение программы может пойти двумя различными
(альтернативными) путями.
НЕПОЛНОЕ
да
нет
При выполнении одной из ветвей никаких изменений данных,
поступающих на вход, не происходит.
ПОЛНОЕ
да
нет
РЕШЕНИЕ ЗАДАЧ
Значения данных переменных определим как А и В.
Даны значения двух величин, выбрать
большее
из них.
Результат
сохраним
в С.
Начало
Ввод А, В
да
А>В
С:=A
Вывод С
Конец
Program
Primer1;
А, В,
С – числа
вещественного типа.
Var A, B, C: real;
Begin
Write(‘Введите два числа ’);
Readln(A,B);
нет
If A > B then C:= A else C:=B;
Writeln(‘Большее:’, C:5:1);
С:=B
Readln;
End.
Анализ результатов.
Для проверки работоспособности данной
программы ее необходимо выполнить как min 2 раза:
1. А = 1, В = 2.
2. А = 2, В = 1.
Начало
Другой вариант решения этой же задачи
Ввод А, В
С:=A
да
В>C
С:=В
Вывод С
Конец
нет
Program Primer2;
Var A, B, C: real;
Begin
Write(‘Введите два числа ’);
Readln(A,B);
C:= A;
If B > C then C:= B;
Writeln(‘Большее:’, C:5:1);
Readln;
End.
Анализ результатов:
1. Введите два числа 1 2
Большее: 2.0
2. Введите два числа 2 1
Большее: 2.0
Даны значения трех величин, выбрать большее из них.
Напишите в тетради
Начало
• условие задачи
Ввод А,В,C
• что дано;
А>В
D:=A
D:=B
C>D
D:=C
Вывод D
Конец
• что получить;
Напишите
• тип
данных.
программу для
данного алгоритма.
Спишите
Проведите анализ
предложенный
результатов.
алгоритм
Начало
Второй вариант решения задачи
Ввод А,В,C
A>B
А>C
D:=A
B>C
D:=B
D:=C
Вывод D
Конец
D:=C
ЗАДАНИЕ.
1. Проанализируйте каким образом
соединяются алгоритмические конструкции при решении
данной задачи первым и вторым вариантами.
2. Какой способ решения данной задачи выберете вы?
При вложении более трех структур ВЕТВЛЕНИЯ возрастает
вероятность появления ошибок.
В этом случае можно использовать
структуру ВЫБОР
Program Primer4;
Var A, B, C,D: real;
Begin
Write(‘Введите три числа ’);
Readln(A,B,С);
If A > B then if A > C then D:=A
else D:=C
else if := B > C then D:=B
else D:=C;
Writeln(‘Большее:’, D:5:1);
Readln;
End.
Анализ результатов:
1. А = 1, В = 2, С = 3;
2. А = 1, В = 3, С = 2;
3. А = 2, В = 1, С = 3;
4. А = 2, В = 3, С = 1;
Для какого варианта написана данная программа?
5. А = 3, В = 1, С = 2;
Спишите программу в тетрадь рядом с соответствующей ей
6. А = 3, В = 2, С = 1.
вариантом алгоритма.
Дано X, вычислить Y(x)
Cамостоятельная работа
-x , если х ≤ 0;
Y = x, если 0 < х ≤ 2;
2, в остальных случаях.
y
2
x
0
2
X
X<= 0
Y=-X
X<= 2
Y= X
Y
Y=2
Дано X, вычислить Y(x)
Cамостоятельная работа
Y=
-x , если х ≤ 0;
x, если х > 0;
y
2
x
0
2
Y= - x - 1
Y= x + 1 Y= - x + 1
Y= x - 1
y
1
x
-1
00
1
Какое значение будет иметь переменная 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;
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
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
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
Задача
Даны радиус круга и сторона квадрата.
У какой фигуры площадь больше?
Дано:
R, A
R – радиус круга;
Skr=Pi*R^2
да
A – сторона квадрата.
Skv=A^2
Получить:
Skv >Skr
Сообщение «Площадь
квадрата больше» или
«Площадь круга больше»
Площадь квадр >
нет
Площадь круга >
Известны площадь круга и площадь квадрата
Уместится ли круг в квадрате?
R
A
Skv = A*A
Skr = Pi*R2
A = √ Skv
R = √ Skr/Pi
R
R
A
A
R
2R <= A
A
Планы
на вечер
да
Почитаю
книгу
В 19 часов
будет дождь?
нет
Пойду
гулять
Контрольная работа
1в.Задача: Известны два расстояния: одно в километрах,
другое – в футах (1 фут = 0.45 м). Какое из расстояний
меньше?
• Задание: Написать алгоритм и программу на ЯП Паскаль.
Проанализировать полученный результат.
2в.Задача: Известны две скорости: одна в километрах в
час, другая – в метрах в секунду. Какая из скоростей
больше?
• Задание: Написать алгоритм и программу на ЯП Паскаль.
Проанализировать полученный результат.
Известны два расстояния: одно в километрах, другое – в футах (1 фут
= 0.45 м). Какое из расстояний меньше?
Km,Fut
Fut_km=0.00045*Fut
да
В км <
Km < Fut_km
нет
В фут <
Известны площадь круга и площадь квадрата
Уместится ли квадрат в круге?
R
R
A
A
A <= 2R
Download