Главная → Уроки → Информатика 8 класс
Прочитай параграф о программировании циклов на Паскале — операторах while, repeat и for, параметре цикла и вложенных циклах — и ответь на 10 вопросов.
Не получается разобраться? Бесплатный ИИ-репетитор по информатике 8 класс разберёт ошибку по шагам и не даст списать.
Повторение — третья основная алгоритмическая конструкция после следования и ветвления. В программе на Паскале её записывают оператором цикла. Так называют команду языка, которая заставляет компьютер снова и снова выполнять одну и ту же группу операторов, тело цикла. Сколько будет повторений, решает условие или счётчик. Таких операторов в Паскале три: while (цикл ПОКА), repeat (цикл ДО) и for (цикл ДЛЯ). Они различаются тем, когда и что именно проверяется.
Оператор while
Цикл ПОКА называют ещё циклом с заданным условием продолжения работы. На Паскале он записывается так:
while <условие> do begin <операторы тела> end
Условие — логическое выражение, такое же, как в операторе if. Компьютер вычисляет его перед каждым проходом. Если получилось true, выполняется тело, а затем всё начинается заново с проверки. Если получилось false, цикл завершается, и управление переходит к оператору, записанному после него. Отсюда важное свойство: когда условие ложно с самого начала, тело while не выполнится ни разу. Порядок «сначала проверка, потом тело» показан на рисунке 1 слева.
После служебного слова 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 класс разберёт ошибку по шагам и не даст списать.