🔄 B2.2 - Structures de contrôle en C
📋 Objectifs du cours
À la fin de ce cours, vous serez capable de : - ✅ Utiliser les structures conditionnelles (if, else, switch) - ✅ Maîtriser les différents types de boucles (for, while, foreach) - ✅ Contrôler l'exécution avec break et continue - ✅ Imbriquer les structures de contrôle - ✅ Optimiser vos algorithmes
🤔 Structures conditionnelles
Qu'est-ce qu'une condition ?
Les structures conditionnelles permettent d'exécuter différents blocs de code selon qu'une condition est vraie ou fausse. Elles sont essentielles pour créer des programmes qui s'adaptent aux situations.
🎯 La structure if
🔗 La structure if-else if
int note = 85;
if (note >= 90)
{
Console.WriteLine("Excellent ! Note A");
}
else if (note >= 80)
{
Console.WriteLine("Très bien ! Note B");
}
else if (note >= 70)
{
Console.WriteLine("Bien ! Note C");
}
else if (note >= 60)
{
Console.WriteLine("Passable ! Note D");
}
else
{
Console.WriteLine("Échec ! Note F");
}
🎛️ La structure switch
// Switch classique
int jour = 3;
switch (jour)
{
case 1:
Console.WriteLine("Lundi");
break;
case 2:
Console.WriteLine("Mardi");
break;
case 3:
Console.WriteLine("Mercredi");
break;
case 4:
Console.WriteLine("Jeudi");
break;
case 5:
Console.WriteLine("Vendredi");
break;
case 6:
case 7:
Console.WriteLine("Week-end !");
break;
default:
Console.WriteLine("Jour invalide");
break;
}
💡 Astuce C# 8.0+ : Vous pouvez utiliser la nouvelle syntaxe switch expression pour un code plus concis !
❓ Opérateur ternaire
// Syntaxe : condition ? valeurSiVrai : valeurSiFaux
int age = 20;
string statut = age >= 18 ? "Majeur" : "Mineur";
// Équivalent à :
string statut2;
if (age >= 18)
statut2 = "Majeur";
else
statut2 = "Mineur";
// Utilisation dans l'affichage
Console.WriteLine($"Vous êtes {(age >= 18 ? "majeur" : "mineur")}");
🔄 Les boucles
Pourquoi utiliser des boucles ?
Les boucles permettent de répéter un bloc de code plusieurs fois sans avoir à l'écrire plusieurs fois. Elles sont essentielles pour traiter des collections de données ou répéter des actions.
🔢 La boucle for
// Syntaxe : for (initialisation; condition; incrémentation)
for (int i = 0; i < 5; i++)
{
Console.WriteLine($"Itération {i}");
}
// Affichage des nombres pairs de 0 à 20
for (int i = 0; i <= 20; i += 2)
{
Console.WriteLine(i);
}
// Boucle décroissante
for (int i = 10; i >= 0; i--)
{
Console.WriteLine($"Compte à rebours : {i}");
}
⏳ La boucle while
// Boucle while - condition testée avant l'exécution
int compteur = 0;
while (compteur < 5)
{
Console.WriteLine($"Compteur : {compteur}");
compteur++;
}
// Exemple pratique : saisie utilisateur
string reponse;
do
{
Console.Write("Voulez-vous continuer ? (oui/non) : ");
reponse = Console.ReadLine().ToLower();
} while (reponse != "oui" && reponse != "non");
🔄 La boucle do-while
// Boucle do-while - condition testée après l'exécution
int nombre;
do
{
Console.Write("Entrez un nombre entre 1 et 10 : ");
string input = Console.ReadLine();
int.TryParse(input, out nombre);
if (nombre < 1 || nombre > 10)
{
Console.WriteLine("Nombre invalide !");
}
} while (nombre < 1 || nombre > 10);
Console.WriteLine($"Merci ! Vous avez saisi : {nombre}");
📋 La boucle foreach
🎮 Contrôle d'exécution
🛑 L'instruction break
// Break dans une boucle for
for (int i = 0; i < 10; i++)
{
if (i == 5)
{
Console.WriteLine("Arrêt à 5 !");
break; // Sort de la boucle
}
Console.WriteLine(i);
}
// Break dans un switch
int choix = 2;
switch (choix)
{
case 1:
Console.WriteLine("Option 1");
break;
case 2:
Console.WriteLine("Option 2");
break; // Obligatoire en C#
default:
Console.WriteLine("Option par défaut");
break;
}
⏭️ L'instruction continue
⚠️ Attention :
break
sort complètement de la bouclecontinue
passe à l'itération suivante- Dans les boucles imbriquées, ils n'affectent que la boucle la plus proche
🏗️ Structures imbriquées
🔄 Boucles imbriquées
// Table de multiplication
for (int i = 1; i <= 5; i++)
{
Console.WriteLine($"Table de {i} :");
for (int j = 1; j <= 10; j++)
{
Console.WriteLine($"{i} x {j} = {i * j}");
}
Console.WriteLine(); // Ligne vide
}
// Matrice 3x3
for (int ligne = 0; ligne < 3; ligne++)
{
for (int colonne = 0; colonne < 3; colonne++)
{
Console.Write($"[{ligne},{colonne}] ");
}
Console.WriteLine(); // Nouvelle ligne
}
🤔 Conditions imbriquées
int age = 25;
bool aPermis = true;
bool aVoiture = false;
if (age >= 18)
{
Console.WriteLine("Vous êtes majeur.");
if (aPermis)
{
Console.WriteLine("Vous avez le permis.");
if (aVoiture)
{
Console.WriteLine("Vous pouvez conduire votre voiture !");
}
else
{
Console.WriteLine("Il vous faut une voiture.");
}
}
else
{
Console.WriteLine("Il vous faut passer le permis.");
}
}
else
{
Console.WriteLine("Vous êtes mineur, pas de conduite !");
}
🎯 Exercices pratiques
🏋️ Exercice 1 : Calculateur de notes
Créez un programme qui : 1. Demande le nombre d'étudiants 2. Pour chaque étudiant, demande sa note 3. Calcule et affiche la moyenne 4. Indique combien d'étudiants ont eu plus de 10/20🏋️ Exercice 2 : Jeu de devinette
Créez un jeu où : 1. L'ordinateur choisit un nombre aléatoire entre 1 et 100 2. L'utilisateur doit deviner le nombre 3. Le programme indique si le nombre est trop grand ou trop petit 4. Le jeu continue jusqu'à ce que l'utilisateur trouve🏋️ Exercice 3 : Menu interactif
Créez un menu qui propose : 1. Calculer l'aire d'un rectangle 2. Calculer l'aire d'un cercle 3. Convertir Celsius vers Fahrenheit 4. Quitter Le menu doit se répéter jusqu'à ce que l'utilisateur choisisse "Quitter".🏋️ Exercice 4 : Pyramide d'étoiles
Créez un programme qui affiche une pyramide d'étoiles : L'utilisateur doit pouvoir choisir la hauteur de la pyramide.🚀 Optimisations et bonnes pratiques
Conseils d'optimisation
**1. Évitez les boucles infinies :**
**2. Utilisez foreach quand c'est possible :**
**3. Évitez les conditions complexes :**
// ❌ Mauvais
while (true)
{
// Code sans condition de sortie
}
// ✅ Bon
bool continuer = true;
while (continuer)
{
// Code avec condition de sortie
if (conditionSortie)
continuer = false;
}
int[] tableau = {1, 2, 3, 4, 5};
// ❌ Moins lisible
for (int i = 0; i < tableau.Length; i++)
{
Console.WriteLine(tableau[i]);
}
// ✅ Plus lisible
foreach (int element in tableau)
{
Console.WriteLine(element);
}
// ❌ Difficile à lire
if (age >= 18 && age <= 65 && salaire > 30000 && !estEtudiant)
{
// Code
}
// ✅ Plus clair
bool estAdulteActif = age >= 18 && age <= 65;
bool aSalaireCorrect = salaire > 30000;
bool peutEmprunter = estAdulteActif && aSalaireCorrect && !estEtudiant;
if (peutEmprunter)
{
// Code
}
📚 Points clés à retenir
🎯 Résumé du chapitre :
- Conditions : if/else, switch, opérateur ternaire
- Boucles : for (compteur), while (condition), foreach (collection)
- Contrôle : break (sortir), continue (passer)
- Imbrication : Possible mais attention à la lisibilité
- Bonnes pratiques : Code lisible, éviter les boucles infinies
🔗 Liens utiles
Étape précédente : B2.1 - Les bases du C#
Prochaine étape : B2.3 - Listes et collections