На рис. 10.1 представлены линейные, разветвляющиеся, циклические и иерархические алгоритмы.
Линейный алгоритм - это последовательность действий, выполняемых в порядке их естественного расположения, т.е. одно за другим (рис. 10.1,а).
Разветвляющийся - это алгоритм, в котором может нарушаться естественный порядок выполнения действий в зависимости от выполнения тех или иных поставленных условий. В таком алгоритме могут возникать различные направления развития вычислительного процесса, которые принято называть ветвями (рис. 10.1,б). Ветви могут сходиться в конце алгоритма, либо иметь различные окончания вычислительного процесса.
а) б) в) г) д) е)
Рис. 10.1. Алгоритмические структуры
Циклический - это алгоритм, в котором предусмотрено многократное выполнение одной и той же последовательности действий, называемых телом цикла. Цикл — повторение этой последовательности действий. При выполнении цикла изменяется значение некоторой переменной, которая называется параметром цикла. Когда параметр цикла достигнет заданного значения, цикл прекращается. Приведем общепринятые положения организации цикла:
|
|
1. Установить начальное значение параметра цикла;
2. Выполнить тело цикла;
3. Изменить параметр цикла;
4. Выполнить проверку: если параметр цикла не достиг заданного значения — возврат к пункту 2, иначе — к пункту 5;
5. Выход из цикла.
Проверка значения параметра цикла может выполняться в начале цикла (рис. 10.1,в). Такой алгоритм называют циклическим с предусловием или с защитой входа. Если проверка значения параметра цикла помещается в конце цикла (рис. 10.1,г), то такой тип алгоритма называют постусловием или свободным входом в цикл.
Существуют алгоритмы с заранее известным числом выполняемых циклов. Параметром цикла в таком случае является переменная, в которой накапливается количество выполняемых циклов - счетчик цикла. Когда будет выполнено заданное число циклов – осуществляется выход из цикла. Например, задачи обработки массивов данных сводятся к алгоритмам с заданным числом циклов.
Ряд задач сводятся к ЦА, в которых заранее неизвестно число выполняемых циклов. Например, определение суммы членов ряда с заданной точностью E, если задан общий член ряда аn. Параметром цикла в данном случае является значение текущего члена ряда. Выход из цикла произойдет при an ≤ E. При уточнении корня алгебраического уравнения методом половинного деления параметром цикла является переменная z= b-a. Выход из цикла при выполнении условия z ≤ E.
|
|
При решении задач с использованием итерационных формул yi+1 = f(yi,x), выход из цикла осуществляется при выполнении условия | yi+1 - yi | <=E, где Е — заданная точность.
Циклические алгоритмы бывают простые (рис. 10.1,в,г) и сложные (на рис. 10.1,д представлен сложный циклический алгоритм без детализации начальной установки и изменения параметров внутреннего и внешнего циклов). Например, при решении задачи табулирования функции двух переменных Z=f(x,y) используется сложный циклический алгоритм, где параметром внутреннего цикла является х = xнач., xкон., dxшаг., а параметром внешнего цикла y= yнач.,yкон.,dyшаг.. К сложным циклическим алгоритмам сводятся задачи обработки элементов двумерных массивов и т.д.
Иерархические алгоритмы (рис. 10.1,е) используют подчиненные алгоритмы (подпрограммы). Алгоритм, из которого происходит обращение к подчиненному алгоритму, называют основным. Из основного алгоритма может происходить неограниченное число обращений к подчиненным алгоритмам.