Quais são as diferenças entre um loop while e um loop for?
On Fevereiro 17, 2021 by adminQuais são as diferenças entre um loop while e um loop for? Parece-me que são iguais.
Comentários
Resposta
O loop while
geralmente é usado quando você precisa repetir algo até que uma determinada condição seja verdadeira :
inputInvalid = true; while(inputInvalid) { //ask user for input invalidInput = checkValidInput(); }
Por outro lado, o loop for
é geralmente usado quando você precisa iterar um determinado número das vezes:
for(var i = 0; i < 100; i++) { ...//do something for a 100 times. }
Você pode usá-los alternadamente se desejar:
inputInvalid = true; for(;;) { if(!inputInvalid) { break; } //ask user for input invalidInput = checkValidInput(); }
Ou
inputInvalid = true; for(;inputInvalid;) { //ask user for input invalidInput = checkValidInput(); }
E:
var i = 0; while(i < 100) { //do your logic here i++; }
Comentários
- Como você pode ver, esses usos fora do padrão produzem códigos menos elegantes e mais difíceis de ler. Nos bastidores, os diferentes tipos de loop são todos o mesmo goto condicional, então tente usar aquele que sintaticamente melhor se adapta ao que você está tentando alcançar.
- No código abaixo, também posso dizer para fazer algo 10 vezes. (Ele preenche seu argumento como para loop @npinti) var count = 0; enquanto (contagem < 10) {document.writeln (" looping away! ") ; contagem ++; }
- Observe que em C, você pode reescrever seu terceiro exemplo como
for(invalidInput = checkValidInput();inputInvalid;invalidInput = checkValidInput()){}
. Mas sim, seu ponto básico está totalmente correto, e um loopfor
é realmente apenas um açúcar de sintaxe. Algumas línguas passam totalmente sem ele. O loop Cfor
é uma besta estranha, na verdade mais um bastardizadowhile
ao contrário de linguagens como Pascal, onde ofor
loop só pode ser usado para percorrer inteiros discretos. - o que significa (;;). Não consigo encontrar explicação para for (;;) it.
- @mistichor o loop for C / C ++ leva 3 instruções para (;;) é um loop for com 3 instruções vazias, o ponto e vírgula separa as instruções em branco .
Resposta
Há uma diferença fundamental entre os dois: com um for
loop, você precisa saber com antecedência com que freqüência o corpo do loop será executado. Esta é uma restrição importante, pois há muitos problemas em que você simplesmente não sabe disso. Às vezes, você nem sabe se esse número é finito ou não em tudo !
Considere, por exemplo, um programa que pede ao usuário para inserir uma série de nomes. Digamos, um sistema de gerenciamento de pacientes para um dentista. Como você saberia de antemão em quantos pacientes o dentista vai internar? Você não! Você não pode escrever um for
loop para isso.
Comentários
- Existem várias maneiras de encerrar um loop for antecipadamente, portanto, você só precisa saber o tempo máximo que pretende iterar em torno do loop. Além disso, se você ' estiver disposto a usar indevidamente a parte condicional do loop for, poderá fazer com que ele faça qualquer coisa que um loop while faria.
- linguagem que você está falando?Em pascal, seu argumento tem algum mérito (codificar um número grande como limite é feio), mas em C você pode usar condições arbitrárias com
for
. Nenhuma diferença entrefor(;xxx;)
ewhile(xxx)
. - seta para baixo. O caos está precisamente correto.
initializer;
seguido porwhile(condition){ ... increment;}
é o mesmo quefor(initializer; condition; increment){ ... }
.
for
loop é apenas um açúcar de sintaxe, suportando um subconjunto de casos de uso quewhile
suporta. Às vezes, " sintaxe sugar " é menosprezado, mas realmente deve ser visto como uma forma de criar um código mais limpo e fácil de entender .for
é na verdade um loopwhile
em roupas elegantes.