Циклические алгоритмические структуры — это алгоритмы, реализующие действия, повторяющиеся неоднократно.
Виды циклических алгоритмов
Циклом является повторное выполнение одних и тех же операций. Очерёдность повторяющихся в цикле операций называется телом цикла. Есть различные виды алгоритмов, имеющих циклическую структуру, а именно:
- Алгоритмы, в которых есть циклы с предварительным условием.
- Алгоритмы, в которых есть циклы с после условием (постусловием).
Такие алгоритмы считаются условными циклическими алгоритмами. Очевидно, что оба типа циклов являются взаимозаменяемыми, но при этом имеют следующие отличия:
- В алгоритме цикла с предварительным условием, проверка условия осуществляется до выполнения команд тела цикла, а в цикле с постусловием эта проверка делается после команд тела цикла.
- В алгоритме цикла с постусловием команды тела цикла один раз должны быть выполнены в любом случае, а в цикле с предварительным условием команды тела цикла могут вообще не выполняться.
- В алгоритме цикла с предварительным условием выполняется проверка условия, по которому цикл может быть продолжен, а в алгоритме цикла с постусловием выполняется проверка условия завершения цикла.
Циклические алгоритмические структуры
При формировании условных циклических алгоритмов необходимо учитывать следующие моменты:
- Для того, чтобы выполнение цикла не было бесконечным, команды, входящие в тело цикла, в любом случае должны оказывать влияние на выполнение условия цикла.
- Проверяемое условие обязано включать в свой состав корректные выражения и величины, которые определяются ещё до первоначального исполнения команд, входящих в тело цикла.
Помимо этого, есть ещё так называемый циклический алгоритм, обладающий безусловной структурой. Его применяют, когда количество необходимых выполнений команд тела цикла известно заранее.
Рисунок 1. Циклический алгоритм, обладающий безусловной структурой. Автор24 — интернет-биржа студенческих работ
Исполнение циклического алгоритма с безусловной структурой необходимо начать с задания переменной i исходного значения in. Далее следует выполнить проверку на превышение переменной i конечного значения iK. Если это превышение имеет место, то осуществляется завершение цикла и передача управления идущей за телом цикла команде. Иначе начинается выполнение команд тела цикла, и к значению переменной i прибавляется величина шага di. Затем опять проверяется величина переменной i и весь процесс повторяется. Естественно, что вместо безусловного циклического алгоритма можно использовать один из условных. Следует заметить, что переменная i считается циклическим параметром, поскольку она является переменной, изменяемой внутри цикла по некоторому правилу и оказывает непосредственное влияние на его завершение.
Приведём конкретный пример применения циклической алгоритмической структуры. Требуется определить максимальный общий делитель (МОД) пары натуральных чисел А и В. Входными данными являются: А и В. Выходными данными будут: А и МОД. Чтобы решить поставленную задачу можно использовать алгоритм Евклида, который заключается в последовательном уменьшении большего из чисел на величину меньшего. Эту процедуру следует выполнять до того момента, когда обе величины не сравняются. Эти действия показаны в таблице:
Рисунок 2. Поиск МОД для чисел А = 25 и В = 15. Автор24 — интернет-биржа студенческих работ
Блок-схема алгоритма решения этой задачи изображена на рисунке ниже.
Рисунок 3. Алгоритм поиска максимального общего делителя. Автор24 — интернет-биржа студенческих работ
Чтобы решить поставленную задачу в алгоритме применяется цикл с предварительным условием, а именно, команды тела цикла будут выполняться повторно до момента, когда А сравняется с В.
Рассмотрим следующий пример. Выполняется последовательный ввод чисел, признаком окончания последовательности является цифра нуль. Требуется выяснить, есть ли в этой числовой последовательности хотя бы пара одинаковых соседних чисел. В качестве входных данных будем рассматривать:
- X0 является текущим членом последовательности.
- X1 является последующим членом последовательности.
В качестве выходных данных будем рассматривать сигнал о присутствии в числовой последовательности пары одинаковых соседних компонентов. Ещё для работы алгоритма потребуется вспомогательная переменная F1, которая получит значение «истинно», когда будут обнаружены два одинаковых стоящих рядом компонента, и в противном случае она будет иметь значение «ложно». Блок-схема алгоритма решения данной задачи изображена на рисунке ниже.
Рисунок 4. Блок-схема. Автор24 — интернет-биржа студенческих работ
Использование в данном случае цикла с постусловием обусловлено тем обстоятельством, что требуется сначала выполнить сравнение пары компонентов последовательности, а далее уже принимать решение о завершении цикла.
В рассмотренных выше примерах заданы такие условия, что количество повторений команд тела цикла заранее неизвестно. Циклы этого типа являются циклами с неопределённым количеством повторов, а в общем случае может быть неизвестно о наличии конца цикла в принципе. Если в цикле можно определить заранее число повторений команд тела цикла по начальной информации, то такой цикл называется циклом с определимым количеством повторов. Приведём пример применения такого типа цикла. Необходимо сформировать таблицу значений функции y = esin(x)cos(x) на участке [0;p] при шаге 0.1. В качестве входных данных примем:
- Исходная величина аргумента равна нулю.
- Значение аргумента в конце равно р.
- Величина шага возрастания аргумента равна 0.1.
В качестве выходных данных примем:
- Весь диапазон значений аргумента Х.
- Все значения функции Y.
В начальных условиях задачи число повторений цикла не задаётся в явной форме, то есть задачу можно решить с применением цикла с предварительным условием. Алгоритм решения приведён на рисунке ниже:
Рисунок 5. Блок-схема. Автор24 — интернет-биржа студенческих работ
Но если взглянуть на проблему с обратной стороны, то заранее понятно изменение параметра цикла Х и известны его граничные значения. То есть имеется возможность вычислить число повторений цикла n, и затем использовать безусловный циклический оператор. Алгоритм решения задачи для этого варианта приведён на рисунке 6:
Рисунок 6. Блок-схема. Автор24 — интернет-биржа студенческих работ