"Информатика", Семакин И.Г., Залогова Л.А., Русаков С.В., Шестакова Л.В.
Циклический алгоритм позволяет многократно выполнять одни и те же команды, не записывая их заново для каждого повтора. Повторяющиеся команды образуют тело цикла, а условие или параметр определяет, когда цикл выполняется и когда останавливается. В цикле с предусловием условие проверяют до тела, в цикле с постусловием — после него. Если заранее известно число повторений, удобно использовать цикл с параметром; в любом случае нужно предусмотреть завершение.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Циклический алгоритм — алгоритм, в котором некоторый набор команд выполняется повторно. В отличие от последовательного выполнения, где каждая команда обычно проходит один раз, цикл возвращает исполнение к началу повторяемой части. Это нужно, когда одинаковое действие требуется выполнить несколько раз.
Тело цикла — команды, которые выполняются при каждом повторении. В записи алгоритма тело выделяют как отдельный блок после заголовка цикла или условной строки, например отступом либо ключевыми словами начала и конца цикла. Такое выделение помогает понять, какие именно действия будут повторяться.
Цикл с предусловием — цикл, в котором условие проверяется до выполнения тела. Если условие не разрешает продолжать работу уже при первой проверке, тело не запустится ни разу. Поэтому такой цикл нужен, когда повторение может оказаться ненужным с самого начала.
Цикл с постусловием — цикл, в котором условие проверяется после выполнения тела. Сначала команды выполняются, затем алгоритм решает, повторить ли их. Такой вид подходит, если действие необходимо совершить хотя бы один раз, например запросить первое значение перед проверкой.
Повторяющиеся действия позволяют описать алгоритм короче: вместо копирования одной и той же команды много раз указывают тело цикла и правило повторения. Это не только уменьшает запись, но и снижает риск случайно изменить одну из одинаковых команд. Если число действий изменится, часто достаточно поменять границу или условие цикла, а не переписывать всю последовательность.
В цикле с предусловием сначала проверяется условие продолжения или завершения, потому что алгоритм должен решить, безопасно ли выполнять очередной проход. Если проверка показывает, что продолжать нельзя, исполнение переходит за цикл. Поэтому при составлении алгоритма нужно отдельно подумать, какое значение условия будет до первого прохода и что оно означает.
В цикле с постусловием проверка стоит после тела, так как алгоритм сначала выполняет действие, а уже затем выясняет, требуется ли повтор. Это удобно, когда первое действие нужно независимо от результата проверки: например, сначала получить число, а затем проверить, не является ли оно нулём. Если поставить проверку раньше, первое значение может вообще не быть введено.
В цикле с параметром число повторений задают начальным значением параметра, шагом и конечной границей. На каждом проходе параметр изменяется на указанный шаг, поэтому при разборе нужно проследить его значения и понять, на каком значении цикл остановится. Ошибка в начальном значении, шаге или границе может добавить лишний проход или пропустить нужный.
Для завершения цикла данные должны изменяться так, чтобы условие выхода со временем стало истинным. Например, если цикл продолжается, пока счётчик меньше заданной границы, счётчик необходимо увеличивать. Если значение, от которого зависит проверка, остаётся прежним или меняется не в ту сторону, остановка не наступит и цикл станет бесконечным.
| Характеристика | Цикл с предусловием | Цикл с постусловием | Цикл с параметром |
|---|---|---|---|
| Когда проверяется условие или граница | До выполнения тела | После выполнения тела | При сравнении параметра с границей; параметр изменяется на каждом шаге |
| Может ли тело не выполниться ни разу | Да | Нет | Да, если начальное значение не требует прохода до границы |
| Что определяет число повторений | Результаты проверок условия | Результаты проверок после проходов | Начальное значение, шаг и конечная граница |
| Для каких задач удобно применять | Когда повторять нужно, пока выполняется условие | Когда действие требуется выполнить хотя бы один раз | Когда число повторений заранее известно |
Сравнивайте виды циклов по месту проверки: именно оно определяет, может ли тело не запуститься. Затем выясните, чем ограничено повторение — условием или параметром. Если действие обязательно нужно выполнить хотя бы один раз, выбирайте цикл с постусловием.
Задача 1. Записать алгоритм вывода пяти одинаковых сообщений. Число повторений задано заранее, поэтому удобно использовать цикл с параметром. Обозначим сообщение как «Привет», а параметр — i. При шаге 1 он примет пять значений от 1 до 5.
Ответ: тело цикла содержит команду вывода сообщения, а цикл выполняет его пять раз. При i = 6 проверка границы не проходит, и алгоритм заканчивается.
Задача 2. Вводить числа, пока не будет введён ноль, затем вывести их количество. Ноль служит признаком окончания, поэтому перед подсчётом нужно получить первое число. Если оно уже равно нулю, количество введённых ненулевых чисел равно нулю; это удобно учесть до запуска цикла.
Ответ: счётчик показывает количество чисел до нуля, не включая сам ноль. Первое значение вводится отдельно, чтобы условие цикла можно было проверить до тела.
Задача 3. Найти наименьшее натуральное число, сумма цифр которого больше заданного S. Начнём с числа 1 и будем проверять числа по возрастанию. Для каждого числа вычислим сумму цифр; если она не больше S, перейдём к следующему числу.
Ответ: найденное n — наименьшее подходящее натуральное число, потому что числа проверялись по возрастанию без пропусков. Увеличение n обеспечивает продвижение к условию завершения.
Считать, что цикл с предусловием обязательно выполнится хотя бы раз, — значит забыть о проверке до тела. Так ошибаются, перенося на него свойства цикла с постусловием. Проверьте начальное значение условия: если оно сразу запрещает повтор, тело не выполняется.
Ожидать, что цикл с постусловием может пропустить тело, тоже неверно: проверка там проводится только после первого прохода. Ошибку допускают, ориентируясь лишь на слово «условие», а не на порядок команд. Чтобы проверить себя, расположите шаги по порядку: сначала тело, затем проверка.
Если не менять переменную, от которой зависит выход, условие может оставаться прежним и цикл станет бесконечным. Часто забывают обновить счётчик или прочитать новое значение данных. Проследите переменные на двух-трёх проходах: если проверка не приближается к завершению, в алгоритме нет нужного продвижения.
Неверные начальное значение, шаг или граница параметра меняют число повторений. Например, слишком большой шаг может перескочить через нужную границу, а ошибочная граница — добавить проход. Проверьте список значений параметра вручную и сравните, сколько раз должно выполниться тело.
Для работы с циклами нужно уметь задавать условие и определять, истинно оно или ложно: именно от проверки зависит продолжение выполнения. Также важно прослеживать последовательность команд и изменение значений переменных, иначе трудно понять, когда цикл остановится. Циклические алгоритмы пригодятся в программировании, при обработке наборов данных и решении задач, где повторяются вычисления.
Чем циклический алгоритм отличается от линейного?
В линейном алгоритме команды выполняются последовательно, обычно по одному разу. Циклический алгоритм повторяет некоторую группу команд, пока это требуется условием или заданным числом повторений.
Почему цикл с предусловием может не выполнить ни одного повторения?
Условие в таком цикле проверяется до выполнения тела. Если оно сразу показывает, что выполнять команды не нужно, цикл завершится, не начавшись.
Какой цикл подходит, если заранее известно число повторений?
Обычно используют цикл с параметром. Его начальное значение, шаг изменения и конечная граница задают число проходов.
Почему цикл может стать бесконечным?
Так бывает, если переменные, влияющие на условие выхода, не меняются нужным образом. Проверка снова и снова даёт результат, при котором цикл продолжается.
В чём главное отличие цикла с постусловием от цикла с предусловием?
В цикле с постусловием условие проверяют после выполнения тела, а в цикле с предусловием — до него. Поэтому тело цикла с постусловием выполняется хотя бы один раз.
§ 6. Циклические алгоритмы