Processing > Boucle

1.  Boucle for

L'instruction for prend la forme suivante:

for ( initialisation ; condition ; incrementation ) {
        // bloc de code
}
initialisation
instruction exécutée une seule fois avant le premier passage dans la boucle
condition
condition qui est vérifiée avant chaque exécution de la boucle. La boucle ne s'exécute que si la condition est évaluée true
incrementation
instruction a effectuer après chaque exécution de la boucle qui avec la condition, limite le nombre de répétitions de la boucle

Nous utilisons et réservons par convention la variable i en tant que compteur dans une boucle.

for ( int i = 0 ; i < 5 ; i=i+1 ) {
        // à chaque itération, la valeur de i s'incrémente de +1
        println(i);
}

Itération

Valeur de i

1

0

2

1

3

2

4

3

5

4




for ( int i = 3 ; i >= 0 ; i=i-1 ) {
        // à chaque itération, la valeur de i est décrémentée de 1
        println(i);
}

Itération

Valeur de i

1

3

2

2

3

1

4

0




for ( int i = 2 ; i =< 4 ; i++ ) {
        // à chaque itération, la valeur de i est incrémentée de 1
        println(i);
}

Itération

Valeur de i

1

2

2

3

3

4

1.1  Avec suppression

Lorsqu'il est possible que le code supprime des éléments d'une liste traversée par une boucle, il faut que la liste soit traversée à l'envers. C'est à dire à partir du dernier élément jusqu'au premier.

for ( int i = length-1 ; i >= 0;  i-- ) {

}

Pour un exemple pratique, voir la suppression des éléments d'un ArrayList.

2.  Boucle for imbriquée

2.1  Modèle de base

for ( int i = 0 ; i < 2 ; i++ ) {
        for ( int j = 0 ; j < 2 ; j++ ) {
                println(i+" "+j);
        }
}

Itération

Valeur de i

Valeur de j

1

0

0

2

0

1

3

1

0

4

1

1

Attach:Attach:boucle_imbriquée.png Δ

2.2  Génération d'une tapisserie

Chaque itération de la boucle imbriquée dessine une cellule de la tapisserie.
i correspond au numéro de la colonne et j celui la rangée d'une cellule à une itération spécifique.

int colonnes = 10;
int rangees = 8;

void setup(){
        size(400,400);
        smooth();
        noStroke();
}

void draw(){
        background(255);

        float largeurColonne = width/colonnes;
        float hateurRangee = height/rangees;

        fill(0);
        for(int i=0 ; i < colonnes ; i++){
                for(int j=0 ; j < rangees ; j++){
                        float x = i*largeurColonne;
                        float y = j*hateurRangee;
                        rect( x+1 , y+1 , largeurColonne-2 , hateurRangee-2 );
                }
        }
}

2.3  i, j → # de cellule

cellule = i + j * colonnes;

2.4  # de cellule → i, j

i = cellule % colonnes;
j = int(cellule / colonnes);

2.5  Souris → i, j

i = int( ( mouseX - origineX ) / largeurColonne);
j = int( ( mouseY - origineY ) / hauteurRangee);

3.  Boucle while

int x =0; // initialisation
while ( x < width ) { // condition
        line(x,0,x,height); // bloc de code
        x = x + 3; // incrementation
}
initialisation
instruction exécutée une seule fois avant le premier passage dans la boucle
condition
condition qui est vérifiée avant chaque exécution de la boucle. La boucle ne s'exécute que si la condition est évaluée true
bloc de code
instructions a effectuer à chaque passage de la boucle
incrementation
instruction a effectuer après chaque exécution de la boucle qui avec la condition, limite le nombre de répétitions de la boucle