--- baslik: Koşullar bolum: Akış denetimi ozet: eger, degilse eger, degilse ile karar vermek --- Program her zaman aynı şeyi yapmaz: hava sıcaksa bir şey, soğuksa başka bir şey söyler. `eger` ile kodun bir bölümünü yalnız belli bir durumda çalıştırırsın. ## eger `eger kosul:` satırının altındaki girintili blok, koşul doğruysa çalışır. ```kbl sicaklik = 31 eger sicaklik > 30: yazdir("Hava çok sıcak.") yazdir("İyi günler.") ``` ```cikti Hava çok sıcak. İyi günler. ``` ## degilse Koşul yanlışsa çalışacak bir blok istiyorsan `degilse:` ekle. ```kbl bakiye = 80 fiyat = 120 eger bakiye >= fiyat: yazdir("Ödeme yapıldı.") degilse: yazdir("Bakiye yetersiz.") ``` ```cikti Bakiye yetersiz. ``` ## degilse eger: birden çok seçenek Seçenek ikiden fazlaysa `degilse eger` kullanırsın. Koşullar yukarıdan aşağıya denenir; **doğru çıkan ilk dal** çalışır, gerisi atlanır. ```kbl puan = 77 eger puan >= 85: harf = "AA" degilse eger puan >= 70: harf = "BA" degilse eger puan >= 60: harf = "BB" degilse eger puan >= 50: harf = "CC" degilse: harf = "FF" yazdir(f"{puan} puan: {harf}") ``` ```cikti 77 puan: BA ``` > **Dikkat:** Sıralama önemlidir. Yukarıdaki örnekte önce `puan >= 50` sorulsaydı, 77 puan o dala girer ve `CC` alırdı. Eşikleri büyükten küçüğe sırala. ## Birleşik koşullar Koşulda `ve`, `veya`, `degil` kullanabilirsin. ```kbl yas = 16 veli_izni = dogru eger yas >= 18 veya veli_izni: yazdir("Geziye katılabilir.") degilse: yazdir("Veli izni gerekli.") ``` ```cikti Geziye katılabilir. ``` ## İç içe koşul Bir `eger` bloğunun içinde başka bir `eger` olabilir. ```kbl kullanici = "ayse" parola = "kirmizi-kalem" eger kullanici == "ayse": eger parola == "kirmizi-kalem": yazdir("Giriş başarılı.") degilse: yazdir("Parola yanlış.") degilse: yazdir("Böyle bir kullanıcı yok.") ``` ```cikti Giriş başarılı. ``` **Dene**'ye basıp parolayı değiştir; hangi dalın çalıştığını gör. ## Gerçek bir örnek: kargo ücreti ```kbl sepet = 420.0 agirlik = 3.2 eger sepet >= 500.0: kargo = 0.0 degilse eger agirlik <= 1.0: kargo = 39.90 degilse eger agirlik <= 5.0: kargo = 59.90 degilse: kargo = 89.90 yazdir(f"Kargo: {kargo:.2f} TL") eger kargo > 0.0: yazdir(f"{500.0 - sepet:.2f} TL daha ekle, kargo bedava.") ``` ```cikti Kargo: 59.90 TL 80.00 TL daha ekle, kargo bedava. ``` > **İpucu:** Bir değişkeni `eger` dallarında oluşturuyorsan (yukarıdaki `kargo` gibi) her dalda aynı türde değer ver: hepsi `ondalik` ya da hepsi `sayi`. ## Alıştırma ```alistirma `sayi_degeri` pozitifse `pozitif`, negatifse `negatif`, sıfırsa `sıfır` yazdır. %%% sayi_degeri = -8 # buraya yaz %%% sayi_degeri = -8 eger sayi_degeri > 0: yazdir("pozitif") degilse eger sayi_degeri < 0: yazdir("negatif") degilse: yazdir("sıfır") %%% negatif ``` ```alistirma Vücut kitle indeksini (`kilo / (boy * boy)`) hesapla ve 1 basamakla yazdır. Sonra değer 18.5'ten küçükse `zayıf`, 25'ten küçükse `normal`, değilse `fazla kilolu` yazdır. %%% kilo = 68.0 boy = 1.75 # buraya yaz %%% kilo = 68.0 boy = 1.75 vki = kilo / (boy * boy) yazdir(f"{vki:.1f}") eger vki < 18.5: yazdir("zayıf") degilse eger vki < 25.0: yazdir("normal") degilse: yazdir("fazla kilolu") %%% 22.2 normal ```