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?
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.
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.
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.
do pendant une boucle de contrôle de sortie . while est une boucle de contrôle d'entrée.
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.
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
Tandis que:
boucle de contrôle d'entrée
la condition est vérifiée avant l'exécution de la boucle
n'exécute jamais la boucle si la condition est fausse
il n'y a pas de point-virgule à la fin de la déclaration while
Faire pendant:
boucle de contrôle de sortie
la condition est vérifiée à la fin de la boucle
exécute la condition fausse au moins une fois puisque la condition est vérifiée plus tard
il y a un point-virgule à la fin de la déclaration while.
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:
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.
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
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.
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
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.
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
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.
While Loop:
while(test-condition)
{
statements;
increment/decrement;
}
Do While Loop:
do
{
statements;
increment/decrement;
}while(test-condition);
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.