Aller au contenu principal

Module Dart.4 – Conditions & boucles

Objectif

Maîtriser les structures conditionnelles et les boucles Dart : if/else, 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) {
print('Majeur');
} else {
print('Mineur');
}

if / else if / else :

if (note >= 16) {
print('Très bien');
} else if (note >= 14) {
print('Bien');
} else if (note >= 12) {
print('Assez bien');
} else {
print('À 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

Opérateurs logiques

&&  // ET
|| // OU
! // NON

Court-circuit :

if (nom != null && nom.length > 0) {
// Si nom est null, nom.length n'est pas évalué
print(nom);
}

Boucles

for

Boucle classique avec compteur.

for (int i = 0; i < 10; i++) {
print(i);
}

Variations :

// Compter à l'envers
for (int i = 10; i > 0; i--) {
print(i);
}

// Par pas de 2
for (int i = 0; i < 10; i += 2) {
print(i); // 0, 2, 4, 6, 8
}

for-in : Parcourt les itérables

List<int> nombres = [10, 20, 30];

for (int nombre in nombres) {
print(nombre);
}

// Avec index
for (var entry in nombres.asMap().entries) {
print('${entry.key}: ${entry.value}');
}

while

Répète tant qu'une condition est vraie.

int i = 0;
while (i < 10) {
print(i);
i++;
}

Attention aux boucles infinies :

int i = 0;
while (i < 10) {
print(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 {
print(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
}
print(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
}
print('$i-$j');
}
}

continue

Passe à l'itération suivante.

for (int i = 0; i < 10; i++) {
if (i % 2 == 0) {
continue; // Passe les nombres pairs
}
print(i); // 1, 3, 5, 7, 9
}

Méthodes de collection (alternatives aux boucles)

forEach :

nombres.forEach((n) {
print(n);
});

// Avec index
nombres.asMap().forEach((index, valeur) {
print('$index: $valeur');
});

map : Transforme chaque élément

var doubles = nombres.map((n) => n * 2).toList();

where : Filtre les éléments

var pairs = nombres.where((n) => n % 2 == 0).toList();

any / every :

bool aGrand = nombres.any((n) => n > 25);
bool tousPositifs = nombres.every((n) => n > 0);

Exercice

  1. Conditions

    • Créez des conditions if/else complexes
    • Utilisez l'expression ternaire
    • Testez les opérateurs logiques
  2. Boucles for

    • Parcourez un tableau avec for classique
    • Utilisez for-in
    • 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. Méthodes de collection

    • Utilisez forEach, map, where
    • Comparez avec les boucles classiques
    • Choisissez la meilleure approche

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 for-in ?

    • 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. Que fait where() sur une liste ?

    • Transforme les éléments
    • Filtre les éléments
    • Trie les éléments

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;
List<int> notes;

Etudiant(this.nom, this.notes);
}

List<Etudiant> etudiants = [
Etudiant('Jean', [15, 18, 12, 14]),
Etudiant('Marie', [16, 17, 19, 18]),
// ...
];

Traitements :

  1. Calculer la moyenne de chaque étudiant
  2. Déterminer l'appréciation avec if/else
  3. Statistiques globales
  4. Filtres avec where()
  5. Affichage formaté

Critères :

  • ✅ Utilisation de for et for-in
  • ✅ Conditions avec if/else
  • ✅ Méthodes de collection (where, map)
  • ✅ Code clair et bien organisé

Objectif : Maîtriser toutes les boucles et conditions Dart pour traiter efficacement des données.


Validation : Vous pouvez passer au module suivant quand vous maîtrisez if/else, for, while et pouvez les utiliser pour résoudre des problèmes complexes.