Часть второго условия 0
< x можно не проверять, так как если дело
дошло до проверки этого условия, то заведомо 0
< x. Если условие x ≤ 3 выполняется, то вычислим y := 0, иначе 3 < x, и проверяется
условие
x ≤ 5, проверка 3 < x исключается. Если действительно x ≤ 5,
то вычисляем
y :
= x - 3, а иначе 5 < x и вычисляем y := 2, исключая
проверку этого последнего условия.
Пример 9.6. Вычислить корни квадратного уравнения ax 2
+ bx +
+ c = 0, a ≠ 0, в области действительных чисел. В зависимости от
значения дискриминанта
D = b 2
- 4ac возможны три случая:
1) квадратное уравнение не имеет действительных корней, если
D < 0;
2) квадратное уравнение имеет два действительных равных корня,
если
D = 0: x 1
= x 2
= -b/2a;
3) квадратное уравнение имеет два действительных различных
корня, если
D > 0:
x b D a x b D a 1
2
2
2
=
- +
=
- -
;
.
Схема алгоритма приведена на рис. 9.13. Алгоритм содержит
сложное ветвление, являющееся композицией двух простых вет-
влений.
К операндам вещественного типа не следует применять операцию
отношения «
=» (равно), условие может не выполняться из-за неточ-
ного представления вещественных чисел в памяти ЭВМ и неизбежных
ошибок округления при вычислениях. В алгоритме отношение
D = 0
заменено отношением |
D|
< ε, где ε — допустимая погрешность окру-
гления.