Menu
Coddy logo textTech

Aplatir les conditionnelles imbriquées

Fait partie de la section Logique & Flux du Journey C# de Coddy. Leçon 22 sur 66.

Les conditionnels imbriqués peuvent rendre votre code difficile à lire et à maintenir. L'aplatissement aide à améliorer la lisibilité en réduisant les niveaux d'indentation.

Voici un exemple de conditionnels profondément imbriqués :

if (userLoggedIn)
{
    if (userHasPermission)
    {
        if (fileExists)
        {
            // Process the file
            ProcessFile();
        }
        else
        {
            Console.WriteLine("File not found");
        }
    }
    else
    {
        Console.WriteLine("No permission");
    }
}
else
{
    Console.WriteLine("Not logged in");
}

Nous pouvons aplatir cela en utilisant des retours anticipés ou des clauses de garde :

if (!userLoggedIn)
{
    Console.WriteLine("Not logged in");
    return;
}

if (!userHasPermission)
{
    Console.WriteLine("No permission");
    return;
}

if (!fileExists)
{
    Console.WriteLine("File not found");
    return;
}

// Process the file
ProcessFile();

Remarquez comment le code aplati présente moins d'indentation et est plus facile à suivre.

challenge icon

Défi

Facile

Lors de la vérification de l’admissibilité à une bourse, les conditionnelles profondément imbriquées rendent le code difficile à lire et à maintenir. Dans ce défi, vous allez transformer une structure conditionnelle imbriquée désordonnée en un code clair et lisible à l’aide de clauses de garde.

Une clause de garde est une instruction de retour anticipé qui traite immédiatement une condition spécifique, permettant au reste de la fonction de se concentrer sur le « chemin nominal ».

Votre tâche consiste à compléter les clauses de garde partiellement implémentées dans la méthode CheckScholarshipEligibility conformément aux règles suivantes :

  1. Si l’âge est inférieur à 17 ans, retourner immédiatement "Not eligible due to age requirement"
  2. Si le GPA ≥ 3.5 ET que l’étudiant a une recommandation, accorder une bourse complète
  3. Si le GPA ≥ 3.8, accorder une bourse complète (même sans recommandation)
  4. Si le GPA ≥ 3.0 ET que l’étudiant a une recommandation, accorder une bourse partielle
  5. Si le GPA est compris entre 3.5 et 3.8, accorder une bourse partielle
  6. Dans tous les autres cas, retourner "Not eligible for scholarship"

Essayez vous-même

using System;

class Program
{
    public static void CheckScholarshipEligibility(int age, double gpa, bool hasRecommendation)
    {
        // Clause de garde pour l'exigence d'âge
        if (age < 17)
        {
            Console.WriteLine("Not eligible due to age requirement.");
            return;
        }
        
        // Clause de garde pour bourse complète avec recommandation
        if (/* Compléter cette condition */)
        {
            Console.WriteLine("Full scholarship granted!");
            return;
        }
        
        // Clause de garde pour bourse complète avec GPA exceptionnel
        if (/* Compléter cette condition */)
        {
            Console.WriteLine("Full scholarship granted!");
            return;
        }
        
        // Clause de garde pour bourse partielle avec recommandation
        if (/* Compléter cette condition */)
        {
            Console.WriteLine("Partial scholarship granted.");
            return;
        }
        
        // Clause de garde pour bourse partielle avec bon GPA
        if (/* Compléter cette condition */)
        {
            Console.WriteLine("Partial scholarship granted.");
            return;
        }
        
        // Cas par défaut : non éligible
        Console.WriteLine("Not eligible for scholarship.");
    }
    
    static void Main(string[] args)
    {
        // Cas de test pour un retour immédiat
        Console.WriteLine("Test Case 1: Age 16, GPA 4.0, Has Recommendation: True");
        CheckScholarshipEligibility(16, 4.0, true);
        
        Console.WriteLine("\nTest Case 2: Age 18, GPA 3.9, Has Recommendation: False");
        CheckScholarshipEligibility(18, 3.9, false);
        
        Console.WriteLine("\nTest Case 3: Age 17, GPA 3.6, Has Recommendation: True");
        CheckScholarshipEligibility(17, 3.6, true);
        
        Console.WriteLine("\nTest Case 4: Age 19, GPA 3.2, Has Recommendation: True");
        CheckScholarshipEligibility(19, 3.2, true);
        
        Console.WriteLine("\nTest Case 5: Age 18, GPA 2.8, Has Recommendation: False");
        CheckScholarshipEligibility(18, 2.8, false);
    }
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logique & Flux

Entraînez-vous par vous-même : Compilateur C# en ligne