На практике очень редко встречается, чтобы последовательность всех требуемых действий была известна заранее. Если на минуту покинуть мир алгоритмизации и программирования, можно спроецировать ветвление на многие жизненные ситуации. Если на улице дождь, человек берёт зонт, если очень жарко, будет выбрана одежда полегче и т. д. Всё зависит от условия выбора. Как тут не вспомнить рыцаря на распутье из русских народных сказок?
| «Направо пойдёшь — жену найдёшь, налево пойдешь — богатым будешь, прямо пойдёшь — смерть найдёшь». Подобная ситуация заставляет принимать решения с учётом определённого условия. Если нужна жена, то витязь идёт направо, если богатство, то налево, если жизнь не мила, то прямо. Условия, которые влияют на решение, располагаются между словами «если» и «то». От значения условий зависит дальнейшее поведение. Когда условие выполняется, оно принимает значение «исти- |
на», когда нет — «ложь». Иногда анализ ситуации и выбор не вызывают особых затруднений, а иногда принять решение очень трудно. А всё потому, что принимающий решение пытается продумать каждый из вариантов и предугадать последствия выбора. Нельзя не вспомнить гроссмейстера, который анализирует позицию на ходы вперёд, прежде чем передвинуть фигуру на шахматной доске.

Компьютерные программы и игры тоже построены на выборе действий. А блок-схема при наличии ветвления приобретает иной вид:
Вычислительный процесс называется ветвящимся, если для его реализации предусмотрено несколько направлений (ветвей). Каждое отдельное направление процесса обработки данных является отдельной ветвью вычислений. Ветвление в программе — это выбор одной из нескольких последовательностей команд при выполнении программы. Выбор направления зависит от заранее определенного признака, который может относиться к исходным данным, к промежуточным или конечным результатам.
Признак характеризует свойство данных и имеет два или более значений.
Ветвящийся процесс, включающий в себя две ветви, называется простым (рис 6), более двух ветвей — сложным. Сложный ветвящийся процесс можно представить с помощью простых ветвящихся процессов.


Направление ветвления выбирается логической провер¬кой, в результате которой возможны два ответа: «да» — усло¬вие выполнено и «нет» — условие не выполнено.
Структура ВЕТВЛЕНИЕ существует в двух основных вариантах: полное и неполное
Полное ветвление
Предполагает выполнение действий для обеих веток в алгоритме:
Если [условие], то [действие 1], иначе [действие 2]
Структура такого алгоритма представлена на рис.8.
Неполное ветвление
Предполагает выполнение действий только на одной ветви алгоритма (вторая отсутствует):
Если [условие], то [действие]
Структура такого алгоритма представлена на рис.9.


Итак, при разработке разветвляющегося алгоритма необходимо учитывать:
• что данный вид алгоритма применяется при наличии операций условного перехода;
• он чаще используется для вычислений функций, заданных несколькими арифметическими выражениями (формулами);
• инструкции в нем выполняются в зависимости от значения условия.
Составим алгоритм решения квадратного уравнения ax2+bx+c=0
Задача хорошо знакома из математики. Исходными данными здесь являются коэффициенты а, b, с. Решением в общем случае будут два корня х1 и х2, которые вычисляются по формуле:

Алгоритм должен обладать важнейшим свойством, предъявляемым к качественным алгоритмам, — универсальностью по отношению к исходным данным. Какими бы ни были значения исходных данных, алгоритм должен приводить к определенному результату и завершать работу. Результатом может быть число, но может быть и сообщение о том, что при определенных данных задача решения не имеет. Недопустимы остановки в середине алгоритма из-за невозможности выполнить какую-то операцию. Упомянутое свойство в литературе по программированию называют результативностью алгоритма (в любом случае должен быть получен какой-то результат).
Чтобы построить универсальный алгоритм, сначала требуется тщательно проанализировать математическое содержание задачи.
Решение уравнения зависит от значений коэффициентов а, b, с. Вот анализ рассмотренной выше задачи (ограничиваемся только поиском действительных корней):
если а = 0, b = 0, с = 0, то любое х — решение уравнения;
если а = 0, b = 0, с ≠ 0, то уравнение действительных решений не имеет;
если а = 0, b ≠ 0, то это линейное уравнение, которое имеет одно решение х = -с/b
если а ≠ 0 и d= b2 — 4ас ≥0, то уравнение имеет два действительных корня (формулы приведены выше);
если a≠0 и d< 0, то уравнение не имеет действительных корней.
Блок-схема алгоритма приведена на рисунке.

В этом алгоритме многократно использована структурная команда ветвления. Общий вид команды ветвления в блок-схемах следующий.

Вначале проверяется условие (вычисляется отношение, логическое выражение). Если условие истинно, то выполняется серия 1 — последовательность команд, на которую указывает стрелка с надписью «да» (положительная ветвь). В противном случае выполняется серия 2 (отрицательная ветвь).
Если на ветвях одного ветвления содержатся другие ветвления, то такой алгоритм имеет структуру вложенных ветвлений. Именно такую структуру имеет алгоритм «Корни квадратного уравнения».
И так разветвляющиеся алгоритмы содержат альтернативные действия процесса обработки данных; в таких алгоритмах состав последующих действий зависит от результатов предыдущих действий (от выполнения некоторых условий).

Оставить комментарий