Aller au contenu principal

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


En C#, comment comparer le contenu de deux chaînes ?


Quelle boucle garantit que le corps s'exécute au moins une fois ?


Dans un switch expression C# 8+, quel symbole représente le cas par défaut ?


Que fait `continue` dans une boucle ?


Quelle est la syntaxe correcte d'un switch expression C# pour tester la variable `jour` ?


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.


Bonne pratique - Formatage aligné avec la largeur de champ

{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.


Bonne pratique - switch expression pour les correspondances simples

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.


Bonne pratique - Initialiser l'accumulateur avant la boucle

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.

📌 Une solution