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

§ 17. Оператор цикла

"Информатика. Учебное пособие для учреждений общего среднего образования с русским языком обучения", В. М. Котов, А. И. Лапо и Ю.А. Быкадоров, Е.Н. Войтехович

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

Кратко о теме

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Виды операторов цикла

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

Сначала посмотри, когда проверяется условие и может ли тело не выполниться: это помогает различить предусловие и постусловие. Затем оцени, известны ли границы повторений заранее; если да, часто проще использовать цикл с параметром. В конкретном языке программирования детали записи и правила достижения границы могут различаться.

Разбор задач

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

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

  1. Задаём параметру начальное значение 1.
  2. Для каждого значения параметра от 1 до 10 выполняем команду вывода.
  3. После каждого шага параметр автоматически увеличивается на 1, а после обработки 10 цикл завершается.

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

Вводить числа до нуля и подсчитать сумму

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

  1. Обнуляем сумму и вводим первое число.
  2. Пока введённое число не равно нулю, прибавляем его к сумме и вводим следующее.
  3. Когда введён ноль, условие становится ложным, цикл заканчивается, а программа выводит сумму.

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

Найти максимум при вводе до отрицательного числа

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

  1. Вводим первое число и записываем его в переменную «максимум».
  2. Вводим следующее число; пока оно неотрицательное, сравниваем его с максимумом.
  3. Если число больше максимума, заменяем максимум; затем вводим следующее число.
  4. При появлении отрицательного числа прекращаем повторения и выводим сохранённый максимум.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

§ 17. Оператор цикла

Учебник

Оглавление →
Предмет
Информатика
Класс
8 класс
Учебник
"Информатика. Учебное пособие для учреждений общего среднего образования с русским языком обучения", В. М. Котов, А. И. Лапо и Ю.А. Быкадоров, Е.Н. Войтехович