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.
Bitirdiğinde işaretle: ilerlemen kaydolur, +20 XP kazanırsın.
İpucu: ← → tuşlarıyla dersler arasında gezinebilirsin.