[Précédent]
[Index] | [Enoncé] | [Version imprimable]
[Prochain]

3.5
  On tourne en rond - Corrigé
Niveau 1
 
 
Fichiers:
  BouclesEquivalentes.java    

Exercice 5.3.1

Affichage du programme BouclesFor:

Boucle 1:
0 1 2 3 4 
Boucle 2:
3 4 5 6 7 8 
Boucle 3:
2 1 0 -1 
Boucle 4:
Boucle 5:
0 5 * 1 6 * 
Boucle 6:
0 5 * 1 6 * 2 7 * 3 8 * 4 9 * 5 10 * 6 11 * 7 12 * 8 13 * 9 14 * 10 15 * 
Boucle 7:
3 true * 4 true * 5 true * 6 true * 
Boucle 8:
0 6 * 1 5 * 2 4 * 
Boucle 9: (2 boucles for imbriquées)
0 0 1 2  * 1 0 1 2  * 2 0 1 2  * 
Boucle 10: (boucle "infinie", tapez <ctrl-c> pour l'interrompre)
3 2 1 0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13     etc ...

.. bon la dernière boucle n'est pas si infinie que ça en réalité puisqu'elle pourra s'arrêter lorsque la valeur de i dépassera la valeur maximale possible pour un entier (overflow) et pourra alors "basculer" vers une valeur positive. Essayez ceci pour vous en convaincre:

int i = 3;
for (; i < 15; i--) {
}
System.out.println("Fin de boucle: " + i);
qui donnera:
Fin de boucle: 2147483647

Exercice 5.3.2

Notez pour cet exercice, la tournure particulièrement alambiquée de la séquence de mise à jour de la première boucle (a = a++) : style à éviter absolument, comme indiqué en cours ! En notation postfixée, l'opérateur ++, retourne d'abord la valeur de a puis ensuite incrémente. Lorsque l'on fait a = a++, la variable a "récupère" donc la valeur avant incrémentation... fort laid !

Affichage du programme AffichageBoucles:

Boucle 1
2
3
4
Boucle 2
5
10
20
Boucle 3
12
6
0
-6
-6
Boucle 4
3
Boucle 5
4
Boucle 6
3

Exercice 5.3.3

Boucle 1  : en Java on ne peut pas redéclarer localement (dans la boucle for) une variable déjà déclarée plus globalement (la déclaration du i précédant le for).

Boucle 2  : en Java, une variable déclarée dans le bloc d'initialisation d'une boucle for est locale au corps de la boucle (ne peut être utilisée en dehors). Il y avait le même petit piège que plus haut (un point virgule à la fin de la ligne for (int i = 0; i < 5; ++i); et une indentation sciemment faussée ).

Exercice 5.3.4

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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 :");
        int b = 3;
        while (b <= 10) {
            System.out.println("b : " + b);
            b++;
        }

        System.out.println("Boucle do..while :");
        int c = 3;
        do {
            System.out.println("c : " + c);
            c = c + 1;
        } while (c <= 10);
    }
}

 


[Précédent]
[Index] | [Enoncé] | [Version imprimable]
[Prochain]