На Горох
Информатика, 10 класс

§ 21. Программирование циклов

"Информатика (базовый уровень)", Семакин И.Г., Хеннер Е.К., Шеина Т.Ю.

Объяснение темы В оглавлении: § 21. Программирование циклов

Кратко о теме

Цикл — конструкция программы, которая повторяет команды по заданному правилу. Он позволяет не записывать одинаковые действия много раз: число повторений определяется диапазоном или условием. Важно различать циклы с параметром, предусловием и постусловием: в них по-разному задаётся число проходов и проверяется возможность продолжения. Чтобы цикл завершился, нужно предусмотреть изменение данных или достижение условия остановки.

Объяснение темы

Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.

Определения и обозначения

Цикл — конструкция программы, которая повторяет выполнение одной или нескольких команд. Вместо того чтобы копировать одинаковые команды много раз, программист задаёт правило повторения. Оно определяет, когда цикл продолжает работу и когда останавливается.

Тело цикла — команды, выполняемые при каждом повторении цикла. Если цикл проходит пять раз, его тело выполняется пять раз, если правило не предусматривает досрочной остановки. В теле обычно находятся действия, которые нужно повторять, например ввод очередного числа или увеличение суммы.

Цикл с предусловием — цикл, в котором условие проверяется перед выполнением тела. Если условие сразу ложно, тело не будет выполнено ни разу. Такой вид нужен, когда прежде чем действовать, программа должна проверить, есть ли смысл продолжать, например остались ли данные для обработки.

Цикл с параметром — цикл, в котором переменная принимает последовательные значения из заданного диапазона. Эту переменную часто называют счётчиком: она меняется на установленный шаг при каждом повторении. Такой цикл помогает явно задать число проходов, когда известны границы и порядок их изменения.

Как это устроено

Повторяющиеся действия удобно оформлять циклом, потому что одинаковые команды достаточно записать один раз. Если вместо цикла продублировать их вручную, программа станет длиннее, а исправлять её будет сложнее: каждую копию придётся менять отдельно. Правило цикла задаёт, сколько раз выполнить тело или при каком условии остановиться. Поэтому одна и та же конструкция подходит и для десяти повторов, и для обработки длинной последовательности.

В цикле с предусловием программа сначала проверяет условие продолжения, а только потом выполняет тело. Если условие истинно, происходит очередной проход; затем программа возвращается к проверке. Чтобы цикл когда-нибудь остановился, внутри него обычно изменяют переменную, от которой зависит условие, или получают новые данные. Если нужное изменение не происходит, проверка снова даёт тот же результат, и программа может зациклиться.

В цикле с параметром счётчик проходит значения от начального до конечного с заданным шагом. Например, начало 1, конец 10 и шаг 1 задают десять значений, если обе границы включаются правилами используемого языка программирования. Изменение счётчика встроено в принцип такого цикла, поэтому программисту не нужно отдельно описывать его на каждом проходе. Перед запуском следует проверить границы и шаг: от них зависит, сколько раз выполнится тело.

Цикл с постусловием проверяет условие после выполнения тела. Сначала программа делает действие, затем решает, нужно ли повторить его ещё раз. Поэтому тело такого цикла выполняется хотя бы один раз, даже если после первого прохода условие уже говорит остановиться. Это удобно, например, когда сначала нужно запросить ввод, а затем проверить, подходит ли полученное значение.

Выбор вида цикла зависит от того, известно ли заранее число повторений и нужно ли обязательно выполнить тело. Если количество проходов задано диапазоном, обычно проще использовать цикл с параметром. Если продолжение определяется условием и тело можно пропустить, подходит цикл с предусловием; если действие необходимо выполнить хотя бы раз — с постусловием. Такой выбор делает порядок работы программы понятным и помогает не допустить лишних или пропущенных повторений.

Сравнение основных видов циклов

СвойствоЦикл с параметромЦикл с предусловиемЦикл с постусловием
Когда проверяется условие или задаётся число повторенийЧисло проходов задаётся диапазоном, начальным и конечным значениями, шагомУсловие проверяется перед каждым выполнением телаУсловие проверяется после выполнения тела
Может ли тело не выполниться ни разуДа, если заданный диапазон не требует проходовДа, если условие сразу ложноНет, тело выполняется хотя бы один раз
Когда использоватьКогда известны границы и шаг счётчикаКогда продолжение зависит от условия, проверяемого заранееКогда действие нужно выполнить до первой проверки
Что обеспечивает завершение циклаДостижение конечной границы счётчикомИзменение данных, при котором условие станет ложнымИзменение данных, при котором условие остановки станет истинным

Сначала определите, известно ли число повторений и должна ли программа выполнить тело хотя бы один раз. Затем сравните свой случай со строками «Когда использовать» и «Что обеспечивает завершение цикла». Если условие задачи не указывает конкретный язык программирования, ориентируйтесь на принцип работы, а точный синтаксис уточняйте по правилам этого языка.

Разбор задач

Вывести целые числа от 1 до 10

Границы последовательности известны заранее, поэтому здесь подходит цикл с параметром. Счётчик должен начать с 1 и увеличиваться на единицу после каждого вывода. Нужно убедиться, что число 10 тоже будет обработано.

  1. Задаём счётчику начальное значение 1.
  2. Пока счётчик не превысил 10, выводим его значение.
  3. После вывода увеличиваем счётчик на 1; повторяем действия до выхода за конечную границу.

