Aller au contenu principal

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

  1. Conditions

    • Créez des conditions if/else complexes
    • Utilisez l'expression ternaire
    • Testez switch avec différents cas
  2. Boucles for

    • Parcourez un tableau avec for classique
    • Utilisez enhanced for
    • Testez les boucles imbriquées
  3. Boucles while

    • Créez une boucle while
    • Comparez avec do-while
    • Faites attention aux boucles infinies
  4. Contrôle

    • Utilisez break pour sortir prématurément
    • Utilisez continue pour sauter des itérations
    • Testez avec labels
  5. Cas pratiques

    • Créez un système de validation
    • Implémentez un menu interactif
    • Traitez des collections avec boucles

Quiz

  1. Que fait break dans une boucle ?

    • Passe à l'itération suivante
    • Sort de la boucle
    • Répète l'itération
  2. 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
  3. Que fait enhanced for ?

    • Répète plus vite
    • Parcourt automatiquement une collection
    • Optimise le code
  4. Que fait continue ?

    • Sort de la boucle
    • Passe à l'itération suivante
    • Répète l'itération
  5. 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 :

  1. Calculer la moyenne de chaque étudiant
  2. Déterminer l'appréciation avec switch
  3. Statistiques globales
  4. Filtres avec conditions
  5. 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.