Как работают циклы Do-While в компьютерном программировании

Когда вы учитесь программировать

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

Большинство новых программистов узнают о операторы if-else, в то время как петли, а также для петель вскоре. Но один из типов цикла, который вы можете не понять, это цикл действия. Давайте обсудим, как работает этот цикл, когда вы захотите его использовать, и рассмотрим несколько примеров.

Основы

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

):

do {
output "The variable x equals " + x;
x++;
} while (x < 5);
output "The loop has ended.";

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

Если Икс равняется 1, когда цикл начинается, он будет повторяться до Икс не удовлетворяет условию рядом с в то время как. Таким образом, он будет работать в общей сложности 5 раз. когда Икс не меньше 5, цикл заканчивается и продолжает код после него. Этот вывод будет выглядеть следующим образом:

The variable x equals 1 The variable x equals 2 The variable x equals 3 The variable x equals 4 The variable x equals 5 The loop has ended.

И наоборот, если Икс был равен 20, когда этот цикл начался, он будет запускаться только один раз. Таким образом, вы увидите один выходной оператор, Икс увеличивается до 21, и цикл завершается, потому что 21 не меньше 5. Его результат будет:

The variable x equals 20 The loop has ended.

Контраст с В то время как и для циклов

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

Рассмотрим этот основной псевдокод в то время как цикл для сравнения:

x = 10;
while (x < 5) {
output "The loop has run!";
x++;
}

Вот, Икс установлен на 10 и в то время как цикл проверяет, что Икс меньше 5, прежде чем он запустится. Из-за этого код внутри никогда не запускается. Применение той же логики к циклу do-while дает нам что-то вроде этого:

x = 10;
do {
output "The loop has run!";
x++;
} while (x < 5)

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

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

output "Hello!";
x++;
while (x < 5) {
output "Hello!";
x++;
}

Однако это неуклюже, и нет причин делать это, когда существуют циклы do-while.

Для петель

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

Вот простой за цикл для сравнения:

for (int i = 0; i < 5; i++) {
output "The loop has run " + i + " times.";
}

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

do {
output "The loop has run " + i + " times.";
i++;
} while (i < 5);

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

В итоге:

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

Выход из цикла «пока»

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

x = 5;
do {
output "This never ends!";
} while (x < 10);

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

,

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

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

do {
int roll = random(1, 2, 3, 4, 5, 6);
if (roll == 6)
break;
} while (true);

пока (правда) условие означает, что этот цикл будет выполняться вечно, чего мы и хотим, потому что пользователь должен катиться, пока не получит 6. Без перерыв Скажите, это застрянет. Но как только пользователь бросает 6, если оператор становится истинным, и последовательность выходит из цикла и переходит к тому, что следует.

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

do {
int roll = random(1, 2, 3, 4, 5, 6);
} while (roll != 6);

Плохой бесконечный цикл

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

int x = 7;
do {
x = 1;
x = x + 2;
output "x equals " + x;
} while (x < 10);

Это может выглядеть как увеличение Икс на 2 каждый цикл и повторяется до тех пор, пока x не станет меньше 10, но посмотрите поближе. Потому что цикл устанавливает Икс равно 1 каждый раз, когда он запускается, это бесконечный цикл. Заметить, что х = 1 а также х = х + 2 Значит это Икс всегда равен 3 в конце блока, независимо от того, сколько раз это выполняется, то есть Икс никогда не бывает меньше 10.

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

Примеры из реального мира

Мы обсудили некоторые гипотетические примеры выше, но давайте кратко рассмотрим несколько полезных примеров циклов «сделай пока».

Если бы вы создавали цикл для чтения данных из файла до его конца, вы бы использовали цикл do-while. Очевидно, вам нужно захватить хотя бы один символ, если вы планируете читать из файла, поэтому вы можете использовать цикл do-while, подобный этому (спасибо пользователю Stack Exchange Стивену Бернапу за этот пример):

do {
result = readData(buffer);
} while (result != EOF);

Без промедления вам пришлось бы использовать более уродливое решение:

while (true) {
result = readData(buffer);
if (result == EOF)
break;
}

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

do {
output "Please enter a positive number:";
int input = getInput();
} while (input < 0);

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

Готовы использовать циклы Do-While?

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

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

Поддержка циклов do-while, поэтому у вас не должно возникнуть проблем с их реализацией.

Если вы изучаете основы, обязательно ознакомьтесь с нашими основными приемами освоения нового языка программирования.

,

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

Изображение предоставлено: Aaban через Shutterstock.com

Ссылка на основную публикацию
Adblock
detector