Зачем использовать цикл «DO) [закрыто
-
25-09-2019 - |
Вопрос
Я никогда не понимал, почему использовать делать пока петли необходим. Я понимаю, что они делают, то есть для выполнения кода, когда цикл while содержит без проверки, если условие верно первым.
Но не тот код ниже:
do{
document.write("ok");
}
while(x == "10");
Точно так же, как:
document.write("ok");
while(x == "10"){
document.write("ok");
}
Может быть, я очень глуп и не хватаю что-то очевидное, но я не вижу выгоды от использования делать пока над моим вышеприведенным примером.
Решение
Ваш пример код не прав:
do{
document.write("ok");
}while(x == "10"){
document.write("ok");
}
Это было бы фактической формой:
do {
document.write("ok");
} while(x == "10");
Вы правы, что он выполняет блок внутреннего кода перед проверкой условия, но ему не нужно дублировать внутренний код блокировать так, как у вас есть. Строительство DO / во время (как вы уже говорили) способ убедиться, что кусок кода выполнен 1 или более раз вместо 0 или более раз (в зависимости от условного).
Другие советы
Как вы видите, вы должны были повторить такой же линия во втором примере. Когда вы поддерживаете, вы, скорее всего, хотели бы, чтобы эти две линии были одинаковыми, но у вас есть повторил себя.
Теперь представьте, что это было большой блок и не линия, не только это примет ненужные драгоценные визуальные пространство, но это также будет труднее поддерживать и привлекать несоответствия.
Делайте, пока запустится хотя бы один раз - позволяя вам делать, в то время как ... где, как пока, требует, чтобы состояние встретилось вообще ..
var i = 6;
do{
alert(i);
}while( i < 5)
// alerts 6, but while criteria isn't met so it stops
var i = 6;
while( i < 5) {
alert(i);
}
// no output - while condition wasn't met
Что о:
do{
//.....
// 100000 lines of code!
//.....
} while(i%10);
Конечно ты не будет Напишите это:
//.....
// 100000 lines of code!
//.....
while(i%10){
//.....
// 100000 lines of code!
//.....
}
И вы будете вынуждены использовать петли
Да благословит его !!
Редактировать:
Или вы будете использовать процедуры ..
Разница наиболее важна, когда у вас есть более одной строки кода, которая должна выполняться хотя бы один раз. Имитация петли DO, когда цикла в то время как будет привести к дублированию существенного кода, что всегда плохо. Предоставлено, лучшее решение заключается в рефакторе, который код в метод, а затем просто имеет тот же вызов метода до и в петле, но многие люди не любят даже так много дублирования, и используя do
Ключевое слово объявляет однозначно "Это петля контролируемого ногами".
Таким образом, в основном, читабельность и основные принципы SE.
Это лучший способ написания кода:
int count = ReadDataFromStream();
while(count != 0)
{
count = ReadDataFromStream();
}
Можно записать с использованием Do-While AS:
int count = 0;
do
{
count = ReadDataFromStream();
} while(count != 0);
Есть лучшие примеры до-в то время, но я не мог вспомнить в это время.
То, что вы не хватаете, это то, что ваше использование do...while
выше 100% НЕПРАВИЛЬНО!
А. do...while
Петля в Java, например, выглядит что-то подобное:
do {
//something you want to execute at least once
} while (someBooleanCondition);
Видишь, что там полное отсутствие второго блока там? Посмотрите, как то while
заканчивается утверждение полностью? Так что происходит сейчас, это код в {...}
пара между do
а также while
будет выполняться, тогда someBooleanCondition
Получите тестирование, и если это правда, код код будет выполнен снова. И опять. И опять. До someBooleanCondition
Получает тестирование ложь.
И на данный момент, возможно, вы поймете, почему у нас есть обе формы цикла. Приведенный выше код может быть переведен на:
//something you want to execute at least once
while (someBooleanCondition) {
//something you want to execute at least once
}
Этот код, однако, требует от вас ввести один и тот же (потенциально большой и сложный) код дважды, оставляя дверь открытой для получения дополнительных ошибок. Следовательно, необходимость в нижней тестовой петле вместо верхней тестовой петли.
Прежде всего, ваш do..while
Синтаксис не прав. Это как это:
do
{
document.write("ok");
}while(x=="10");
Это полезно, когда вы хотите выполнить тело цикла хотя бы один раз, не оценивая его временное состояние. Например, позволяет сказать, что вы хотите написать цикл, в котором вы подскажите пользователю ввод и в зависимости от ввода выполнить какой-то код. Вы хотели бы, чтобы это выполнить хотя бы один раз, а затем спросить пользователя, хочет ли он продолжить. В таких случаях, do..while
петля приводит к меньшему и более чистому коду по сравнению с while
петля.
Несмотря на то что
do {
s1;
...
sn;
} while (p);
может быть написано как
boolean done = false;
while (!done) {
s1;
...
sn;
done = !p;
}
Первый более понятен.