Exercice 5: On tourne en rond (Boucles, Portée, Niveau 1)

Exercice 5.3.1

Indiquez l'affichage de chacune des boucles for suivantes. Exécutez dans un terminal le programme BouclesFor.java pour vérifier vos réponses (Tapez "Enter" pour passer d'une boucle à la suivante). Les boucles infinies éventuelles peuvent être interrompues en tapant <ctrl-c> dans le terminal ou encore, si vous exécutez ce code dans Eclipse/IntelliJ, en cliquant sur le petit carré rouge dans la vue "Console".

// Exemple 1
for (int i = 0; i < 5; i++) {
    System.out.print(i + " ");
}

// Exemple 2
for (int i = 3; i <= 8; i++) {
    System.out.print(i + " ");
}
        
// Exemple 3        
for (int i = 2; i > -2; i--) {
    System.out.print(i + " ");
}
        
// Exemple 4
for (int i = 0; i > 5; i--) {
    System.out.print(i + " ");
}
        
// Exemple 5
for (int i = 0, j = 5; (i <= 10 && j < 7); i++, j++) {
    System.out.print(i + " " + j + " * ");
}

// Exemple 6
for (int i = 0, j = 5; i <= 10 || j < 7; i++, j++) {
    System.out.print(i + " " + j + " * ");
}
        
// Exemple 7
boolean b = true;
for (int i = 3; b; i++) {
    System.out.print(i + " " + b + " * ");
    b = (i < 6);
}
        
// Exemple 8
for (int i = 0, j = 6; i != j; i++, j--) {
    System.out.print(i + " " + j + " * ");
}
        
// Exemple 9
for (int i = 0; i < 3; i++) {
    System.out.print(i + " ");
    for (int j = 0; j < 3; j++) {
        System.out.print(j + " ");
    }
    System.out.print(" * ");
}
        
// Exemple 10
for (int i = 3; i < 15; i--) {
    System.out.print(i + " ");
}

Exercice 5.3.2

Indiquez ce qui sera affiché par chaque partie de code ci-dessous. Exécutez dans un terminal le programme AffichageBoucles.java pour vérifier vos réponses (ce programme affichera le résultat pour toutes les boucles d'un seul coup, contrairement au précédent).

// Exemple 1
int n = 5;
int a = 2;
for(a = 3; a < n + 1; a = a++) {
    System.out.println(a-1);
    a = a + 1;
}

// Exemple 2
int n = 3;
int b = 5;
while (b <= 4 * n) {
    System.out.println(b);
    b = b * 2;
}
System.out.println(b);

// Exemple 3
int n = 3;
int c = 6 * n;
do {
    c = c - n * 2;
    System.out.println(c);
} while (c >= 0);
System.out.println(c);

// Exemple 4
int n = 3;
int d = 3;
while (d < n) {
    d = d + 1;
}
System.out.println(d);

// Exemple 5
int n = 3;
int e = 3;
do {
    e = e + 1;
} while (e < n);
System.out.println(e);

// Exemple 6
int n = 3;
int f = 3;
for (f = 0; f < n; f = f + 1);
    System.out.println(f);

Exercice 5.3.3

Expliquez pourquoi les deux portions de code suivantes ne compilent pas en Java :

// Exemple 1
int i = 0;
for (int i = 1; i < 5; ++i)
    System.out.println(i);

// Exemple 2
for (int i = 0; i < 5; ++i);
    System.out.println(i);

Exercice 5.3.4

Complétez le programme BouclesEquivalentes avec une boucle while et une boucle do..while qui font la même chose que la boucle for déjà présente dans le programme.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
class BouclesEquivalentes {

    public static void main(String[] args) {
        System.out.println("Boucle for :");
        for (int a = 3; a <= 10; a++) {
            System.out.println("a : " + a);
        }

        System.out.println("Boucle while :");
        // A compléter. Ecrivez une boucle while qui fait la même chose
        // que la boucle for ci-dessus 

        System.out.println("Boucle do..while :");
        // A compléter. Ecrivez une boucle do..while qui fait la même
        // chose que la boucle for ci-dessus.
    }
}