Dersler ve Temeller; web örnekleri PORT ortam değişkenini okur
- dersler/: 29 kısa ders (açıklama, çalıştırılabilir örnek, alıştırma). Her örneğin ve alıştırma çözümünün çıktısı Online IDE'nin hazırlık adımında gerçekten koşulup dosyadakiyle karşılaştırılır; biçim dersler/BICIM.md. - temeller/: tek konulu 12 başlangıç programı. - web/anket, web/kisalt, web/pano: port PORT ortam değişkeninden okunur (Online IDE önizlemesi 8080 verir), yoksa eski sabit port. - README: öğrenme bölümü, Online IDE bağlantısı.
This commit is contained in:
@@ -0,0 +1,164 @@
|
||||
---
|
||||
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
|
||||
```
|
||||
Reference in New Issue
Block a user