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
-
Boucle for
- Affichez les nombres de 1 à 100
- Affichez seulement les nombres pairs
- Créez une table de multiplication
-
Boucle while
- Créez une boucle while
- Comparez avec do-while
- Faites attention aux boucles infinies
-
Boucle foreach
- Parcourez un tableau
- Parcourez une List
- Testez avec différents types
-
Contrôle
- Utilisez break pour sortir prématurément
- Utilisez continue pour sauter des itérations
- Testez avec labels
-
LINQ
- Utilisez Where, Select, ForEach
- Comparez avec les boucles classiques
- Choisissez la meilleure approche
Quiz
-
Quelle boucle parcourt automatiquement une collection ?
- for
- foreach
- while
-
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 continue ?
- Sort de la boucle
- Passe à l'itération suivante
- Répète l'itération
-
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 :
- Calculer la moyenne de chaque étudiant (foreach)
- Déterminer l'appréciation (switch)
- Statistiques globales
- Filtres avec LINQ (Where)
- 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.