Menu
Coddy logo textTech

İç İçe Koşulları Düzleştirme

Coddy'nin C# Journey'sinin Mantık & Akış bölümünün bir parçası. Ders 22 / 66.

İç içe koşullar kodunuzu okuması ve bakımı zor hale getirebilir. Düzleştirme, girinti seviyelerini azaltarak okunabilirliği iyileştirmeye yardımcı olur.

İşte derin iç içe geçmiş koşullu ifadelerin bir örneği:

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");
}

Bunu erken dönüşler veya koruma koşulları kullanarak düzleştirebiliriz:

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();

Düzleştirilmiş kodun daha az girintiye sahip olduğunu ve takip etmenin daha kolay olduğunu fark edin.

challenge icon

Görev

Kolay

Burs uygunluğunu kontrol ederken, derin biçimde iç içe geçmiş koşullu ifadeler kodun okunmasını ve bakımını zorlaştırır. Bu görevde, karmaşık iç içe koşullu yapıyı koruma koşullarını kullanarak temiz ve okunabilir bir koda dönüştüreceksin.

Koruma koşulu, belirli bir koşulu hemen ele alan erken bir return ifadesidir; böylece işlevin geri kalanı "beklenen akışa" odaklanabilir.

Görevin, CheckScholarshipEligibility metodundaki kısmen uygulanmış koruma koşullarını aşağıdaki kurallara göre tamamlamaktır:

  1. Yaş 17'den küçükse hemen "Yaş şartı nedeniyle uygun değil" döndür
  2. GPA ≥ 3.5 VE öğrencinin bir tavsiye mektubu varsa tam burs ver
  3. GPA ≥ 3.8 ise (tavsiye mektubu olmasa bile) tam burs ver
  4. GPA ≥ 3.0 VE öğrencinin bir tavsiye mektubu varsa kısmi burs ver
  5. GPA 3.5 ile 3.8 arasındaysa kısmi burs ver
  6. Diğer tüm durumlarda "Burs için uygun değil" döndür

Kendin dene

using System;

class Program
{
    public static void CheckScholarshipEligibility(int age, double gpa, bool hasRecommendation)
    {
        // Yaş gereksinimi için koruyucu koşul
        if (age < 17)
        {
            Console.WriteLine("Not eligible due to age requirement.");
            return;
        }
        
        // Tavsiye ile tam burs için koruyucu koşul
        if (/* Bu koşulu tamamlayın */)
        {
            Console.WriteLine("Full scholarship granted!");
            return;
        }
        
        // Olağanüstü GPA ile tam burs için koruyucu koşul
        if (/* Bu koşulu tamamlayın */)
        {
            Console.WriteLine("Full scholarship granted!");
            return;
        }
        
        // Tavsiye ile kısmi burs için koruyucu koşul
        if (/* Bu koşulu tamamlayın */)
        {
            Console.WriteLine("Partial scholarship granted.");
            return;
        }
        
        // İyi GPA ile kısmi burs için koruyucu koşul
        if (/* Bu koşulu tamamlayın */)
        {
            Console.WriteLine("Partial scholarship granted.");
            return;
        }
        
        // Varsayılan durum: burs için uygun değil
        Console.WriteLine("Not eligible for scholarship.");
    }
    
    static void Main(string[] args)
    {
        // Anında geri bildirim için test vakaları
        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 iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Mantık & Akış bölümündeki tüm dersler

Kendi başına pratik yap: Online C# derleyicisi