ti-enxame.com

Diferença entre loop "while" e loop "do while"

Qual é a diferença entre loop while e fazer loop while. Eu costumava pensar que ambos são completamente iguais. Então me deparei com o seguinte código:

do {
        printf("Word length... ");
        scanf("%d", &wdlen);
    } while(wdlen<2);

Este código funciona perfeitamente. Imprime o tamanho da palavra e digitaliza a entrada. Mas quando eu mudei para

while(wdlen<2){
        printf("Word length... ");
        scanf("%d", &wdlen);
    } 

Dá uma tela em branco. Não funciona. Portanto, há alguma diferença funcional entre os dois loops. Alguém pode explicar isso? Desde já, obrigado.

EDIT: Existe alguma outra diferença nesses dois?

30
narayanpatra

O do while loop executa o conteúdo do loop uma vez antes de verificar a condição do while. 

Considerando que um laço while irá verificar a condição antes de executar o conteúdo.

Neste caso, você está esperando pela entrada do usuário com o scanf (), que nunca será executado no while loop, pois o wdlen não é inicializado e pode conter apenas um valor de lixo que pode ser maior que 2.

55
hydrogen

While : sua condição está no início do bloco de loop e torna possível para nunca entrar no loop.

Do While : sua condição está no final do bloco de loop, e torna obrigatório para entrar no loop pelo menos uma vez.

17
Guillaume Lebourgeois
do {
    printf("Word length... ");
    scanf("%d", &wdlen);
} while(wdlen<2);

Um loop do-while garante a execução do loop pelo menos uma vez, porque verifica a condição do loop APÓS a iteração do loop. Portanto, ele imprimirá a string e chamará scanf, atualizando assim a variável wdlen.

while(wdlen<2){
    printf("Word length... ");
    scanf("%d", &wdlen);
} 

Quanto ao loop while, ele avalia a condição do loop ANTES de o corpo do loop ser executado. wdlen provavelmente começa como mais de 2 no seu código, e é por isso que você nunca chega ao corpo do loop.

3
Mahmoud

do while em um loop de controle de saída. while é um loop de controle de entrada.

2
sriram

A diferença está em quando a condição é avaliada. Em um loop do..while, a condição não é avaliada até o final de cada loop. Isso significa que um loop do..while será sempre executado pelo menos uma vez. Em um loop while, a condição é avaliada no início.

Aqui eu suponho que wdlen esteja avaliando como false (ou seja, é maior que 1) no início do loop while, então o loop while nunca é executado. No loop do..while, ele não é verificado até o final do primeiro loop, então você obtém o resultado esperado.

1
Stephen

Do while loop será executado pelo menos uma vez ....... mas while loop verificará a condição primeiro e então poderá ou não ser executada dependendo da condição.

No seu exemplo, o wdlen pode assumir qualquer valor de lixo que seja> 2, portanto while loop nunca será executado.

enquanto do while loop será ececutado e informará para você inserir o valor e verificar esse valor na condição de terminação

1
SPB

Enquanto:

  1. loop de controle de entrada

  2. condição é verificada antes da execução do loop

  3. nunca execute o loop se a condição for falsa

  4. não há ponto e vírgula no final da declaração while

Fazer enquanto:

  1. loop de controle de saída

  2. condição é verificada no final do loop

  3. executa condição falsa pelo menos uma vez desde que a condição é verificada mais tarde

  4. há ponto e vírgula no final da instrução while.

1
Unnati shah

A diferença mais importante entre while e do-while loop é que em do-while, o bloco de código é executado pelo menos uma vez, mesmo que a condição dada seja falsa.

Para colocar de uma maneira diferente:

  • Enquanto sua condição está no início do bloco de loop, e torna possível nunca entrar no loop.
  • Em While loop, a condição é testada primeiro e, em seguida, o bloco de código é executado se o resultado do teste for verdadeiro.
0
Yasar Khan

Provavelmente wdlen começa com um valor> = 2, portanto, no segundo caso, a condição de loop é inicialmente falsa e o loop nunca é inserido.

No segundo caso, o corpo do loop é executado antes que a condição wdlen<2 seja verificada pela primeira vez, então o printf/scanf é executado pelo menos uma vez.

0
sth

while testa a condiçãoantes de executar instruções dentro do while loop.

do while testa a condiçãodepois de ter executado statement dentro do loop.

fonte: deixe-nos C

0
Prime

enquanto testa a condição antes instruções de execução no loop while.

do while test the condition depois tendo executado a instrução dentro do loop.

0
BOUKERI Besmen

A diferença entre uma construção while do Passo 1 versus um do while é que qualquer expressão dentro do do {} será executada pelo menos uma vez, independentemente da condição dentro da cláusula while().

println("\nStep 2: How to use do while loop in Scala")
var numberOfDonutsBaked = 0
do {
  numberOfDonutsBaked += 1
  println(s"Number of donuts baked = $numberOfDonutsBaked")
} while (numberOfDonutsBaked < 5)

Aqui está a explicação do detalhe: Explicação Visita: coderforevers

0
Ashish Yadav

Do while loop será executado pelo menos uma vez ....... mas enquanto o loop irá verificar a condição primeiro e então pode ou não ser executado dependendo da condição. Enquanto: sua condição está no começo do bloco de loop, e torna possível nunca entrar no loop.

Do While: sua condição está no final do bloco de loops e torna obrigatório entrar no loop pelo menos uma vez.

0
Kashif ashraf

Em WHILE, verifique primeiro a condição e, em seguida, execute o programa No loop DO-WHILE, execute primeiro o programa pelo menos uma vez e verifique a condição 

0
IV REDDY

A diferença entre fazer while (check de saída) e while (check de entrada) é que enquanto entra faz enquanto não vai checar mas enquanto checa primeiro

O exemplo é assim:

Programa 1:

int a=10;
do{
System.out.println(a);
}
while(a<10);

//here the a is not less than 10 then also it will execute once as it will execute do while exiting it checks that a is not less than 10 so it will exit the loop

Programa 2:

int b=0;
while(b<10)
{
System.out.println(b);
}
//here nothing will be printed as the value of b is not less than 10 and it will not let enter the loop and will exit

programa de saída 1:

10

programa de saída 2:

[nada é impresso]

Nota:

a saída do programa 1 e do programa 2 será a mesma se atribuirmos a = 0 eb = 0 e também colocarmos um ++; e b ++; no respectivo corpo do programa.

0
Runni Kumari

While Loop:

while(test-condition)
{
      statements;
      increment/decrement;
}
  1. Menor tempo de execução e velocidade
  2. Loop Condicionado de Entrada
  3. Nenhum número fixo de iterações

Do While Loop:

do
{
      statements;
      increment/decrement;
}while(test-condition);
  1. Maior tempo de execução e velocidade
  2. Sair do Loop Condicionado
  3. Mínimo um número de iteração

Saiba mais sobre este assunto aqui: Diferença entre While e Do While Loop

Isso é válido para programação em C, programação em Java e outras linguagens, pois os conceitos permanecem os mesmos, apenas as mudanças de sintaxe.

Além disso, outro pequeno, mas um fator diferenciador a ser observado é que o loop while consiste de um semicolon no final da condição while.

0
Tushar Soni