Skip to content

Kontrol Yapıları

Genel Bakış

Bu bölümde, C#'ta program akışını kontrol etmek için kullanılan temel yapıları inceleyeceğiz.

Mülakat Soruları ve Cevapları

1. If-Else yapısı nedir ve nasıl kullanılır?

Cevap: If-Else Yapısı: - Koşullu program akışı sağlar - Boolean ifadelerle çalışır - İç içe kullanılabilir - Ternary operatör alternatifi

Örnek Kod:

// Temel if-else
int number = 10;
if (number > 0)
{
    Console.WriteLine("Pozitif");
}
else if (number < 0)
{
    Console.WriteLine("Negatif");
}
else
{
    Console.WriteLine("Sıfır");
}

// Ternary operatör
string result = number > 0 ? "Pozitif" : "Negatif veya Sıfır";

// İç içe if-else
if (number > 0)
{
    if (number % 2 == 0)
    {
        Console.WriteLine("Pozitif çift sayı");
    }
    else
    {
        Console.WriteLine("Pozitif tek sayı");
    }
}

2. Switch-Case yapısı nedir ve ne zaman kullanılır?

Cevap: Switch-Case: - Çoklu koşul kontrolü - Pattern matching desteği - Case fallthrough özelliği - Expression-based switch

Örnek Kod:

// Temel switch-case
int day = 3;
switch (day)
{
    case 1:
        Console.WriteLine("Pazartesi");
        break;
    case 2:
        Console.WriteLine("Salı");
        break;
    case 3:
        Console.WriteLine("Çarşamba");
        break;
    default:
        Console.WriteLine("Geçersiz gün");
        break;
}

// Pattern matching
object obj = "Merhaba";
switch (obj)
{
    case string s:
        Console.WriteLine($"String: {s}");
        break;
    case int i:
        Console.WriteLine($"Integer: {i}");
        break;
    case null:
        Console.WriteLine("Null");
        break;
}

// Expression-based switch
string result = day switch
{
    1 => "Pazartesi",
    2 => "Salı",
    3 => "Çarşamba",
    _ => "Geçersiz gün"
};

3. Döngüler nelerdir ve nasıl kullanılır?

Cevap: Döngü Türleri: - for: Belirli sayıda tekrar - while: Koşul sağlandıkça - do-while: En az bir kez çalışır - foreach: Koleksiyonlar üzerinde

Örnek Kod:

// for döngüsü
for (int i = 0; i < 10; i++)
{
    Console.WriteLine(i);
}

// while döngüsü
int j = 0;
while (j < 10)
{
    Console.WriteLine(j);
    j++;
}

// do-while döngüsü
int k = 0;
do
{
    Console.WriteLine(k);
    k++;
} while (k < 10);

// foreach döngüsü
var numbers = new[] { 1, 2, 3, 4, 5 };
foreach (var number in numbers)
{
    Console.WriteLine(number);
}

4. Break ve Continue ifadeleri ne işe yarar?

Cevap: Break/Continue: - Break: - Döngüyü sonlandırır - Switch-case'den çıkar - İç içe döngülerde etiket kullanımı

  • Continue:
  • Mevcut iterasyonu atlar
  • Sonraki iterasyona geçer
  • Koşullu atlama sağlar

Örnek Kod:

// Break kullanımı
for (int i = 0; i < 10; i++)
{
    if (i == 5)
        break;
    Console.WriteLine(i);
}

// Continue kullanımı
for (int i = 0; i < 10; i++)
{
    if (i % 2 == 0)
        continue;
    Console.WriteLine(i);
}

// Etiketli break
outer:
for (int i = 0; i < 3; i++)
{
    for (int j = 0; j < 3; j++)
    {
        if (i == 1 && j == 1)
            break outer;
        Console.WriteLine($"{i}, {j}");
    }
}

5. Exception handling nasıl yapılır?

Cevap: Exception Handling: - try-catch-finally blokları - Özel exception tipleri - Exception filtreleme - throw ifadesi

Örnek Kod:

// Temel try-catch
try
{
    int result = 10 / 0;
}
catch (DivideByZeroException ex)
{
    Console.WriteLine($"Hata: {ex.Message}");
}
catch (Exception ex)
{
    Console.WriteLine($"Genel hata: {ex.Message}");
}
finally
{
    Console.WriteLine("Her durumda çalışır");
}

// Exception filtreleme
try
{
    // Kod
}
catch (Exception ex) when (ex.Message.Contains("özel"))
{
    // Özel hata işleme
}

// Özel exception
public class CustomException : Exception
{
    public CustomException(string message) : base(message)
    {
    }
}

// throw kullanımı
if (condition)
{
    throw new CustomException("Özel hata mesajı");
}

Best Practices

  1. Kod Okunabilirliği
  2. Uygun girintileme
  3. Anlamlı koşul ifadeleri
  4. Gereksiz iç içe yapılardan kaçınma

  5. Performans

  6. Switch-case kullanımı
  7. Döngü optimizasyonu
  8. Exception handling maliyeti

  9. Güvenlik

  10. Null kontrolleri
  11. Exception handling
  12. Input validasyonu

Kaynaklar