boucles for

images/whitebelt.png

Les théoriciens de l’informatique s'étaient aperçus qu’il était dangereux de permettre de manipuler un index de boucle en dehors de la boucle elle même.

La boucle for permet d’avoir des index qui restent uniquement en portée dans la boucle.

boucle for

public class AffichageTableau {

    public void afficher(String[] tableau) {
   for(int ix = 0 ; ix < tableau.length ; ix++) {
      System.out.println(tableau[ix]) ;
   }
    }
}

Syntaxe :

for( [initialisations index] ; [test haut] ; [opérations d’itération en "bas" de boucle]) { }

Bien que chacune des "zones" de l’en-tête soit facultative (on peut écrire for(;;)) il faut bien comprendre qu’un des intérêts de cette forme syntaxique est de déclarer des variables qui restent en portée uniquement à l’interieur de la boucle. Dans l’exemple ci-dessus la variable ix n’a pas d’existence en dehors de la boucle: ceci correspond à un souci d’algorithmique (pour éviter des erreurs de manipulation d’index qui ont donné lieu à une abondante littérature!).

images/orangebelt.png

Zones avec des déclarations multiples:

 int[] tableau = .....
 // on remplit le tableau
 for(int ix=0, iy=tableau.length-1 ; ix < tableau.length; ix++,iy--) {
    tableau[ix] = iy ;
 }

A vous de donner le résultat …!

boucle "foreach". 

public class AffichageTableau {

    public void afficher(String[] tableau) {
   for(String chaine : tableau) {
      System.out.println(chaine) ;
   }
    }
}

[Note]anticipation sur la suite du cours

Les boucles "foreach" permette de parcourir des objets Iterable : ce sont des objects qui contiennent d’autres objets.

[Avertissement]Attention!

Cette version de la boucle for est un exemple, heureusement rare, de macro-génération en Java (le code compilé n’est pas le code écrit: il s’agit d’une introduction tardive). Pour éviter des effets inattendus préférer systématiquement cette écriture :

   for(final String chaine : tableau) {

   }

On ne sera jamais tenté d’affecter dans la boucle une autre valeur à chaine et de croire que cette autre valeur sera reportée dans le tableau. Pour bien comprendre le phénomène essayez-vous même de trouver quel est le code généré.