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