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

§ 37. Циклы с условием

"Информатика. (в 2 частях)", Поляков К.Ю., Еремин Е.А.

Объяснение темы В оглавлении: § 37. Циклы с условием

Кратко о теме

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Сравнение циклов с предусловием и постусловием

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

Сначала выясните, важно ли выполнить тело хотя бы один раз: это поможет выбрать столбец. Затем проверьте, где выполняется проверка, и проследите переменные до завершения. Таблица сравнивает порядок работы, а не названия команд в конкретном языке программирования.

Разбор задач

Вывести числа от 1 до 5, используя цикл с условием.

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

  1. Задаём счётчику начальное значение 1. Перед каждым выполнением тела проверяем, не больше ли счётчик пяти. Если условие истинно, выводим значение и увеличиваем счётчик на единицу.
  2. После вывода 1 счётчик становится 2, затем последовательно принимает значения 3, 4 и 5. Для каждого из них условие остаётся истинным, поэтому число выводится. После вывода 5 счётчик увеличивается до 6.
  3. Проверка для значения 6 ложна, поэтому цикл завершается. При таком порядке сначала проверяется условие и только затем выполняется вывод. Это не позволяет случайно вывести число 6.

Ответ: программа выведет 1, 2, 3, 4, 5.

Вводить числа, пока не встретится ноль, затем вывести количество введённых ненулевых чисел.

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

  1. Устанавливаем счётчик ненулевых чисел в 0 и вводим первое число. Если оно не равно нулю, увеличиваем счётчик на единицу. Ноль в счётчик не добавляем.
  2. После обработки проверяем, равно ли введённое число нулю. Если нет, снова вводим число и повторяем проверку; если да, прекращаем цикл. Так каждое ненулевое значение учитывается ровно один раз.
  3. Когда введён ноль, выводим счётчик. Например, для последовательности 8, 3, −2, 0 счётчик увеличится три раза. Ноль завершит ввод и не изменит результат.

Ответ: нужно вывести число ненулевых значений до первого нуля; для последовательности 8, 3, −2, 0 ответ равен 3.

Найти наименьшее натуральное число, сумма цифр которого больше 20.

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

  1. Начинаем с числа 1 и вычисляем сумму его цифр. Для многозначного числа сумму можно найти, складывая цифры по очереди; например, сумма цифр 123 равна 1 + 2 + 3. Проверяем, больше ли полученная сумма 20.
  2. Если сумма не больше 20, увеличиваем число на единицу и вычисляем сумму заново. Каждое следующее число больше предыдущего, поэтому проверка идёт по порядку. Повторяем шаги, пока условие поиска не выполнится.
  3. Когда сумма цифр очередного числа станет больше 20, останавливаем цикл. Поскольку меньшие натуральные числа уже проверены, найденное число является наименьшим подходящим. При ручном решении следует продолжать проверку до первого такого результата.

Ответ: искомое число — первое натуральное число, для которого сумма цифр больше 20; при поиске перебором его значение фиксируют при первой успешной проверке.

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

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

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

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

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

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

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

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

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

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

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

Чем цикл с условием отличается от цикла с заданным числом повторений?

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

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

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

Почему цикл иногда становится бесконечным?

Так бывает, если условие всё время остаётся истинным. Например, в теле не меняется счётчик, от которого зависит проверка.

Когда удобнее использовать цикл с постусловием?

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

Как проверить, сколько раз выполнится цикл?

Запишите начальные значения переменных и проследите их изменение после каждого выполнения тела. После каждого шага проверяйте условие в правильном месте: до тела или после него.

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

§ 37. Циклы с условием

Учебник

Оглавление →
Предмет
Информатика
Класс
7 класс
Учебник
"Информатика. (в 2 частях)", Поляков К.Ю., Еремин Е.А.