Quelles sont les différences entre une boucle while et une boucle for?
On février 17, 2021 by adminQuelles sont les différences entre une boucle while et une boucle for? Il me semble quils sont identiques.
Commentaires
Answer
La boucle while
est généralement utilisée lorsque vous devez répéter quelque chose jusquà ce quune condition donnée soit vraie :
inputInvalid = true; while(inputInvalid) { //ask user for input invalidInput = checkValidInput(); }
Dautre part, la boucle for
est généralement utilisée lorsque vous devez itérer un nombre donné de fois:
for(var i = 0; i < 100; i++) { ...//do something for a 100 times. }
Vous pouvez les utiliser de manière interchangeable si vous le souhaitez:
inputInvalid = true; for(;;) { if(!inputInvalid) { break; } //ask user for input invalidInput = checkValidInput(); }
Ou
inputInvalid = true; for(;inputInvalid;) { //ask user for input invalidInput = checkValidInput(); }
Et:
var i = 0; while(i < 100) { //do your logic here i++; }
Commentaires
- Comme vous pouvez le voir, ces utilisations non standard produisent du code moins élégant, plus difficile à lire. Sous le capot, les différents types de boucles sont tous le même goto conditionnel, alors essayez dutiliser celui qui correspond le mieux syntaxiquement à ce que vous essayez datteindre.
- Dans le code ci-dessous, je peux aussi dire faire quelque chose 10 fois. (Il remplit votre argument comme pour la boucle @npinti) var count = 0; while (count < 10) {document.writeln (" en boucle! ") ; count ++; }
- Notez quen C, vous pouvez réécrire votre troisième exemple comme
for(invalidInput = checkValidInput();inputInvalid;invalidInput = checkValidInput()){}
. Mais oui, votre point de base est tout à fait correct, et une bouclefor
nest en réalité que du sucre de syntaxe. Certaines langues sen passent complètement. La boucle Cfor
est une étrange bête, vraiment plus bâtardéewhile
contrairement à des langages comme Pascal, où ne peut être utilisée que pour parcourir des entiers discrets. - que signifie (;;). Je ne trouve pas dexplication pour for (;;) it.
- @mistichor la boucle for C / C ++ prend 3 instructions pour (;;) est une boucle for avec 3 instructions vides, le point-virgule sépare les instructions vides .
Réponse
Il y a une différence fondamentale entre les deux: avec un for
boucle, vous devez savoir à lavance à quelle fréquence le corps de la boucle sera exécuté. Ceci est une restriction majeure, car il existe de nombreux problèmes pour lesquels vous ne le savez tout simplement pas. Parfois, vous ne savez même pas si ce nombre est fini du tout !
Prenons lexemple dun programme demandant à lutilisateur de saisir une série de noms. Disons, un système de gestion des patients pour un dentiste. Comment sauriez-vous à lavance combien de patients le dentiste va entrer? Vous ne pouvez pas « t écrire une boucle for
pour cela.
Commentaires
- Il existe plusieurs façons de terminer une boucle for plus tôt, il vous suffit donc de connaître le nombre maximum de temps que vous avez lintention ditérer autour de la boucle. De plus, si vous ' êtes prêt à mal utiliser la partie conditionnelle de la boucle for, vous pouvez lui faire faire tout ce quune boucle while pourrait.
- Ce qui langue parlez-vous?Dans Pascal, votre argument a un certain mérite (coder en dur un grand nombre car limite est moche), mais en C vous pouvez utiliser des conditions arbitraires avec
for
. Aucune différence entrefor(;xxx;)
etwhile(xxx)
. - flèche vers le bas. Le chaos est précisément correct.
initializer;
suivi dewhile(condition){ ... increment;}
est identique àfor(initializer; condition; increment){ ... }
.
for
nest que du sucre de syntaxe, prenant en charge un sous-ensemble de cas dutilisation pris en charge parwhile
. Parfois, " syntax sugar " est méprisé, mais cela devrait vraiment être considéré comme un moyen de créer un code plus propre et plus facile à comprendre .for
est en fait une bouclewhile
dans des vêtements de fantaisie.