T.M. SoftStudio

feci quod potui, faciant meliora potentes

Купить полную версию курса "Введение в вычисления с Java" (русскоязычная версия, лекции, тесты, лабораторные работы)

Введение в вычисления с Java. Циклы, вложенные циклы, сочетания операторов, подклассы

Неделя 5

Лекция 25

Циклы Do-While

Давайте теперь взглянем на вторую структуру цикла. Она называется do-while цикл.

Синтаксис do-while цикла начинается с ключевого слова do, а затем следует тело цикла.

Тело цикла завершается проверкой условия, используя ключевое слово while.

Основное различие между while циклом и do-while циклом является то, что do-while цикл будет выполнять действие, указанное в теле цикла без предварительной проверки условия, в то время как while цикл условие сначала проверит.

Давайте рассмотрим схему здесь, чтобы проиллюстрировать поток управления для do-while цикла.

Как уже упоминалось, do-while цикл будет идти непосредственно в теле цикла без проверки любого условия, то есть, do-while цикл будет всегда выполнять действие по крайней мере, один раз.

После окончания выполнения действия, условие будет проверяться.

Если проверка условия вернет true, поток вернется к началу цикла, и выполнит действие еще ​​раз.

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

Это реализация n!, используя do-while цикл.

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

Как упоминалось ранее, метод будет выполнять тело цикла до проверки условия.

Обратите внимание, что я использую сокращенные операторы здесь.

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

Это реализация 2 в n степени, используя do-while цикл.

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

Подумайте, что будет, если number, то есть параметр, равен 0.

Следует помнить, что 2 в 0-й степени, как предполагается, дает 1 в результате.

Поскольку do-while цикл всегда выполняется один раз до проверки условия, таким образом, даже если number равно 0, результат t будет изменен на 2 внутри цикла.

Когда счетчик оказывается меньше или равно 0, t уже получил значение 2, и возвращение результата было бы неправильно для 2 в 0-й степени.

Вы можете подумать о том, как эта проблема может быть исправлена.

Третья структура цикла это for цикл.

Цикл for имеет довольно отличающийся синтаксис, чем while и do-while циклы.

Он начинается с ключевого слова for.

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

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

Первое выражение является выражением инициализации, второе является условным выражением, а третье является выражением для обновления состояния.

Давайте взглянем на поток управления, чтобы понять, как работает for цикл.

Цикл начинается с инициализации состояния, используя счетчик или повторяющуюся переменную.

Итерация выполняется только один раз в начале цикла. Затем проверяется условие, и тело цикла будет выполнено, если условие истинно.

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

Оператор увеличения или уменьшения часто используется здесь.

Затем будет еще раз проверено условие.

Этот процесс будет повторяться, если условие остается верным.

Цикл будет нарушен, когда условие станет ложным.

Это реализация n! используя for цикл.

Обратите внимание, что счетчик устанавливается в начале цикла.

На самом деле, счетчик может быть даже объявлен в цикле, как показано здесь.

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

Состояние и действие в теле цикла являются такими же, как и раньше.

Обновление счетчика это делается сейчас в выражении обновление для петли.

В этом случае оператор приращение используется. Счетчик ++ является оператором приращение.

Это реализация 2 до энной степени, используя для петли.

Это очень похоже на то, что мы сделали для п !.

Кстати, это не будет иметь никаких проблем при попытке вычислить 2 в 0-й степени,

потому что условие проверяется перед входом в цикл.

Когда компьютерная программа выполняется, выражения в этой программе, как правило, выполняются по очереди, по порядку. Однако реальная компьютерная программа часто содержит тип выражений под названием выражение "choice", которое выбирает одно из выражений, которое следует выполнить в зависимости от некоторых условий. Примерами являются выражения if, if-else и switch в Java.

Другой тип выражений, которые могут изменять нормальный поток управления, называются выражением "iteration". Выражения итерации вызывают блок операторов для его повторения несколько раз, в зависимости от счетчика или некоторого условия прекращения. Примерами являются выражения while, do-while и for в Java.

Общие ошибки

Позвольте мне указать на некоторые распространенные ошибки при использовании циклов.

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

Поэтому использования операторов «==» или «!=» для сравнения чисел с плавающей запятой следует избегать как условий цикла.

Цикл может никогда не остановиться, если эти номера не точно равны или не равны из-за неточности.

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

Можете ли вы определить проблемы с этим while циклом?

Здесь есть две проблемы.

Первая для сравнения неравенства числа с плавающей точкой, как я только что описал.

Вторая – это точка с запятой после условия. Это создаст пустое тело цикла, и приведет к бесконечному циклу!

Как насчет for цикла?

Опять же, есть дополнительная точка с запятой после закрытия скобки for выражения.

Цикл будет выполняться подсчет, ничего не делая в теле цикла.

Когда произойдет выход из for цикла, привет будет напечатано только один раз.

Вот некоторые из ошибок, которые вы никогда не должны делать.

Не существует четких правил, по которым цикл лучше для решения некоторых задач.

В общем, for цикл является лучшим для случаев, если число итераций известно.

Например, количество студентов в классе, если оно известено.

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

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

Что касается while цикла, бывают случаи, что тело цикла не будет выполнено вообще.