Алгоритм – это инструкция, описывающая порядок осуществления действий исполнителя для достижения им некоторого заданного результата.
Алгоритм: сущность и виды
Все алгоритмы содержат описание наборов команд и назначают очерёдность их исполнения. Может показаться, что алгоритмические команды всегда должны исполняться в строгой очерёдности, но это не всегда соответствует действительности. Чтобы алгоритм обладал свойством массовости, его структура должна предполагать возможность использования любых допустимых наборов исходных данных. Это означает, что возможны варианты, когда невозможно заранее знать, какую следующую команду алгоритма нужно будет исполнить. То есть появляется необходимость в выработке определённых указаний исполнителю, позволяющими осуществлять управление его работой в зависимости от текущей ситуации при исполнении алгоритма. По виду управляющих операций структурная организация алгоритмов делится на следующие типы:
- Алгоритмы линейного типа.
- Алгоритмы с ветвлениями.
- Алгоритмы с повторением операций или циклические.
Основные структуры алгоритмов
В самом простом варианте алгоритм предполагает поочерёдное исполнение всех команд вне зависимости от исходных данных задачи. К примеру, чтобы найти объём призмы, необходимо вычислить площадь основания, затем найти высоту призмы и в финале перемножить эти две величины. Такие операции требуется осуществить для определения объёма любых призм.
Но существуют такие алгоритмы, в которых заложены два вероятных случая выполнения операций. Определение конкретного варианта сопряжено с выполнением некоторого условия. К примеру, при решении квадратного уравнения необходимо вначале определить значение дискриминанта, а уже далее всё зависит от знака найденной величины. Если дискриминант отрицательный, то согласно алгоритму нужно вывести сообщение о том, что действительные корни отсутствуют, в случае положительного дискриминанта выполняется вычисление корней по определённым выражениям. То есть алгоритм, у которого предполагается осуществление разных операций в зависимости от итогов выполнения некоторых условий, определяется как разветвлённый алгоритм или алгоритм с ветвлением. Этот тип алгоритма включает в свой состав операции для двух допустимых вариантов, но при очередном его исполнении осуществляется лишь один из вариантов. А какой конкретно вариант, определяется исходными (входными) данными. Таким образом, алгоритм с ветвлением отличается от линейного алгоритма тем, что предполагает осуществление не всех операций без всякий исключений, а только лишь выбранных согласно условиям.
Третьим типом алгоритмом являются такие алгоритмы, которые предусматривают возможное повторное исполнение некоторого набора операций. К примеру, для определения суммы пары чисел (методом столбика) требуется вначале посчитать сумму цифр младшего разряда, запомнить последнее число из результата и выполнить перенос единицы в следующий разряд, если это необходимо. Затем аналогичным методом требуется определить сумму цифр следующего разряда и так далее. Повтор этого процесса осуществляется до тех пор, пока не будут просуммированы все числовые разряды. Число повторов определяется количеством цифр в суммируемых числах.
Алгоритмы, предполагающие повтор некоторого операционного набора, являются циклическими алгоритмами, или алгоритмами с повторениями. Набор или группа операций, которая подлежит повтору, считается телом цикла. Число повторных выполнений тела цикла зависит от заданного условия, которое является условием цикла. По итогам проверочных действий выполняется выбор дальнейших действий, а именно, или повторить выполнение команд тела цикла, или выполнить переход к следующим операциям. Выполнение циклического алгоритма предполагает прохождение следующих этапов:
- Действия по подготовке к циклу. Выполняются операции, связанные с начальными данными.
- Выполнение тела цикла. Описание действий, выполняемых многократно, для определения искомых значений, а также формирование величин, требуемых для повторения выполнений тела цикла.
- Определение условий продолжения цикла. Операции, определяющие потребность в повторном выполнении тела цикла.
Присутствие возвращения к уже выполнявшимся операциям является главной отличительной чертой циклических алгоритмов в сравнении с линейными и ветвящимися.
Все приведённые выше основные структуры алгоритмов считаются замкнутыми, то есть все они обладают одним входом и одним выходом. Это обстоятельство даёт возможность считать основные структурные организации алгоритмов отдельными элементами и применять каждую их них в качестве компонента любой другой. То есть, базовые структурные организации могут быть объединены или вложены одна в другую.
Под рекурсивным алгоритмом понимается такой алгоритм, в ходе выполнения которого осуществляется вызов самого себя на каком-то шаге алгоритма. При разрешении многих проблем используется специальный комплекс стандартизированных алгоритмических методик. Одним из примеров этих методик является использование комбинированных алгоритмов. При разрешении задачи иногда приходится выполнять деление алгоритма на отдельные участки, подразделы и каждый такой фрагмент может иметь структурную организацию алгоритма одного из приведённых выше типов. Алгоритм, в состав которого входят единовременно разные структуры, является комбинированным. Все приведённые структуры алгоритмов или их комбинационные наборы возможно применять при формировании алгоритма усложнённых задач.
Особым случаем комбинированной организации алгоритмической структуры считаются алгоритмы, в которых задействованы различные типы циклов, сменяющих друг друга. К примеру, в состав какого-либо цикла вложены один или целый комплект циклов. Такие структуры называются вложенными циклами.
Алгоритм, который построен только на применении базовых структурных организаций, считается структурным.