"Информатика. (в 2 частях)", Поляков К.Ю., Еремин Е.А.
Циклический алгоритм позволяет повторять одну и ту же последовательность команд, не записывая её заново для каждого шага. Он нужен, когда программа обрабатывает много значений, вычисляет сумму или ждёт ввода пользователя. Повторениями управляет параметр цикла или условие: в первом случае число шагов обычно известно заранее, во втором цикл продолжается, пока выполняется проверка. Чтобы цикл с условием завершился, данные должны изменяться так, чтобы условие стало ложным.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Циклический алгоритм — алгоритм, в котором одна и та же последовательность команд выполняется многократно. Например, чтобы вывести несколько чисел, не нужно отдельно записывать команду для каждого из них. Алгоритм повторяет нужные действия по заданному правилу. Это помогает делать запись короче и не пропускать одинаковые шаги.
Тело цикла — команды, которые повторяются при каждом выполнении цикла. Если цикл выводит числа, телом может быть команда вывода текущего числа. В теле может быть и несколько команд, например изменение суммы и вывод результата. Понимание того, какие действия входят в тело, помогает отличить повторяемые команды от тех, что выполняются один раз.
Параметр цикла — переменная, которая принимает последовательность значений и определяет число повторений цикла с параметром. Например, параметр может последовательно принимать целые значения от 1 до 5. Для каждого значения выполняется тело цикла. Такой параметр нужен, чтобы управлять повторениями по заранее заданному диапазону.
Условие цикла — проверка, от результата которой зависит, продолжится выполнение цикла или завершится. Например, проверяется, не ввёл ли пользователь число 0. Пока проверка даёт нужный для продолжения результат, тело выполняется снова. Условие нужно, чтобы связать повторение с текущими данными, а не только с заранее подсчитанным числом шагов.
Повторяющиеся действия удобно описывать циклом, потому что одинаковые команды достаточно записать один раз. Внутри конструкции указывают тело цикла и правило, которое определяет повторение. Без цикла пришлось бы копировать команды для каждого шага, а при изменении действия — исправлять каждую копию. Цикл уменьшает такую работу и помогает сохранить одинаковый порядок действий на всех повторениях.
В цикле с параметром число повторений задаётся заранее, потому что известны значения, которые должен принять параметр. Например, если нужно выполнить действие для чисел от 1 до 5, алгоритм перебирает эти значения по очереди. На каждом шаге параметр получает очередное значение, а тело выполняется для него. Такой способ удобен для перебора диапазона, поскольку количество шагов можно определить до запуска алгоритма.
В цикле с условием повторение зависит от результата проверки, а не от заранее указанного количества шагов. Это полезно, когда заранее неизвестно, сколько раз придётся выполнять действие: например, пользователь может вводить числа, пока не введёт специальное значение. После каждого ввода проверяется условие, и программа решает, продолжать ли работу. Поэтому число повторений в таком алгоритме может стать известно только во время выполнения.
Выполнение цикла можно представить как последовательность действий: проверяется правило повторения, выполняется тело, затем алгоритм возвращается к проверке или переходит к следующему значению параметра. Такая последовательность объясняет, почему расположение команд имеет значение. Если проверка требует продолжить цикл, тело запускается ещё раз; если правило больше не выполняется, управление переходит к командам после цикла. Так алгоритм не теряет связь между очередным шагом и условием повторения.
Чтобы цикл с условием завершился, внутри него должны изменяться данные, участвующие в проверке. Например, при вводе чисел очередной ввод может приблизить выполнение к появлению нуля. Если нужные данные не меняются, условие может всё время оставаться истинным, и программа будет повторять тело бесконечно. Поэтому при составлении алгоритма нужно заранее найти действие, которое приводит к завершению, и проверить, что оно действительно выполняется.
| Свойство | Цикл с параметром | Цикл с условием |
|---|---|---|
| Как определяется повторение | Параметр перебирает значения заданного диапазона | Проверяется условие продолжения |
| Когда удобно применять | Когда нужно перебрать известный диапазон | Когда повторение зависит от данных или ввода |
| Известно ли число повторений заранее | Обычно известно | Может быть неизвестно |
| Что должно изменяться при выполнении | Значение параметра переходит к следующему | Данные, от которых зависит условие |
| Причина завершения | Параметр проходит заданный диапазон | Условие перестаёт выполняться |
Сначала определите, известно ли заранее, сколько раз понадобится повторить действие. Если известен диапазон значений, обычно проще выбрать цикл с параметром; если завершение зависит от события или введённых данных — цикл с условием. Сравните также, какое изменение должно происходить на каждом шаге, чтобы алгоритм не повторял действия бесконечно.
Нужно вывести пять чисел в порядке возрастания, поэтому число повторений известно заранее. Подойдёт цикл с параметром, который примет значения от 1 до 5. В теле достаточно вывести текущее значение параметра.
Ответ: программа выводит 1, 2, 3, 4, 5. При проверке диапазона полезно пересчитать значения вместе с начальным и конечным: здесь их пять. Если ошибочно начать с 0 или остановиться перед 5, результат будет отличаться от условия.
Нужно сложить все целые числа от 1 до заданного n, значит, каждое число диапазона следует обработать по одному разу. Для этого используем цикл с параметром, а сумму будем накапливать в отдельной переменной. Начальное значение суммы выбираем равным 0, потому что до сложения слагаемых результат ещё не накоплен.
Ответ: результат равен 1 + 2 + … + n. Например, при n = 4 получаем 0 + 1 + 2 + 3 + 4 = 10. Проверка начального значения и границ важна: если не включить n или начать с 0 вместо 1, набор слагаемых изменится.
Пользователь вводит числа, пока не введёт 0; ноль служит сигналом завершения и не должен попасть в подсчёт. Количество вводимых значений заранее неизвестно, поэтому подойдёт цикл с условием. Счётчик увеличиваем только для ненулевых чисел, а каждый новый ввод даёт возможность проверить условие снова.
Ответ: программа выводит количество чисел до нуля, не считая сам ноль. Если сразу введён 0, счётчик останется равным 0. Условие проверяют после каждого ввода, поэтому завершающее значение не учитывается.
Можно неправильно посчитать повторения цикла с параметром, перепутав начальное и конечное значения или не учтя, что границы входят в диапазон. Это часто происходит, когда считают расстояние между границами, а не сами значения. Проверьте первый и последний шаги и перечислите значения параметра; например, от 1 до 5 включительно — пять повторений.
В цикле с условием иногда не изменяют данные, от которых зависит проверка. Тогда условие остаётся прежним, и цикл может не завершиться; такую ошибку допускают, забыв повторный ввод или изменение счётчика. Проследите за одним шагом вручную и убедитесь, что данные меняются в сторону завершения цикла.
Изменение параметра цикла внутри его тела может нарушить ожидаемый порядок значений. Ошибку легко допустить, если попытаться самостоятельно перейти к следующему шагу, хотя цикл уже делает это по своему правилу. Проверьте, что параметр изменяется только предусмотренным способом, и проследите последовательность его значений.
Команды, записанные после цикла, не входят в тело и выполняются не при каждом повторении. Если поместить туда действие, которое должно выполняться на каждом шаге, результат окажется неполным; иногда это происходит из-за неверного понимания границы цикла. Проверьте, какие команды повторяются, а какие запускаются только после выхода из цикла.
Для работы с циклами нужны навыки записи алгоритмов, присваивания значений переменным и ветвления, а также умение проверять условия. Циклы применяются при обработке последовательностей данных, вычислении сумм и произведений, поиске элементов и создании программ с повторяющимися действиями. Позже они помогут изучать массивы и более сложные алгоритмы обработки данных. Умение организовать повторение позволяет обрабатывать много значений по одному общему правилу.
Чем циклический алгоритм отличается от линейного?
В линейном алгоритме команды выполняются по порядку, обычно по одному разу. Циклический алгоритм возвращается к одним и тем же командам и выполняет их несколько раз.
Когда лучше использовать цикл с параметром, а когда цикл с условием?
Цикл с параметром подходит, когда заранее известны диапазон и число повторений, например при переборе чисел от 1 до 5. Цикл с условием удобен, когда повторение зависит от данных или ввода пользователя, а число шагов заранее неизвестно.
Что называют телом цикла?
Тело цикла — это команда или несколько команд, которые повторяются при каждом выполнении цикла. Например, при выводе чисел в тело можно поместить команду вывода текущего значения параметра.
Почему цикл может стать бесконечным?
Так бывает, если условие продолжает оставаться истинным и ничто не меняет данные, от которых оно зависит. Чтобы этого избежать, нужно проверить, что на каждом нужном шаге происходит изменение, приближающее цикл к завершению.
Выполняются ли команды после цикла при каждом повторении?
Нет, команды после цикла выполняются один раз — после его завершения. При каждом повторении исполняются только команды, входящие в тело цикла.
§ 35. Циклические алгоритмы