Module Java.5 – Conditions & boucles
Objectif
Maîtriser les structures conditionnelles et les boucles Java : if/else, switch, for, while et leurs variantes pour contrôler le flux d'exécution efficacement.
Théorie
Conditions
if / else
Structure de base :
if (condition) {
// Code si condition vraie
}
if / else :
if (age >= 18) {
System.out.println("Majeur");
} else {
System.out.println("Mineur");
}
if / else if / else :
if (note >= 16) {
System.out.println("Très bien");
} else if (note >= 14) {
System.out.println("Bien");
} else if (note >= 12) {
System.out.println("Assez bien");
} else {
System.out.println("À améliorer");
}
Expression ternaire :
String message = age >= 18 ? "Majeur" : "Mineur";
// Ternaire imbriqué
String appreciation = note >= 16 ? "Très bien"
: note >= 14 ? "Bien"
: note >= 12 ? "Assez bien"
: "À améliorer";
Opérateurs de comparaison
== // Égalité
!= // Différent
> // Plus grand
< // Plus petit
>= // Plus grand ou égal
<= // Plus petit ou égal
Attention : Pour les objets, utiliser equals() :
String s1 = "test";
String s2 = "test";
s1 == s2; // true (même référence dans le pool)
s1.equals(s2); // true (même contenu)
Opérateurs logiques
&& // ET
|| // OU
! // NON
Court-circuit :
if (a != null && a.length() > 0) {
// Si a est null, a.length() n'est pas évalué
}
Switch
Le switch permet de tester une valeur contre plusieurs cas.
Switch classique
switch (note) {
case 16:
case 17:
case 18:
case 19:
case 20:
System.out.println("Très bien");
break;
case 14:
case 15:
System.out.println("Bien");
break;
default:
System.out.println("Autre");
break;
}
Important : Ne pas oublier break sinon fall-through.
Switch expressions (Java 14+)
String appreciation = switch (note) {
case 16, 17, 18, 19, 20 -> "Très bien";
case 14, 15 -> "Bien";
case 12, 13 -> "Assez bien";
default -> "À améliorer";
};
Avec yield (Java 14+) :
String appreciation = switch (note) {
case 16, 17, 18, 19, 20 -> {
yield "Très bien";
}
case 14, 15 -> "Bien";
default -> "Autre";
};
Boucles
for
Boucle classique avec compteur.
for (int i = 0; i < 10; i++) {
System.out.println(i);
}
Variations :
// Compter à l'envers
for (int i = 10; i > 0; i--) {
System.out.println(i);
}
// Par pas de 2
for (int i = 0; i < 10; i += 2) {
System.out.println(i); // 0, 2, 4, 6, 8
}
// Plusieurs variables
for (int i = 0, j = 10; i < j; i++, j--) {
System.out.println(i + " " + j);
}
Enhanced for (for-each) :
int[] nombres = {10, 20, 30};
for (int nombre : nombres) {
System.out.println(nombre);
}
// Avec List
List<String> noms = Arrays.asList("Jean", "Marie");
for (String nom : noms) {
System.out.println(nom);
}
while
Répète tant qu'une condition est vraie.
int i = 0;
while (i < 10) {
System.out.println(i);
i++;
}
Attention aux boucles infinies :
int i = 0;
while (i < 10) {
System.out.println(i);
// Oubli d'incrémenter i = boucle infinie !
}
do-while
Exécute au moins une fois, puis vérifie la condition.
int i = 0;
do {
System.out.println(i);
i++;
} while (i < 10);
Quand utiliser :
- Validation de saisie utilisateur
- Menu interactif
- Quand on veut exécuter au moins une fois
Contrôle des boucles
break
Sort de la boucle immédiatement.
for (int i = 0; i < 10; i++) {
if (i == 5) {
break; // Sort de la boucle
}
System.out.println(i); // 0, 1, 2, 3, 4
}
Labels :
boucleExterne: for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (j == 1) {
break boucleExterne; // Sort des deux boucles
}
System.out.println(i + "-" + j);
}
}
continue
Passe à l'itération suivante.
for (int i = 0; i < 10; i++) {
if (i % 2 == 0) {
continue; // Passe les nombres pairs
}
System.out.println(i); // 1, 3, 5, 7, 9
}
Exercice
-
Conditions
- Créez des conditions if/else complexes
- Utilisez l'expression ternaire
- Testez switch avec différents cas
-
Boucles for
- Parcourez un tableau avec for classique
- Utilisez enhanced for
- Testez les boucles imbriquées
-
Boucles while
- Créez une boucle while
- Comparez avec do-while
- Faites attention aux boucles infinies
-
Contrôle
- Utilisez break pour sortir prématurément
- Utilisez continue pour sauter des itérations
- Testez avec labels
-
Cas pratiques
- Créez un système de validation
- Implémentez un menu interactif
- Traitez des collections avec boucles
Quiz
-
Que fait break dans une boucle ?
- Passe à l'itération suivante
- Sort de la boucle
- Répète l'itération
-
Quelle est la différence entre while et do-while ?
- Aucune différence
- do-while exécute au moins une fois
- while est plus rapide
-
Que fait enhanced for ?
- Répète plus vite
- Parcourt automatiquement une collection
- Optimise le code
-
Que fait continue ?
- Sort de la boucle
- Passe à l'itération suivante
- Répète l'itération
-
Switch expressions nécessite quelle version Java ?
- Java 8
- Java 14+
- Java 11
Mini défi
Mission : Créer un système de traitement de données complet
Créez un script qui traite une liste d'étudiants avec leurs notes :
Données :
class Etudiant {
String nom;
int[] notes;
Etudiant(String nom, int[] notes) {
this.nom = nom;
this.notes = notes;
}
}
Etudiant[] etudiants = {
new Etudiant("Jean", new int[]{15, 18, 12, 14}),
new Etudiant("Marie", new int[]{16, 17, 19, 18}),
// ...
};
Traitements :
- Calculer la moyenne de chaque étudiant
- Déterminer l'appréciation avec switch
- Statistiques globales
- Filtres avec conditions
- Affichage formaté
Critères :
- ✅ Utilisation de for et enhanced for
- ✅ Conditions avec if/else et switch
- ✅ Code clair et bien organisé
- ✅ Affichage formaté
Objectif : Maîtriser toutes les boucles et conditions Java pour traiter efficacement des données.
Validation : Vous pouvez passer au module suivant quand vous maîtrisez if/else, switch, for, while et pouvez les utiliser pour résoudre des problèmes complexes.