Ответ: программа выведет числа 1, 2, 3, 4, 5, 6, 7, 8, 9, 10. Всего будет десять проходов, потому что в диапазоне от 1 до 10 десять целых чисел. Если условие остановки ошибочно задать как «счётчик меньше 10», последнее число не появится.

Найти сумму натуральных чисел от 1 до n

Значение n вводит пользователь, поэтому верхняя граница становится известна перед началом вычисления. Для накопления суммы заведём переменную и будем прибавлять к ней очередное натуральное число. Счётчик на каждом проходе должен продвигаться к n, иначе цикл не завершится.

  1. Считываем n, задаём сумму равной 0, а счётчик — равным 1.
  2. Пока счётчик не больше n, прибавляем его к сумме.
  3. Увеличиваем счётчик на 1 и повторяем шаги, пока все числа не будут учтены.

Ответ: после завершения в переменной суммы будет 1 + 2 + … + n. Начальная сумма равна нулю, чтобы первое прибавление дало именно 1, а не лишнее число. Если n равно 4, последовательные значения суммы будут 1, 3, 6 и 10.

Вводить числа до нуля и считать положительные

Нужно читать числа, пока пользователь не введёт 0, и отдельно учитывать положительные значения. Здесь продолжение зависит от введённых данных, а не от заранее известного количества чисел. Если первым введено 0, тело с подсчётом не должно засчитать его как положительное.

  1. Задаём счётчик положительных чисел равным 0 и вводим первое число.
  2. Пока введённое число не равно 0, проверяем его: если оно положительное, увеличиваем счётчик.
  3. Вводим следующее число и снова проверяем условие остановки.

Ответ: после ввода 0 программа выводит количество положительных чисел. Такой вариант начинает с чтения, поэтому его можно выразить циклом с предусловием: при первом же нуле тело не выполнится. Цикл с постусловием тоже возможен, если тело сначала получает число, а затем проверяет, не пора ли остановиться.

Типичные ошибки

Не изменять переменную, от которой зависит условие цикла. Так происходит, если забыть увеличить счётчик или обновить данные после прохода. Условие остаётся истинным, и цикл выполняется бесконечно; проверьте, меняется ли нужная переменная и приближается ли она к остановке.

Неверно задать начальное или конечное значение счётчика. Из-за ошибки на единицу нужное число может пропуститься или появиться лишнее повторение. Это часто случается, когда не уточняют, входят ли обе границы диапазона; проверьте первый и последний проход вручную.

Перепутать условие продолжения и условие завершения. Например, программа должна работать, пока число не равно нулю, а записано условие, подходящее для остановки. Ошибку легче заметить, если проверить условие на примере обычного значения и на значении остановки и определить, какой результат проверки нужен в каждом случае.

Считать, что цикл с предусловием обязательно выполнит тело хотя бы раз. Это неверно, потому что проверка происходит до первой команды тела. Ошибку допускают, когда мысленно представляют цикл как последовательность «сначала действие, потом проверка»; проверьте исходное условие до запуска и отдельно рассмотрите случай, когда оно сразу ложно.

Связь с другими темами

Для программирования циклов нужны переменные, присваивание, логические условия и ветвление: без них трудно задать счётчик, накопить результат и определить, когда остановиться. Условный оператор помогает выбирать действия внутри тела цикла, например увеличивать счётчик только при положительном числе. Поэтому понимание условий и изменения переменных помогает правильно организовать повторение.

Циклы применяют при обработке последовательностей данных, вычислении сумм и произведений, поиске элементов и моделировании процессов. В каждом случае повторяют действие над очередным значением или шагом модели, пока данные не закончатся либо не наступит нужное состояние. Умение выбрать правило остановки особенно важно при работе с неизвестным заранее количеством элементов.

Что запомнить

  • Цикл повторяет выполнение тела по заданному правилу.
  • У цикла с предусловием условие проверяется до выполнения тела.
  • У цикла с постусловием тело выполняется хотя бы один раз.
  • Цикл с параметром удобен, когда число повторений известно заранее.
  • Для завершения цикла необходимо предусмотреть изменение данных или достижение условия остановки.
  • Перед запуском программы полезно проверить начальное состояние, условие и изменение переменных цикла.

Частые вопросы по теме

Чем цикл отличается от условного оператора?

Условный оператор выбирает, какие команды выполнить, и делает такой выбор при проверке условия. Цикл повторяет команды, пока выполняется заданное правило или пока счётчик не пройдёт диапазон.

Когда лучше использовать цикл с параметром?

Он удобен, когда заранее известны границы диапазона и шаг изменения счётчика. Например, так можно вывести числа от 1 до 10 или обработать все элементы списка известной длины.

Почему цикл может выполняться бесконечно?

Так бывает, если условие цикла остаётся истинным и программа не меняет данные, от которых оно зависит. Проверь, изменяются ли счётчик или другие переменные и может ли условие в итоге стать ложным.

Может ли тело цикла с предусловием не выполниться ни разу?

Да. Условие проверяется до первого выполнения тела, поэтому при ложном условии программа сразу пропускает команды цикла.

Как выбрать между циклом с предусловием и циклом с постусловием?

Выбирай цикл с предусловием, если сначала нужно проверить, следует ли выполнять команды. Цикл с постусловием подходит, когда тело необходимо выполнить хотя бы один раз, а проверку провести после этого.

Спросить по теме параграфа

§ 21. Программирование циклов

Эта же тема в других учебниках

Учебник

Оглавление →
Предмет
Информатика
Класс
10 класс
Учебник
"Информатика (базовый уровень)", Семакин И.Г., Хеннер Е.К., Шеина Т.Ю.