Doublons Possibles:
Itérer avec une boucle for ou une boucle while?
Les boucles en C - () ou while() - qui est le MEILLEUR?Quand doit-on utiliser un
for
boucle au lieu d'unwhile
boucle?Je pense que le suivant, les boucles sont identiques, à l'exception de leur syntaxe. Si oui, alors pourquoi choisir l'un plutôt que l'autre?
int i; for (i = 0; i < arr.length; i++) { // do work } int i = 0; while (i < arr.length) { // do work i++; }
Réponses
Trop de publicités?Dans votre cas, vous n'avez pas gain de beaucoup plus un de moins de ligne de code dans l' for
boucle.
Toutefois, si vous déclarez la boucle comme ceci:
for(int i = 0; i < x; i++)
Vous parvenez à conserver i
dans le champ d'application de la boucle, au lieu de le laisser s'échapper vers le reste du code.
Aussi, dans une boucle while, vous avez la déclaration de la variable, la condition, et l'incrément dans 3 endroits différents. Avec la boucle for, il est tout en un pratique, facile-à-lire.
Dernière pensée:
Une note plus importante. Il y a une différence sémantique entre les deux. Tandis que les boucles, en général, sont destinés à avoir un nombre infini d'itérations. (ie. jusqu'à ce que le fichier a été lu..peu importe le nombre de lignes), et pour les boucles devraient avoir un plus certain nombre d'itérations. (boucle sur tous les éléments d'une collection, qui on peut compter, selon la taille de la collection.)
Il y a une raison de choisir for
sur while
: lisibilité.
En utilisant une boucle for
, vous indiquez explicitement que votre intention est d'effectuer un type d'opération nécessitant une initialisation, une opération "étape" et une condition d'achèvement.
Avec while
, par contre, vous dites seulement que vous avez besoin de la condition d'achèvement.
J'utilise 'while' lorsque je n'ai pas nécessairement besoin d'un compteur, par exemple lorsque vous lisez un fichier et que vous attendez d'atteindre EOF. Dans ce cas, "pour" peut ne pas être la meilleure alternative. Lorsque vous parcourez les éléments d'un tableau, je préfère utiliser «pour», car il traduit mieux l'intention.
La différence notable entre une boucle for () et une boucle while () est la suivante: une instruction "continue" dans une boucle while () se branche en haut de la boucle, tandis qu'une dans une boucle for () passe à la troisième partie de la clause for () [celle qui suit la condition, habituellement utilisée pour renverser des variables].