Pergunta

Eu nunca entendi por que usar um fazer enquanto Loops é necessário. Eu entendo o que eles fazem, que é executar o código que o loop while contém sem verificar se a condição for verdadeira primeiro.

Mas não é o código abaixo:

do{
    document.write("ok");
}
while(x == "10");

Exatamente o mesmo que:

document.write("ok");
while(x == "10"){
    document.write("ok");
}

Talvez eu esteja sendo muito estúpido e perdendo algo óbvio, mas não vejo o benefício de usar fazer enquanto sobre meu exemplo acima.

Foi útil?

Solução

Seu código de exemplo está errado:

do{
    document.write("ok");
}while(x == "10"){
    document.write("ok");
}

Esta seria a forma real:

do {
    document.write("ok");
} while(x == "10");

Você está certo de que ele executa o bloco de código interno antes de verificar a condição, mas não precisa duplicar o bloqueio do código interno da maneira como você o possui. O DO/enquanto o construto é (como você já declarou) uma maneira de garantir que um pedaço de código seja executado 1 ou mais vezes em vez de 0 ou mais vezes (dependendo do condicional).

Outras dicas

  • Como você vê, você tinha que repetir o mesmo linha no segundo exemplo. Quando você mantém, você provavelmente quer que essas duas linhas sejam as mesmas, mas você tem repetiu a si mesmo.

  • Agora imagine que isso fosse um Grande bloco E não uma linha, não apenas será necessário visual precioso desnecessário espaço, mas também será Mais difícil de manter e atrair inconsistências.

Faça enquanto rodará pelo menos uma vez - deixando você fazer, enquanto ... onde, enquanto exige que a condição tenha sido iniciado para começar ..

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

A respeito:

do{

   //.....
   // 100000 lines of code!
   //.....

} while(i%10);




Claro que você não vou Escreva isso:

//.....
// 100000 lines of code!
//.....

while(i%10){

   //.....
   // 100000 lines of code!
   //.....

} 



E você será forçado a usar um loop do-while
Deus abençoe !!

Editar:
Ou você usará procedimentos ..

A diferença é mais importante quando você tem mais de uma linha de código a ser executada pelo menos uma vez. Simular a um loop de DO com um loop de tempo resultaria em duplicação substancial de código, o que é sempre ruim. Concedido, uma solução melhor é refatorar esse código em um método e depois simplesmente ter o mesmo método chamado antes e no loop, mas muitas pessoas não gostam de tanta duplicação e usando o do A palavra-chave declara inequivocamente "este é um loop controlado por pés".

Então, basicamente, a legibilidade e os princípios básicos de SE.

É uma maneira melhor de escrever código:

int count = ReadDataFromStream();
while(count != 0)
{
    count = ReadDataFromStream();
}

Pode ser escrito usando do-while como:

int count = 0;
do
{
    count = ReadDataFromStream();
} while(count != 0);

Existem melhores exemplos de fazer-mas eu não conseguia me lembrar neste momento.

O que você está perdendo é que seu uso de do...while acima está 100% ERRADO!

UMA do...while O loop em Java, por exemplo, se parece mais disso:

do {
  //something you want to execute at least once
} while (someBooleanCondition);

Veja a completa falta de um segundo bloco lá? Veja como o while termina a declaração completamente? Então, o que acontece agora é que o código no {...} par entre do e while será executado, então someBooleanCondition será testado e, se for verdade, o bloco de código será executado novamente. E de novo. E de novo. Até someBooleanCondition é testado falso.

E neste momento, talvez você entenda por que temos as duas formas de loop. O código acima pode ser traduzido para:

//something you want to execute at least once
while (someBooleanCondition) {
  //something you want to execute at least once
}

Esse código, no entanto, exige que você digite o mesmo código (potencialmente grande e complicado) duas vezes, deixando a porta aberta para obter mais erros. Daí a necessidade de um loop de teste inferior em vez de um loop de teste superior.

Primeiro de tudo o seu do..while A sintaxe está errada. É assim:

do
{
  document.write("ok");
}while(x=="10");

É útil quando você deseja executar o corpo do loop pelo menos uma vez sem avaliar sua condição teminante. Por exemplo, digamos que você queira escrever um loop onde está solicitando o usuário para obter entrada e dependendo da entrada execute algum código. Você gostaria que isso executasse pelo menos uma vez e depois pergunte ao usuário se ele deseja continuar. Em tais casos, do..while Loop resulta em código menor e mais limpo em comparação com um while ciclo.

Embora

do { 
    s1;
    ...
    sn;
} while (p);

poderia ser escrito como

boolean done = false;
while (!done) {
    s1;
    ...
    sn;
    done = !p;
}

O primeiro é mais compreensível.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top