🚀 C# ile Programlamaya Giriş: Kodlamaya İlk Adımını At, Kendi Projelerini Geliştirmeye Başla!
00ANASAYFA 01YAZILAR 02EĞİTİM 03ELEKTRİK_ENERJİ 04OTOMOTİV_MÜHENDİSLİĞİ 05ARAÇLAR 06LAB 07SÖZLÜK 08ETİKETLER ♡OKUMA LİSTEM ⌕ARA
TRENG

Koşullar: if, switch ve switch İfadesi

Programına karar verdirmeyi öğreniyorsun: if/else if/else, klasik switch, modern switch ifadesi ve üçlü operatör.

Kararlar ve bool

Program her zaman baştan sona düz çalışmaz; bazen duruma göre farklı yollara sapar. Bu sapmaları koşullar sağlar. Koşul, sonucu true ya da false olan bir ifadedir (geçen dersin karşılaştırma operatörleri).

if, else if, else

ADC (analog-dijital çevirici) okumasını gerilime çevirip duruma göre mesaj verelim. 10 bitlik bir ADC 0-1023 arası değer üretir ve referans gerilimi 5 V olsun: gerilim = adc * 5.0 / 1023.

int adc = 700;
double gerilim = adc * 5.0 / 1023;

if (gerilim < 1.0)
{
    Console.WriteLine("Düşük seviye");
}
else if (gerilim < 3.5)
{
    Console.WriteLine("Normal seviye");
}
else
{
    Console.WriteLine("Yüksek seviye");
}
Console.WriteLine($"Ölçülen: {gerilim:F2} V");
Normal seviye
Ölçülen: 3,42 V

Hesap: 700 × 5 / 1023 = 3,4213..., bu değer 1,0'dan büyük ve 3,5'ten küçük olduğu için ikinci dal çalışır.

Koşullar yukarıdan aşağıya sırayla denenir, ilk doğru çıkan dal çalışır, kalanlar atlanır. Bu yüzden aralıkları küçükten büyüğe dizmek işini kolaylaştırır.

İpucu: Tek satırlık gövdede süslü parantezi atlayabilirsin ama atlama. Sonradan ikinci satır eklediğinde en sık yapılan hata budur.

Klasik switch

Bir değişkenin birkaç sabit değerinden hangisine eşit olduğuna bakacaksan switch daha okunaklıdır.

int gun = 6;

switch (gun)
{
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
        Console.WriteLine("Hafta içi");
        break;
    case 6:
    case 7:
        Console.WriteLine("Hafta sonu");
        break;
    default:
        Console.WriteLine("Geçersiz gün");
        break;
}

Her case bir break ile bitmelidir. Alt alta dizilmiş boş case'ler aynı kodu paylaşır. Hiçbiri uymazsa default çalışır.

switch ifadesi (modern)

C# 8 ile gelen switch ifadesi bir değer üretir ve çok daha kısadır. Aralıkları da ilişkisel desenlerle (<, >=) yazabilirsin:

double sicaklik = 31.5;

string durum = sicaklik switch
{
    < 0   => "Donma",
    < 25  => "Serin",
    < 40  => "Sıcak",
    _     => "Tehlikeli"
};

Console.WriteLine($"{sicaklik} derece: {durum}");
31,5 derece: Sıcak

Alt çizgi _ "diğer her şey" anlamına gelir. Kollar yukarıdan aşağıya denenir; bu yüzden < 25 kolu zaten 0'dan küçüğü kapsamaz, çünkü o önce yakalanmıştır.

Üçlü operatör

İki seçenekli basit kararlar için kısa yazım: koşul ? doğruysa : yanlışsa.

int yas = 17;
string mesaj = yas >= 18 ? "Reşit" : "Reşit değil";
Console.WriteLine(mesaj);

Dikkat: Üçlü operatörleri iç içe kullanmak kodu okunmaz yapar. Üç ve daha fazla seçenek varsa if/else if ya da switch ifadesi kullan.

Kendin dene

Kullanıcıdan bir ortalama notu (0-100) alan ve harf notu veren programı önce if/else if ile, sonra switch ifadesiyle yaz: 90 ve üstü AA, 80 ve üstü BA, 70 ve üstü BB, 60 ve üstü CC, altı FF. Geçersiz not (0'dan küçük ya da 100'den büyük) için hata mesajı ver.

// Mini sınav

Bir seçeneğe tıkla; doğru mu yanlış mı, anında ve nedeniyle birlikte göreceksin.

1. switch ifadesinde (switch expression) "_" kolu ne anlama gelir?
2. if / else if zincirinde birden fazla koşul doğru olursa ne olur?
3. Klasik switch içinde her case sonunda ne bulunmalıdır?

Bitirdiğinde işaretle: ilerlemen kaydolur, +20 XP kazanırsın.

İpucu: ← → tuşlarıyla dersler arasında gezinebilirsin.