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