Пример 2. Составить схему алгоритма вычисления значения y=(2x+3)/(3x-4).
На первый взгляд, алгоритм нахождения значения y кажется линейным, но это не так. Приведём схему алгоритма.
начало ввод x d=3x-4 d=0 да невозможно
вычислить y
нет
. у=(2x+3)/d вывод y конец
Рис.3.Схема алгоритма решения примера 2.
В блоке 3 осуществляется проверка условия: равен ли нулю знаменатель при данном значении x. Если это условие выполняется, то переходим по стрелке "да" на блок 4 и выводим сообщение о невозможности вычисления y. Если условие не выполняется, то переходим по стрелке "нет" к блоку 5, где вычисляется y.
Это пример разветвляющегося процесса.
Разветвляющимся называется вычислительный процесс, реализация которого происходит по одной из нескольких заранее предусмотренных последовательностей действий (ветвей). Выбор ветви зависит от выполнения или невыполнения заданного условия.
Фрагмент схемы алгоритма с разветвлением задается так:
нет условие да
ветвь 1 ............ ........... ветвь 2
Рис.4.Схема разветвления.
Если условие выполняется, то проработает ветвь 2, иначе - ветвь 1. Возможны ситуации, когда одна из ветвей не содержит никаких действий. Такое разветвление называют обходом. Схематично это выглядит так:
нет
условие
да
ветвь 1 .
Рис.5.Схема разветвления-обхода.
В свою очередь ветвь 1 и (или) ветвь 2 могут содержать проверки других условий. Такие разветвляющиеся процессы будут рассмотрены ниже (примеры 3 и 4). После составления схемы алгоритма необходимо тщательно проверить её. Для этого используют метод выполнения алгоритма "вручную". При этом проверяющий выполняет алгоритм шаг за шагом и фиксирует на бумаге все промежуточные результаты.
Пример 3.Вычислить
x + a , если x = 3
y = x - a , если x > 3
x2 + a2 , если x < 3
Имеется три формулы для вычисления y. Выбор той или иной формулы зависит от заданных условий.
Предлагается следующая блок-схема решения этой задачи.
начало ввод x,a x>3 да y=x-a
нет
x=3 да y=x+a
нет
y=x2 +a2 Вывод y Конец
Рис.6.Схема алгоритма решения примера 3.
Пример 4. Даны различные x,y,z.. Вычислить u=min(x,max(y,z)).
Схема алгоритма выглядит так:
начало ввод x,y,z y>z да r= y
нет
r=z
x<r да u=x
нет
u=r вывод u конец
Рис.7.Схема алгоритма решения примера 4.
Была введена дополнительная переменная для хранения максимального значения r=max(y,z) .
Для осуществления полной проверки алгоритма разветвляющейся структуры необходимо взять несколько наборов исходных данных и для каждого набора сделать "ручную" проверку алгоритма. Наборы подбирают так, чтобы охватить все возможные ситуации, т.е. проверить все ветви схемы алгоритма.
Такими наборами, например, для данной задачи будут
1) x=1, y=2, z=3 2) x=1, y=3, z=2
3) x=5, y=2, z=3 4) x=5, y=3, z=2
Нетрудно найти ответы для этих исходных данных. Искомое u будет равно соответственно 1,1,3,3.