Основы программирования на C++, PASCAL
Если на ветвях одного ветвления содержатся другие ветвления, то такой алгоритм имеет структуру вложенных ветвлений. Именно такую структуру имеет алгоритм «Корни квадратного уравнения».
Рассмотрим следующую задачу: дано целое положительное число п. Требуется вычислить n! (n-факториал). Вспомним определение факториала:
На рис. 4 приведена блок-схема алгоритма. В нем используются три переменные целого типа: п — аргумент; i — промежуточная переменная; F — результат. Для проверки правильности алгоритма построена трассировочная таблица. В такой таблице для конкретных значений исходных данных по шагам прослеживается изменение переменных, входящих в алгоритм. Данная таблица составлена для случая п = 3.
Трассировка доказывает правильность алгоритма. Теперь запишем этот алгоритм на алгоритмическом языке.
Этот алгоритм имеет циклическую структуру. В алгоритме использована структурная команда цикл-пока, или цикл с предусловием. Общий вид команды цикл-пока в блок-схемах и в АЯ следующий:
пока условие, повторять
нц
серия
кц
Выполнение серии команд (тела цикла) повторяется, пока условие цикла истинно. Когда условие становится ложным, цикл заканчивает выполнение. Служебные слова нц и кц обозначают начало цикла и конец цикла соответственно.
Цикл с предусловием — это основная, но не единственная форма организации циклических алгоритмов. Другим вариантом является цикл с постусловием. Вернемся к алгоритму решения квадратного уравнения. К нему можно подойти с такой позиции: если а = 0, то это уже не квадратное уравнение и его можно не рассматривать. В таком случае будем считать, что пользователь ошибся при вводе данных, и следует предложить ему повторить ввод. Иначе говоря, в алгоритме будет предусмотрен контроль достоверности исходных данных с предоставлением пользователю возможности исправить ошибку. Наличие такого контроля — еще один признак хорошего качества программы.
В общем виде структурная команда цикл с постусловием или цикл—до представляется так:
Здесь используется условие окончания цикла. Когда оно становится истинным, цикл заканчивает работу.
Составим алгоритм решения следующей задачи: даны два натуральных числа М и N. Требуется вычислить их наибольший общий делитель — НОД(М, N).
Эта задача решается с помощью метода, известного под названием алгоритма Евклида