Por que usar um loop de "fazer enquanto"? [fechado
-
25-09-2019 - |
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.
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.