Главная → Уроки → Информатика 8 класс

§ 4.5. Программирование циклических алгоритмов

Прочитай параграф о программировании циклов на Паскале — операторах while, repeat и for, параметре цикла и вложенных циклах — и ответь на 10 вопросов.

Не получается разобраться? Бесплатный ИИ-репетитор по информатике 8 класс разберёт ошибку по шагам и не даст списать.

Повторение — третья основная алгоритмическая конструкция после следования и ветвления. В программе на Паскале её записывают оператором цикла. Так называют команду языка, которая заставляет компьютер снова и снова выполнять одну и ту же группу операторов, тело цикла. Сколько будет повторений, решает условие или счётчик. Таких операторов в Паскале три: while (цикл ПОКА), repeat (цикл ДО) и for (цикл ДЛЯ). Они различаются тем, когда и что именно проверяется.

Оператор while

Цикл ПОКА называют ещё циклом с заданным условием продолжения работы. На Паскале он записывается так:

while <условие> do begin <операторы тела> end

Условие — логическое выражение, такое же, как в операторе if. Компьютер вычисляет его перед каждым проходом. Если получилось true, выполняется тело, а затем всё начинается заново с проверки. Если получилось false, цикл завершается, и управление переходит к оператору, записанному после него. Отсюда важное свойство: когда условие ложно с самого начала, тело while не выполнится ни разу. Порядок «сначала проверка, потом тело» показан на рисунке 1 слева.

Две блок-схемы рядом. Слева цикл while: сверху ромб «условие», из него стрелка «да» ведёт вниз к прямоугольнику «тело цикла», от тела линия обходит схему слева и возвращается к входу ромба; стрелка «нет» уходит вправо и вниз, из цикла. Справа цикл repeat: сверху прямоугольник «тело цикла», под ним ромб «условие»; стрелка «нет» обходит схему слева и возвращается к входу тела, стрелка «да» уходит вниз, из цикла
Рис. 1. while проверяет условие перед телом, repeat — после тела.

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

Второе правило: тело обязано влиять на условие. Если внутри цикла ничто не приближает условие к значению false, программа зацикливается, то есть повторяет тело бесконечно и никогда не доходит до следующих операторов. Например, цикл while k > 0 do s := s + k при положительном k не остановится: k в нём не меняется.

Алгоритм Евклида

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

program evklid; var m, n: integer; begin read(m, n); while m <> n do if m > n then m := m - n else n := n - m; writeln('НОД = ', m) end.

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

Дано: пользователь набрал 84 36. Что выведет программа?

Проследим значения m и n после каждого прохода: 48 и 36, затем 12 и 36, 12 и 24, 12 и 12. После четвёртого прохода числа равны, условие m <> n ложно, и цикл заканчивается.

Ответ: НОД = 12.

Ввод до признака окончания

Часто программа обрабатывает числа, количество которых заранее неизвестно. Тогда договариваются о признаке окончания ввода: например, последним вводят 0, и сам он к данным не относится.

Хочешь больше времени в телефоне?

В Family Track телефон открывается за уроки: прочитал параграф, сдал тест и получил минуты. Сколько минут стоит урок, решают родители. Отправь им ссылку, пусть посмотрят.

Отправить родителямПройти урок бесплатно

Вопросы из теста

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

Перед каждым из двух фрагментов ниже x = 7. Каким будет x после фрагмента с while и после фрагмента с repeat?

Ученик хотел сложить числа от 1 до 5, но забыл операторные скобки. Что произойдёт при запуске его программы?

Не получается разобраться? Бесплатный ИИ-репетитор по информатике 8 класс разберёт ошибку по шагам и не даст списать.

← § 4.4. Программирование разветвляющихся алгоритмов§ 5.1. Общие сведения о языке программирования Python →