Основные алгоритмические конструкции
Элементарные шаги алгоритма можно объединить в следующие алгоритмические конструкции: линейные (последовательные), разветвляющиеся, циклические и рекурсивные.
Линейная алгоритмическая конструкция
Линейной называют алгоритмическую конструкцию, реализованную в виде последовательности действий (шагов), в которой каждое действие (шаг) алгоритма выполняется ровно один раз, причем после каждого i-го действия (шага) выполняется (i +1)-е действие (шаг), если i -е действие - не конец алгоритма.
Пример: опишем алгоритм сложения двух чисел на псевдокоде в виде блок-схемы.
Псевдокод:
1. Ввод двух чисел а, b.
2. Вычисляем сумму S = а + b.
3. Вывод S.
4. Конец.
Рисунок – блок-схема к примеру
Разветвляющаяся алгоритмическая конструкция
Разветвляющейся (или ветвящейся) называется алгоритмическая конструкция, обеспечивающая выбор между двумя альтернативами в зависимости от значения входных данных. При каждом конкретном наборе входных данных разветвляющийся алгоритм сводится к линейному. Различают неполное (если - то) и полное (если - то - иначе) ветвления. Полное ветвление позволяет организовать две ветви в алгоритме (то или иначе), каждая из которых ведет к общей точке их слияния, так что выполнение алгоритма продолжается независимо оттого, какой путь был выбран (рис).
Рисунок – Полное ветвление
Неполное ветвление предполагает наличие некоторых действий алгоритма только на одной ветви (то), вторая ветвь отсутствует, т.е. для одного из результатов проверки никаких действий выполнять не надо, управление сразу переходит к точке слияния (рис).
Рисунок – неполное ветвление
Пример: вывести значение наибольшего из двух чисел.
Псевдокод:
1. Ввод двух чисел а, b.
2. ЕСЛИ а > b, ТО «выводим а»,
ИНАЧЕ «выводим b»,
3. Конец.
Рисунок – Блок-схема к примеру
В данном примере реализовано полное ветвление. ЕСЛИ значения входных данных таковы, что а >b, ТО выполняется линейный алгоритм:
1. Ввод двух чисел а, b.
2. Вывод a,
ИНАЧЕ, когда а<b, выполняется линейный алгоритм:
1. Ввод двух чисел а, b.
2. Вывод b.
Вывод: алгоритм является разветвляющимся и состоит из двух ветвей.
Алгоритмическая конструкция «Цикл»
Циклической (или циклом) называют алгоритмическую конструкцию, в которой некая, идущая подряд группа действий (шагов) алгоритма может выполняться несколько раз, в зависимости от входных данных или условия задачи. Группа повторяющихся действий на каждом шагу цикла называется телом цикла. Любая циклическая конструкция содержит в себе элементы ветвящейся алгоритмической конструкции.
Рассмотрим три типа циклических алгоритмов: цикл с параметром (который называют арифметическим циклом), цикл с предусловием и цикл с постусловием (их называют итерационными).
Арифметический цикл
В арифметическом цикле число его шагов (повторений) однозначно определяется правилом изменения параметра, которое задается с помощью начального (N) и конечного (К) значении параметра и шагом (h) его изменения. Т.е., на первом шаге цикла значение параметра равно N, на втором N+h, на третьем – N+2h и т.д. На последнем шаге цикла значение параметра не больше К, но такое, что дальнейшее его изменение приведет к значению, большему, чем К.
Пример: Вывести 10 раз слово «Привет!».
Параметр цикла обозначим i, он будет отвечать за количество выведенных слов. При i = 1 будет выведено первое слово, при i = 2 будет выведено второе слова и т.д. Так как требуется вывести 10 слов, то последнее значение параметра i = 10. В заданном примере требуется 10 раз повторить одно и то же действие: вывести слово «Привет!».
Составим алгоритм, используя арифметический цикл, в котором правило изменения параметра i – 1, 10, 1. То есть начальное значение параметра i = 1; конечное значение i =10; шаг изменения h = 1. На рисунке представлена блок-схема алгоритма решения данной задачи.
Рисунок – Блок-схема к примеру
Цикл с предусловием
Количество шагов цикла заранее не определено и зависит от входных данных задачи. В данной циклической структуре сначала проверяется значение условного выражения (условие) перед выполнением очередного шага цикла. Если значение условного выражения истинно, исполняется тело цикла. После чего управление вновь передается проверке условия и т.д. Эти действия повторяются до тех пор, пока условное выражение не примет значение ЛОЖЬ. При первом же несоблюдении условия цикл завершается.
а б
Рисунок – Блок-схема цикла с предусловием
Блок-схема данной конструкции представлена на рисунке двумя способами; с помощью условного блока а и с помощью блока границы цикла б.
Особенностью цикла с предусловием является то, что если изначально условное выражение ложно, то тело цикла не выполнится ни разу.
Цикл с постусловием
Как и в цикле с предусловием, в циклической конструкции с постусловием заранее не определено число повторений тела цикла, оно зависит от входных данных задачи. В отличие от цикла с предусловием, тело цикла с постусловием всегда будет выполнено хотя бы один раз, после чего проверяется условие. В этой конструкции тело цикла будет выполняться до тех пор, пока значение условного выражения ложно. Как только оно становится истинным, выполнение команды прекращается. Блок-схема данной конструкции представлена на рисунке двумя способами: с помощью условного
блока а и с помощью блока управления б.
а б
Рисунок – Блок-схема цикла с постусловием
Рекурсивный алгоритм
Рекурсивным называется алгоритм, организованный таким образом, что в процессе выполнения команд на каком-либо шаге он прямо или косвенно обращается сам к себе.