web-dev-qa-db-fra.com

Différence entre les boucles "while" et "do while"

Quelle est la difference entre while loop et do while loop? J'avais l'habitude de penser que les deux sont complètement les mêmes.

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

Ce code fonctionne parfaitement. Il imprime la longueur du mot et tascans l’entrée. Mais quand je l'ai changé pour

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

Cela donne un écran vide. Je ne travaille pas. Il existe donc une différence fonctionnelle entre les deux boucles. Quelqu'un peut-il l'expliquer? Merci d'avance.

EDIT: Y at-il une autre différence entre ces deux?

30
narayanpatra

La boucle do while exécute le contenu de la boucle une fois avant de vérifier la condition du moment. 

Alors que la boucle while vérifie la condition avant d’exécuter le contenu.

Dans ce cas, vous attendez une entrée utilisateur avec scanf (), qui ne sera jamais exécutée dans la boucle while car wdlen n’est pas initialisé et peut simplement contenir une valeur de mémoire erronée pouvant être supérieure à 2.

55
hydrogen

While : votre condition est au début du bloc de boucle et permet de ne jamais entrer dans la boucle.

Do While : votre condition est à la fin du bloc de boucle et oblige à entrer dans la boucle au moins une fois.

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

Une boucle do-while garantit l'exécution de la boucle au moins une fois, car elle vérifie la condition de la boucle APRÈS l'itération de la boucle. Par conséquent, il va imprimer la chaîne et appeler scanf, mettant ainsi à jour la variable wdlen.

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

Quant à la boucle while, elle évalue la condition de la boucle AVANT que le corps de la boucle soit exécuté. wdlen commence probablement par plus de 2 dans votre code, c'est pourquoi vous n'atteignez jamais le corps de la boucle.

3
Mahmoud

do pendant une boucle de contrôle de sortie . while est une boucle de contrôle d'entrée.

2
sriram

La différence réside dans le moment où la condition est évaluée. Dans une boucle do..while, la condition n'est pas évaluée jusqu'à la fin de chaque boucle. Cela signifie qu'une boucle do..while sera toujours exécutée au moins une fois. Dans une boucle while, la condition est évaluée au début.

Ici, je suppose que wdlen est évalué à false (c'est-à-dire qu'il est supérieur à 1) au début de la boucle while, de sorte que la boucle while ne s'exécute jamais. Dans la boucle do..while, elle n'est cochée que jusqu'à la fin de la première boucle. Vous obtenez donc le résultat attendu.

1
Stephen

Faire pendant que la boucle sera exécutée au moins une fois ....... mais pendant que la boucle vérifiera la condition en premier et ensuite, elle pourra ou non être exécutée en fonction de la condition.

Dans votre exemple, wdlen peut prendre pour hypothèse toute valeur de déchet supérieure à 2, de sorte que tant que la boucle ne sera jamais exécutée.

tandis que faire pendant que la boucle sera exécutée et indiquera à u de saisir la valeur et de vérifier cette valeur dans la condition finale

1
SPB

Tandis que:

  1. boucle de contrôle d'entrée

  2. la condition est vérifiée avant l'exécution de la boucle

  3. n'exécute jamais la boucle si la condition est fausse

  4. il n'y a pas de point-virgule à la fin de la déclaration while

Faire pendant:

  1. boucle de contrôle de sortie

  2. la condition est vérifiée à la fin de la boucle

  3. exécute la condition fausse au moins une fois puisque la condition est vérifiée plus tard

  4. il y a un point-virgule à la fin de la déclaration while.

1
Unnati shah

La différence la plus importante entre les boucles while et do-while est que, dans do-while, le bloc de code est exécuté au moins une fois, même si la condition donnée est false.

Pour le dire différemment:

  • Tant que votre condition est au début du bloc de boucle, et permet de ne jamais entrer dans la boucle.
  • Dans la boucle While, la condition est d'abord testée, puis le bloc de code est exécuté si le résultat du test est vrai.
0
Yasar Khan

Probablement wdlen commence par une valeur> = 2, donc dans le second cas, la condition de boucle est initialement fausse et la boucle n'est jamais entrée.

Dans le second cas, le corps de la boucle est exécuté avant la première vérification de la condition wdlen<2. La variable printf/scanf est donc exécutée au moins une fois.

0
sth

while teste la condition avant d'exécuter statement dans la boucle while.

do pendant teste la condition après avoir exécuté statement dans la boucle.

source: laissez-nous C

0
Prime

while tester la condition before exécuter des instructions dans la boucle while.

faire en testant la condition après après avoir exécuté l'instruction à l'intérieur de la boucle.

0
BOUKERI Besmen

La différence entre une construction while de l'étape 1 et un do while réside dans le fait que toutes les expressions contenues dans le do {} seront exécutées au moins une fois, quelle que soit la condition dans la clause 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)

Voici l'explication détaillée: Explication Visite: coderforevers

0
Ashish Yadav

La boucle while est exécutée au moins une fois ....... mais boucle vérifie d'abord la condition, puis elle peut être exécutée ou non en fonction de la condition . While: votre condition est au début du bloc de boucle et permet de ne jamais entrer dans la boucle.

Do While: votre condition est à la fin du bloc de boucle et oblige à entrer dans la boucle au moins une fois.

0
Kashif ashraf

Dans WHILE, vérifiez d’abord la condition, puis exécutez le programmeDans la boucle DO-WHILE, exécutez d’abord le programme au moins une fois, puis vérifiez 

0
IV REDDY

La différence entre do while (contrôle de sortie) et while (contrôle d'entrée) est que lors de la saisie, do ne vérifie pas, mais qu'il vérifie d'abord

L'exemple est en tant que tel:

Programme 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

Programme 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

programme de sortie 1:

dix

Sortie du programme 2:

[rien n'est imprimé]

Remarque:

la sortie du programme 1 et du programme 2 sera la même si nous affectons a = 0 et b = 0 et mettons aussi un ++; et b ++; dans le corps respectif du programme.

0
Runni Kumari

While Loop:

while(test-condition)
{
      statements;
      increment/decrement;
}
  1. Temps d'exécution et vitesse réduits
  2. Boucle conditionnée d'entrée
  3. Pas de nombre fixe d'itérations

Do While Loop:

do
{
      statements;
      increment/decrement;
}while(test-condition);
  1. Temps d'exécution et vitesse plus élevés
  2. Boucle conditionnée à la sortie
  3. Minimum un nombre d'itération

En savoir plus sur ce sujet ici: Différence entre boucle While et Do While

Ceci est valable pour la programmation C, la programmation Java et d'autres langages car les concepts restent les mêmes, seule la syntaxe change.

En outre, il convient de noter un autre facteur mineur mais différenciant, à savoir que la boucle do while consiste en un point-virgule à la fin de la condition while.

0
Tushar Soni