Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы алгоритмизации и программирования.docx
Скачиваний:
203
Добавлен:
14.02.2015
Размер:
94.58 Кб
Скачать

Разветвляющиеся алгоритмы. Команда ветвления

Существует широкий круг задач, при решении которых необходимо сделать определенный выбор в зависимости от выполнения некоторых условий. Процесс решения таких задач описывается алгоритмом, тип которого определяется как ветвящийся (разветвляющийся). В разветвляющихся алгоритмах принцип линейного автоматического перехода от команды к команде, от действия к действию в порядке естественного следования не является всеобщим, так как иногда возникает необходимость произвольного перехода к предписанию, то есть нарушения линейности переходов. Ветвящиеся алгоритмы допускают два способа представления – графический и словесный. При графическом представлении алгоритма ветвление (развилка, выбор дальнейших действий) организуется с помощью логического элемента (ромб с записанным внутри условием), имеющего один вход и несколько (в простейшем случае – два) выходов. Назначениелогического элемента – проверказаданного условия. В зависимости от выполнения (истинности) или невыполнения (ложности) проверяемого условия возможен выход соответственно на ветвь «Да» или «Нет». Пример: Задача: вычислить у =|х|. Дано: х – значение аргумента. Требуется: у - значение функции. Условие: Составим алгоритм решения данной задачи в графической форме. На схеме наглядно проявляется важноесвойство ветвящихся алгоритмов: их исполнение всегда проходит только по одному из возможных путей, который определяется конкретными текущими условиями, причем в каждом случае от начала алгоритма (входа) до его конца (выхода). Это свойство присуще всякому логически правильно составленному алгоритму и является признаком правильной организации ветвлений.

 

 

 

Циклические алгоритмы. Команда повторения

При составлении алгоритмов решения достаточно большого круга задач нередко возникает потребность в неоднократном повторении одних и тех же команд. Алгоритм, составленный с использованием многократных повторений одних и тех же действий (циклов), называется циклическим. Однако «неоднократно» не значит «до бесконечности». Организация циклов, никогда не приводящая к остановке в выполнении алгоритма (так называемое «зацикливание»), является нарушением требования его результативности – получения результата за конечное число шагов. Рассмотрим графическое представление циклического блока алгоритма. В него входят в качестве базовых следующие структуры: логический элемент с проверкой условия Р и блок S, называемый телом цикла. Здесь тело цикла S расположено после проверки условия Р (цикл с предусловием), поэтому может случиться, что при определенных условиях блок S не выполнится ни разу. Такой вариант организации цикла, управляемый предусловием, называется цикл-пока. При словесном представлении алгоритма команда, организующая повторение в цикле-пока, имеет вид: Пока Р>0, повторять 8 Конец цикла Таким образом, если Р не выполняется, то предусмотрен выход из цикла на команду записанную после строки «Конец цикла». Здесь условие Р – это условие на продолжение цикла. Возможен другой случай, когда тело цикла S выполняется по крайней мере один раз и будет повторяться до тех пор, пока не выполнится условие Р. Такая организация цикла, когда тело цикла, расположено перед проверкой условия Р, носит название цикла с постусловием или цикла-до. Истинность условия Р в этом случае – причина окончания цикла. Словесная форма команды, организующая цикл-до, приведена ниже: Повторять S пока не Р Конец цикла

 

Возможна ситуация с постусловием и при организации цикла-пока. Итак, цикл-до завершается, когда условие Р становится истинным, а цикл-пока – когда Р становился ложным, т.е. цикл-до выполнятся «до» истинности условия, а цикл-пока выполняется пока – указанное выражение остается истинным Современные языки программирования имеют достаточный выбор операторов, реализующих как цикл-пока, так и циклы-до. Отметим основное отличительное свойство циклических алгоритмов: количество действий, исполняемых в процессе выполнения алгоритма, может существенно превышать количество команд, из которых организован цикл. Чтобы в этом убедиться, достаточно алгоритм «проиграть», то есть выполнить его шаг за шагом при некоторых наборах допустимых исходных данных. Рассмотрим один из часто встречающихся вариантов цикла – так называемого цикла с параметром. Его характерная особенность – изменение управляющей переменной цикла с заданным шагом Для примера рассмотрим задачу табулирования функции на заданном интервале изменения ее аргумента Задача построить таблицу значений функции y=tgxна отрезке [А,В] с шагом Н. Дано: А – начальное значение аргумента; В – конечное значение аргумента; Н – шаг изменения аргумента. Требуется: у – значения функции. Условие: у = tg х, где х = А, А+Н,…, В. Представим алгоритм решения задачи табулирования функции в графическом виде (цикл с постусловием). Здесь тело цикла состоит из двух команд – вычисление у и печать значения аргумента х и соответствующего ему значения функции у. Команда х:= х+Носуществляет переход к следующему значению аргумента х, являющегося вместе с тем параметром цикла его управляющей переменной. Проверка условия, стоящая после выполнения тела цикла, показывает, что это цикл-до. Следовательно, это проверка на окончание работы цикла при достижении значений х > В.