L’ interruption de boucle Approfondissement du langage L’ interruption de boucle (break) IUT Nancy Charlemagne Jacques Lonchamp
L’instruction break Définition permet d’interrompre de manière anticipée l’exécution d’une boucle. Quand l’ordinateur rencontre un break dans une boucle, il considère que la boucle est terminée et il passe directement à l’instruction qui suit cette boucle. rappel: break sert aussi à séparer les différentes alternatives dans un switch.
1) Avec un while et sans break : Exemple Recherche d’une valeur dans un tableau trié par ordre croissant (arrêt si on trouve ou si on dépasse la valeur). 1) Avec un while et sans break : public static boolean existe(int [ ] t, int val) { boolean trouve=false; // un booléen pour dire si on a trouvé ou non boolean fini=false; // un booléen pour arrêter la boucle int indice=0; while ((!fini) && (indice < t.length)) { if (t[indice] >= val) // on arrête la boucle fini = true; else indice++; // on décale l'indice } if (fini) if (t[indice] == val) trouve = true; return(trouve);
2) Avec un while et avec un break : public static boolean existe(int [ ] t, int val) { boolean trouve=false; // un booléen pour dire si on a trouvé ou non int indice=0; while ((!trouve) && (indice < t.length)) { if (t[indice] == val) // on arrête la boucle avec trouve = true trouve = true; else if (t[indice] > val) // la valeur ne peut plus être là break; // on arrête la boucle avec trouve = false else indice++; // on décale l'indice } return(trouve);
3) Avec un for et avec un break : public static boolean existe(int [ ] t, int val) { boolean trouve=false; // un booléen pour dire si on a trouvé ou non for (int i=0; i < t.length; i++) { if (t[i] == val) { // on arrête la boucle avec break trouve=true; break; } if (t[i] > val) // la valeur ne peut plus être là break; // on arrête la boucle avec break return(trouve);
Interruption de boucles imbriquées Le break n’interrompt que la boucle la plus imbriquée dans laquelle il est placé. Ex : public class ImbricationBreak { public static void main(String [ ] args) { for (int i=0; i<3; i++) { for (int j=0; j<3; j++) { System.out.println(i + "," + j); if (i+j == 2) break; } } 0,0 } 0,1 affiche 0,2 1,0 1,1 2,0
Conclusion Il ne faut pas abuser de l’instruction break. Le but n’est pas de raccourcir les programmes. Il ne faut utiliser l’instruction break que si cela peut rendre le programme plus efficace et/ou plus compréhensible.