Programmation Java/Itérations
Un livre de Wikibooks.
| Programmation |
| Java |
| Sommaire |
| IHM avec SWING |
| Annexes |
| Modifier ce modèle |
Java offre deux instructions permettant de réaliser des traitements itératifs : while, for. De plus les instructions break et continue permettent d'altérer le déroulement des boucles.
Sections |
[modifier] Instruction while
L'instruction while continue d'exécuter le traitement situé dans la boucle tant que la condition indiquée est vérifiée :
while (condition) { // instructions à exécuter }
Une autre forme du while évalue la condition à la fin de chaque cycle, plutôt qu'au début. Le bloc d'instruction est donc toujours exécuté au moins une fois :
do { // instructions à exécuter } while (condition);
[modifier] Instruction for
L'instruction for permet d'exécuter un traitement de manière répétitive, mais en spécifiant différemment la condition d'arrêt.
À l'intérieur des parenthèses se trouvent trois blocs d'instructions séparés par un point-virgule. L'exécution de la boucle for commence par exécuter le premier bloc, qui sert généralement à initialiser une variable. Ensuite le second bloc est exécuté (la condition). Si la condition retourne la valeur booléenne true, le corps de la boucle for est exécuté (le bloc d'instruction entre accolade). Sinon l'exécution de la boucle for se termine. Si le corps de la boucle a été exécuté, le troisième bloc est exécuté (incrémenter une variable en général) et le processus recommence : la condition est évaluée, etc.
Voici un exemple typique d'une boucle for qui défini un compteur pour exécuter la boucle i fois. En d'autres termes, le traitement est effectué tant que le compteur n'a pas atteint une limite :
for (int i=0 ; i<limite ; i=i+increment) { // instructions à exécuter }
[modifier] Boucle "foreach"
Java 5 propose une nouvelle syntaxe pour la boucle for, parfois appelée "for-each": elle demande la déclaration d'une variable qui prendra ses valeurs successives dans un tableau ou dans un objet "itérable" (par exemple une collection).
// Parcours d'un tableau int[] tableau; for (int a : tableau) { // traitement impliquant a }
Voir également: Les tableaux en Java 1.5
La même syntaxe sert pour Les collections (ici on utilise une collection générique contenant des instances de la classes ObjetX).
// Parcours d'une collection Collection<ObjetX> collection = ......; for(ObjetX objetX : collection){ objetX.methodeY(p1,p2); }
[modifier] Instruction break
L'instruction break permet de sortir immédiatement de la boucle, c'est-à-dire de sauter immédiatement à la première instruction qui suit la boucle.
L'utiliser pour cela n'est pas de la bonne programmation. Il vaut donc mieux l'éviter. De plus, son utilisation rend le programme plus difficile à déboguer.
[modifier] Instruction continue
L'instruction continue permet de ne pas exécuter le reste de l'itération en cours, c'est-à-dire de sauter immédiatement au bloc d'incrémentation et à une nouvelle évaluation de la condition.
De même que pour break, utiliser continue n'est pas de la bonne programmation. Il vaut donc mieux l'éviter; son utilisation rend le programme plus difficile à déboguer.
[modifier] Boucle nommée
Un label peut précéder l'instruction de boucle. Celui-ci peut alors être utilisé avec les instructions break et continue dans le cas de boucles imbriquées pour indiquer quelle boucle est concernée.
Exemple :
int compteur = 0; recherche: for (int i = 0 ; i < matrix.length ; i++) for (int j = 0 ; j < matrix[i].length ; j++) { if (matrix[i][j] == value) break recherche; // interrompt la boucle externe (for i) compteur++; }