Aller au contenu principal

Module C#.6 – Boucles

Objectif

Maîtriser toutes les boucles C# : for, while, foreach et leurs variantes pour répéter des opérations efficacement.

Théorie

for

La boucle for répète un bloc de code un nombre déterminé de fois.

Structure :

for (initialisation; condition; incrémentation)
{
// Code à répéter
}

Exemple de base :

for (int i = 0; i < 10; i++)
{
Console.WriteLine(i);
}
// Affiche : 0 1 2 3 4 5 6 7 8 9

Variations :

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

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

// Plusieurs variables
for (int i = 0, j = 10; i < j; i++, j--)
{
Console.WriteLine($"{i} {j}");
}

Boucles imbriquées :

for (int i = 1; i <= 10; i++)
{
for (int j = 1; j <= 10; j++)
{
Console.WriteLine($"{i} x {j} = {i * j}");
}
}

while

La boucle while répète tant qu'une condition est vraie.

Structure :

while (condition)
{
// Code
}

Exemple :

int i = 0;
while (i < 10)
{
Console.WriteLine(i);
i++;
}

Attention aux boucles infinies :

int i = 0;
while (i < 10)
{
Console.WriteLine(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
{
Console.WriteLine(i);
i++;
} while (i < 10);

Quand utiliser :

  • Validation de saisie utilisateur
  • Menu interactif
  • Quand on veut exécuter au moins une fois

foreach

Parcourt les éléments d'une collection.

Syntaxe :

int[] nombres = {10, 20, 30};

foreach (int nombre in nombres)
{
Console.WriteLine(nombre);
}

Avec List :

List<string> noms = new List<string> { "Jean", "Marie" };

foreach (string nom in noms)
{
Console.WriteLine(nom);
}

Avec var :

foreach (var nombre in nombres)
{
Console.WriteLine(nombre);
}

Avec index (C# 8.0+) :

foreach (var (item, index) in nombres.Select((value, index) => (value, index)))
{
Console.WriteLine($"{index}: {item}");
}

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
}
Console.WriteLine(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
}
Console.WriteLine($"{i}-{j}");
}
}

continue

Passe à l'itération suivante.

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

LINQ (alternatives aux boucles)

Where : Filtre

var pairs = nombres.Where(n => n % 2 == 0).ToList();

Select : Transforme

var doubles = nombres.Select(n => n * 2).ToList();

ForEach : Exécute une action

nombres.ForEach(n => Console.WriteLine(n));

Any / All :

bool aGrand = nombres.Any(n => n > 25);
bool tousPositifs = nombres.All(n => n > 0);

Exercice

  1. Boucle for

    • Affichez les nombres de 1 à 100
    • Affichez seulement les nombres pairs
    • Créez une table de multiplication
  2. Boucle while

    • Créez une boucle while
    • Comparez avec do-while
    • Faites attention aux boucles infinies
  3. Boucle foreach

    • Parcourez un tableau
    • Parcourez une List
    • Testez avec différents types
  4. Contrôle

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

    • Utilisez Where, Select, ForEach
    • Comparez avec les boucles classiques
    • Choisissez la meilleure approche

Quiz

  1. Quelle boucle parcourt automatiquement une collection ?

    • for
    • foreach
    • while
  2. Que fait break dans une boucle ?

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

    • Sort de la boucle
    • Passe à l'itération suivante
    • Répète l'itération
  5. Que fait Where() en LINQ ?

    • 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
{
public string Nom { get; set; }
public List<int> Notes { get; set; }
}

List<Etudiant> etudiants = new List<Etudiant>
{
new Etudiant { Nom = "Jean", Notes = new List<int> {15, 18, 12, 14} },
// ...
};

Traitements :

  1. Calculer la moyenne de chaque étudiant (foreach)
  2. Déterminer l'appréciation (switch)
  3. Statistiques globales
  4. Filtres avec LINQ (Where)
  5. Affichage formaté

Critères :

  • ✅ Utilisation de for, while, foreach
  • ✅ Utilisation de LINQ (Where, Select)
  • ✅ Code clair et bien organisé
  • ✅ Affichage formaté

Objectif : Maîtriser toutes les boucles C# et les utiliser efficacement pour traiter des données.


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