"Информатика. Учебное пособие для учреждений общего среднего образования с русским языком обучения", В. М. Котов, А. И. Лапо и Ю.А. Быкадоров, Е.Н. Войтехович
Оператор цикла позволяет многократно выполнять одни и те же команды, не записывая их снова и снова. Циклы используют, когда нужно обработать последовательность чисел, посчитать элементы или накопить сумму. Повторениями управляют параметр цикла либо логическое условие. Чтобы программа завершилась правильно, нужно задать начальные значения и продумать, как изменяется управляющая переменная или условие. Важно также выбрать вид цикла: с параметром, предусловием или постусловием.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Оператор цикла — конструкция программы, многократно выполняющая один или несколько операторов. Он нужен, когда одинаковые действия приходится повторять для разных данных или много раз подряд. Вместо копирования команд программист записывает их один раз, а цикл организует повторения.
Тело цикла — последовательность команд, которая повторяется при каждом выполнении цикла. В теле могут находиться вычисления, ввод и вывод данных, а также проверки. Понимая, какие команды входят в тело, легче определить, что именно будет сделано на каждом повторении.
Параметр цикла — переменная, изменяющаяся при повторениях и определяющая их количество. Например, параметр может принимать значения от 1 до N. Он нужен, чтобы программа знала, для какого элемента выполняются команды и когда заданное число повторений закончится.
Условие продолжения цикла — логическое выражение, от которого зависит выполнение следующего повторения. Оно проверяется в циклах с условием и принимает одно из двух значений: истина или ложь. Такое условие нужно, чтобы программа могла продолжать работу или остановиться в подходящий момент.
Повторяющиеся действия удобнее записать циклом, чем перечислять одинаковые команды несколько раз. Если изменить алгоритм, достаточно исправить одну запись, а не искать все её копии. Кроме того, число повторений может быть большим или зависеть от введённых данных, поэтому заранее выписать каждую команду невозможно.
У цикла есть начальная настройка, условие или диапазон повторений, тело и изменение управляющей переменной. Сначала задают исходное значение, затем проверяют, нужно ли выполнять очередной повтор, и выполняют команды тела. После этого изменяют переменную или данные, от которых зависит условие, чтобы перейти к следующему повторению либо завершить работу.
Цикл с параметром организует заданное число повторений: параметр последовательно принимает значения из указанного диапазона. После выполнения тела параметр изменяется, потому что нужно перейти к следующему значению и проверить, не закончился ли диапазон. Если его не менять, программа не сможет корректно пройти все значения.
В цикле с предусловием условие проверяют до выполнения тела, а в цикле с постусловием — после него. Поэтому при ложном условии в начале цикл с предусловием может пропустить тело целиком. В цикле с постусловием тело выполняется хотя бы один раз, даже если после первого прохода выяснится, что продолжать не нужно.
Вид цикла выбирают по тому, что известно из условия задачи: заранее заданное количество повторений или только признак остановки. Для последовательности до нуля нужен цикл, связанный с вводом и проверкой очередного значения. Чтобы работа завершилась, проверьте, что данные или управляющая переменная меняются так, что условие остановки в итоге будет достигнуто.
| Характеристика | Цикл с параметром | Цикл с предусловием | Цикл с постусловием |
|---|---|---|---|
| Когда известно количество повторений | Обычно известно заранее | Может быть неизвестно заранее | Может быть неизвестно заранее |
| Когда условие проверяется | Проверяется диапазон параметра перед очередным повтором | До выполнения тела | После выполнения тела |
| Минимальное число выполнений тела | Зависит от заданного диапазона | 0 | 1 |
| Как изменяется управляющая переменная | Автоматически переходит к следующему значению | Обычно изменяется в теле цикла | Обычно изменяется в теле цикла |
| Типичная форма записи на Pascal | for i := 1 to N do | while условие do | repeat команды until условие |
| Подходящий тип задач | Обработка заданного диапазона | Повторение, пока условие истинно | Повторение, пока не наступит условие остановки |
Сначала выясните, известно ли число повторений: если да, чаще всего подходит цикл с параметром. Если оно зависит от условия, сравните момент проверки и решите, допустимо ли нулевое число выполнений тела. При записи на Pascal следите, чтобы условие соответствовало нужному моменту остановки.
Нужно напечатать все числа заданного диапазона, включая его начало и конец. Количество повторений известно: оно равно N, поэтому удобно применить цикл с параметром. Для каждого значения параметра выводится само число.
Ответ: программа выводит числа 1, 2, 3 и так далее до N включительно. Важно задать начало диапазона именно равным 1, а конец — N. Если N меньше 1, диапазон не содержит требуемых натуральных чисел.
Каждое натуральное число нужно возвести в квадрат, а результаты сложить. Для хранения промежуточного результата используют накопитель суммы, который должен получить начальное значение до запуска цикла. Поскольку обрабатывается известный диапазон, подойдёт цикл с параметром.
Ответ: сумма равна 1² + 2² + … + N². Например, при N = 3 программа получает 1 + 4 + 9 = 14. Такой порядок действий позволяет на каждом повторении обрабатывать одно число и не хранить отдельно все квадраты.
Количество значений заранее неизвестно: пользователь вводит числа, пока не встретится ноль. Ноль служит признаком окончания, а положительные значения нужно учитывать отдельно. Подойдёт цикл с предусловием или постусловием, но выбранная форма должна соответствовать тому, как организован первый ввод.
Ответ: счётчик показывает количество положительных чисел до первого нуля. Если используется цикл с предусловием, первое число вводят перед проверкой, иначе условие будет проверять ещё не полученное значение. Ноль завершает ввод и сам в подсчёт не включается.
Если забыть задать начальное значение суммы или счётчика, программа будет накапливать результат в неопределённой переменной. Такую ошибку допускают, когда сосредотачиваются на командах внутри цикла и забывают о подготовке данных. Перед циклом проверьте, что сумма и количество обнулены.
Если не менять управляющую переменную или менять не ту переменную, условие может никогда не стать ложным. Тогда цикл будет выполняться бесконечно или завершится не там, где нужно. Проследите по одному повторению, какая переменная меняется и приближает ли это изменение программу к остановке.
Неверные границы цикла приводят к пропуску первого или последнего элемента либо к лишнему повтору. Обычно ошибаются, когда не учитывают, включаются ли границы заданного диапазона. Проверьте вручную несколько первых и последнее значение параметра, а также сравните их с условием задачи.
Если перепутать цикл с предусловием и постусловием, можно неверно обработать случай, когда условие сразу запрещает повторение. В цикле с предусловием тело тогда не выполняется, а в цикле с постусловием выполняется один раз. Перед выбором формы спросите себя, допустимо ли нулевое число выполнений и нужен ли ввод до первой проверки.
Для записи циклов нужны переменные, присваивание, условный оператор и логические выражения: без них нельзя задавать и проверять условия повторения. Циклы применяют при обработке последовательностей чисел, подсчёте элементов и накоплении суммы, а также при поиске максимума и минимума. Позже они пригодятся при работе с массивами и строками, построении вложенных циклов и создании алгоритмов сортировки.
Как выбрать подходящий вид цикла для задачи?
Если число повторений заранее известно, обычно выбирают цикл с параметром. Если повторы зависят от условия или ввода данных, используют цикл с предусловием либо постусловием. При выборе учитывают, может ли тело цикла не выполниться ни разу.
Почему цикл может выполняться бесконечно?
Так происходит, если условие продолжения всё время остаётся истинным. Например, управляющая переменная не меняется или меняется не в ту сторону. Проверьте, что каждое повторение приближает программу к завершению.
Чем цикл с предусловием отличается от цикла с постусловием?
В цикле с предусловием условие проверяется до тела, поэтому тело может не выполниться ни разу. В цикле с постусловием проверка идёт после тела, и оно выполняется хотя бы один раз.
Как правильно посчитать сумму или количество элементов в цикле?
До цикла задайте накопителю начальное значение: для суммы обычно ноль, для количества тоже ноль. Внутри цикла прибавляйте очередное значение к сумме или увеличивайте счётчик, когда элемент подходит по условию.
Можно ли использовать один цикл внутри другого?
Да, это называется вложенным циклом. При каждом повторении внешнего цикла внутренний выполняется полностью. Так можно, например, обрабатывать таблицу или перебирать пары значений.
17.3. Решение задач с использованием оператора цикла