Voici quelques exemples d’exercices pratiques axés spécifiquement sur la modularisation en C#. L’idée est de diviser des programmes complexes en fonctions plus petites et réutilisables.
Objectif : Modulariser un programme qui calcule la paie d’un employé en fonctions distinctes.
Instructions :
Exemple :
public double CalculerSalaireBrut(double heures, double tauxHoraire)
{
return heures * tauxHoraire;
}
public double CalculerRetenues(double salaireBrut)
{
double impots = salaireBrut * 0.2; // 20% de retenues
return impots;
}
public double CalculerSalaireNet(double heures, double tauxHoraire)
{
double salaireBrut = CalculerSalaireBrut(heures, tauxHoraire);
double retenues = CalculerRetenues(salaireBrut);
return salaireBrut - retenues;
}
Objectif : Diviser une calculatrice en plusieurs fonctions pour chaque opération (addition, soustraction, multiplication, division).
Instructions :
Calculer
qui prend en entrée deux nombres et un opérateur (sous forme de chaîne de caractères) et appelle la fonction appropriée.Exemple :
public double Addition(double a, double b) => a + b;
public double Soustraction(double a, double b) => a - b;
public double Multiplication(double a, double b) => a * b;
public double Division(double a, double b) => a / b;
public double Calculer(double a, double b, string operation)
{
switch (operation)
{
case "+":
return Addition(a, b);
case "-":
return Soustraction(a, b);
case "*":
return Multiplication(a, b);
case "/":
return Division(a, b);
default:
throw new InvalidOperationException("Opération non valide.");
}
}
Objectif : Créer des fonctions pour modulariser un programme de gestion d’inventaire.
Instructions :
Exemple :
public void AjouterArticle(Dictionary<string, int> inventaire, string article, int quantite)
{
if (inventaire.ContainsKey(article))
{
inventaire[article] += quantite;
}
else
{
inventaire[article] = quantite;
}
}
public void RetirerArticle(Dictionary<string, int> inventaire, string article, int quantite)
{
if (inventaire.ContainsKey(article))
{
inventaire[article] -= quantite;
if (inventaire[article] <= 0)
{
inventaire.Remove(article);
}
}
}
public void AfficherInventaire(Dictionary<string, int> inventaire)
{
foreach (var item in inventaire)
{
Console.WriteLine($"{item.Key}: {item.Value}");
}
}
Objectif : Modulariser un programme qui gère les notes des étudiants.
Instructions :
Exemple :
public void AjouterNote(List<int> notes, int note)
{
notes.Add(note);
}
public double CalculerMoyenne(List<int> notes)
{
return notes.Average();
}
public void AfficherNotesEtMoyenne(List<int> notes)
{
Console.WriteLine("Notes: " + string.Join(", ", notes));
Console.WriteLine("Moyenne: " + CalculerMoyenne(notes));
}
Objectif : Modulariser un système de gestion des réservations pour un hôtel.
Instructions :
Exemple :
public bool EstDisponible(Dictionary<int, bool> chambres, int chambre)
{
return chambres.ContainsKey(chambre) && chambres[chambre];
}
public void ReserverChambre(Dictionary<int, bool> chambres, int chambre)
{
if (EstDisponible(chambres, chambre))
{
chambres[chambre] = false;
Console.WriteLine($"Chambre {chambre} réservée.");
}
else
{
Console.WriteLine($"Chambre {chambre} non disponible.");
}
}
public void AnnulerReservation(Dictionary<int, bool> chambres, int chambre)
{
if (!EstDisponible(chambres, chambre))
{
chambres[chambre] = true;
Console.WriteLine($"Réservation de la chambre {chambre} annulée.");
}
}
public void AfficherChambres(Dictionary<int, bool> chambres)
{
foreach (var chambre in chambres)
{
string statut = chambre.Value ? "Disponible" : "Réservée";
Console.WriteLine($"Chambre {chambre.Key}: {statut}");
}
}
Ces exercices vous permettent de comprendre comment décomposer un problème complexe en petites tâches et de créer des fonctions qui facilitent la gestion, la réutilisation, et la modification du programme. Cela aide également à tester et maintenir votre code de manière plus efficace.
Laisser un commentaire :