Module BA3a - séminaire Java 12 octobre 2015 Luka Nerima

publicité
Module BA3a - séminaire Java
12 octobre 2015
Exercices Java – série 2
Corrigé des exercices 1, 2 et 3
Ces exercices portent sur les bases du langage Java, chapitre 4 et 5
1) Instructions de contrôle
1.1) Quelle est la sortie produite par l’instruction “do … while” suivante
int i = 0, somme = 0;
do {
i++;
somme += i;
}
while (i < 10) ;
System.out.println(“somme : ” + somme);
Réponse:
somme : 55
1.2) Ecrire une instruction équivalente à 1.1 en utilisant l’itération “for”
Réponse:
somme = 0;
for (int i = 0; i <= 10; i++)
somme += i;
System.out.println(“somme : ” + somme);
1.3) Que produit l’instruction imbriquée “for” suivante
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
if (j % 2 == 0) continue;
System.out.println(i + “ - ” + j) ;
}
if (i / 2 > 0) break;
}
Réponse:
0–1
0–3
0–5
0–7
0–9
1–1
1–3
1–5
1–7
1–9
2–1
2–3
2–5
2–7
2–9
Luka Nerima
Faculté des lettres
1
Module BA3a - séminaire Java
12 octobre 2015
1.3) Quelle est la sortie produite par l’instruction “switch” suivante
char c = ‘b’ ;
switch (c) {
case ‘a’: System.out.println(1); break ;
case ‘b’: System.out.println(2); break ;
case ‘c’: System.out.println(3); break ;
case ‘d’: System.out.println(4); break ;
default: System.out.println(“pas de conversion”) ;
}
Réponse:
2
1.4) Soit l’instruction “switch” suivante
switch (n) {
case 0: System.out.println(“nul”) ;
case 1:
case 2: System.out.println(“petit”); break ;
case 3:
case 4: System.out.println(“moyen”) ;
default: System.out.println(“grand”) ;
}
quelle est la sortie produite pour chacune des valeurs de n suivantes 0, 1, 3, 10, -5 ?
(tiré de Claude Delannoy, Exercices en Java, 2e edition, 2006 )
Réponse pour
n=0:
nul
petit
n=1:
petit
n=3:
moyen
grand
n=10:
grand
n=-5:
grand
Luka Nerima
Faculté des lettres
2
Module BA3a - séminaire Java
12 octobre 2015
2) Précédence des opérateurs
Réécrire les expressions suivantes en éliminant toutes les parenthèses inutiles
1.a) (a + b) + (c + 11)
// a + b + c + d
1.b) (a * b) – (c * 11)
// a * b – c * 11
1.c) (a + b) – (c + 11)
// a + b – (c + 11)
1.d) (a * b) / (c * 11)
// a * b / (c * 11)
1.e) (((a + b) * c) % 11)
// (a + b) * c % 11
1.f) (a + (-b)) / ((-c) % 11)
// (a + -b) / (-c % 11) ou (a – b) / (-c % 11)
1.g) ((a == 15) && g) || (b == 15)
// a==15 && g || b == 15
1.h) “Java “ + ((1 + 1) + “.“ + 0)
// “Java “ + (1 + 1) + “.“ + 0
3) Syntaxe
Quelles sont les erreurs syntaxiques dans les suites d’instructions suivantes ?
2.a) if (a > b) System.out.println(“ suffisant ”) // il manque ; après (“ suffisant ”)
else System.out.println(“ insuffisant ”) ;
2.b) if (a > b) { System.out.println(“ suffisant ”) ; b := a } // b = a au lieu de b := a
// il manque ; après b = a
2.c) switch (a + b ) {case 11 : System.out.println(“ résultat : onze”) ; break ;
case c : System.out.println(“ résultat : “ + c) ; break ;
// les valeurs utilisées après case doivent être des
// expressions constantes
}
2.d) int j = 0 ;
for (int i == 2 ; i == 10 ; i + 2) {sum += i * i ; j++ ; } // i = 2 au lieu de i == 2
// i <= 10 au lieu de i ==
10
//
mais ce n’est pas
//
erreur de syntaxe
une
// i += 2 au lieu de i + 2
Luka Nerima
Faculté des lettres
3
Téléchargement