Conditions et boucles
Notions théoriques
Conditions if / else if / else
int note = 15;
if (note >= 16)
{
Console.WriteLine("Très bien");
}
else if (note >= 14)
{
Console.WriteLine("Bien");
}
else if (note >= 10)
{
Console.WriteLine("Passable");
}
else
{
Console.WriteLine("Insuffisant");
}
Comparaison de chaînes
== fonctionne pour les chaînes en C#Contrairement à Java où il faut utiliser .equals(), en C# l'opérateur == compare bien le contenu des chaînes (et non leur référence) :
string s1 = "bonjour";
string s2 = "bonjour";
Console.WriteLine(s1 == s2); // true (compare le contenu)
Console.WriteLine(s1.Equals(s2)); // true aussi (équivalent)
switch expression (C# 8+)
Le switch expression est plus concis que le switch classique :
int note = 15;
string mention = note switch
{
>= 16 => "Très bien",
>= 14 => "Bien",
>= 12 => "Assez bien",
>= 10 => "Passable",
_ => "Insuffisant", // _ = cas par défaut
};
Console.WriteLine(mention); // Bien
Le switch classique reste disponible :
string jour = "lundi";
switch (jour)
{
case "samedi":
case "dimanche":
Console.WriteLine("Week-end !");
break;
default:
Console.WriteLine("Jour de semaine.");
break;
}
Boucle while
int compteur = 1;
while (compteur <= 5)
{
Console.WriteLine($"Tour {compteur}");
compteur++;
}
Boucle do-while
Le corps s'exécute au moins une fois avant de tester la condition :
int nombre;
do
{
Console.Write("Entrez un nombre entre 1 et 10 : ");
nombre = int.Parse(Console.ReadLine()!);
} while (nombre < 1 || nombre > 10);
Console.WriteLine($"Vous avez saisi : {nombre}");
Boucle for
for (int i = 1; i <= 5; i++)
{
Console.WriteLine($"i = {i}");
}
// Décroissant
for (int i = 10; i >= 1; i--)
{
Console.Write($"{i} ");
}
Boucle foreach
string[] fruits = { "pomme", "banane", "cerise" };
foreach (string fruit in fruits)
{
Console.WriteLine(fruit);
}
break et continue
// break : quitter la boucle immédiatement
for (int i = 0; i < 10; i++)
{
if (i == 5) break;
Console.Write($"{i} "); // 0 1 2 3 4
}
// continue : passer à l'itération suivante
for (int i = 0; i < 10; i++)
{
if (i % 2 == 0) continue;
Console.Write($"{i} "); // 1 3 5 7 9
}
Exemple pratique
// Table de multiplication avec détection pair/impair
int tableauDe = 7;
Console.WriteLine($"=== Table de {tableauDe} ===");
int somme = 0;
for (int i = 1; i <= 10; i++)
{
int resultat = tableauDe * i;
string parite = resultat % 2 == 0 ? "pair" : "impair";
Console.WriteLine($" {tableauDe} × {i,2} = {resultat,3} ({parite})");
somme += resultat;
}
Console.WriteLine($"\nSomme de tous les résultats : {somme}");
Console.WriteLine($"Moyenne : {somme / 10.0:F1}");
Test de mémorisation/compréhension
TP pour réfléchir et résoudre des problèmes
Vous allez créer une table de multiplication interactive.
Étape 1 — Afficher une table avec for
Affichez la table de 8 de 1 à 12.
{i,2} aligne le nombre i sur 2 caractères (en ajoutant un espace devant si nécessaire). {n * i,3} fait de même sur 3 caractères. Cela donne un tableau proprement aligné, bien plus lisible qu'un affichage non formaté.
Étape 2 — Détecter pair/impair avec switch
Ajoutez la détection pair/impair avec un switch expression.
Le switch expression est idéal pour les correspondances simples valeur → résultat. Il est plus concis et expressif que le if/else imbriqué. Préférez-le quand chaque branche retourne une valeur.
Étape 3 — Accumuler la somme
Calculez et affichez la somme de tous les résultats.
Une variable accumulatrice (somme, max, compteur) doit toujours être initialisée avant la boucle. L'initialiser à l'intérieur la réinitialiserait à chaque itération, ce qui donnerait un résultat faux.