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