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,140 @@
|
||||
---
|
||||
baslik: iken döngüsü
|
||||
bolum: Akış denetimi
|
||||
ozet: Koşul doğru olduğu sürece tekrar etmek
|
||||
---
|
||||
|
||||
Bir işi defalarca yapmak için aynı satırı tekrar tekrar yazmazsın; döngü kullanırsın. `iken` döngüsü, koşul doğru olduğu **sürece** bloğunu tekrarlar.
|
||||
|
||||
## Temel kullanım
|
||||
|
||||
```kbl
|
||||
sayac = 1
|
||||
iken sayac <= 5:
|
||||
yazdir(sayac)
|
||||
sayac += 1
|
||||
yazdir("Bitti")
|
||||
```
|
||||
```cikti
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
Bitti
|
||||
```
|
||||
|
||||
Her turdan önce koşul sorulur. `sayac` 6 olunca koşul yanlış çıkar ve döngü biter.
|
||||
|
||||
## Geri sayım
|
||||
|
||||
```kbl
|
||||
kalan = 3
|
||||
iken kalan > 0:
|
||||
yazdir(f"{kalan}...")
|
||||
kalan -= 1
|
||||
yazdir("Kalkış!")
|
||||
```
|
||||
```cikti
|
||||
3...
|
||||
2...
|
||||
1...
|
||||
Kalkış!
|
||||
```
|
||||
|
||||
## Toplam biriktirmek
|
||||
|
||||
Döngüde bir değişkene her turda ekleme yaparak toplam bulursun.
|
||||
|
||||
```kbl
|
||||
toplam = 0
|
||||
n = 1
|
||||
iken n <= 100:
|
||||
toplam += n
|
||||
n += 1
|
||||
yazdir(f"1'den 100'e kadar toplam: {toplam}")
|
||||
```
|
||||
```cikti
|
||||
1'den 100'e kadar toplam: 5050
|
||||
```
|
||||
|
||||
## Kaç turda biteceğini bilmediğin işler
|
||||
|
||||
`iken`, tekrar sayısını önceden bilmediğin durumlar için idealdir. Yıllık %40 faizle 10.000 TL kaç yılda iki katını geçer?
|
||||
|
||||
```kbl
|
||||
para = 10_000.0
|
||||
yil = 0
|
||||
iken para < 20_000.0:
|
||||
para = para * 1.40
|
||||
yil += 1
|
||||
yazdir(f"{yil} yıl sonra: {para:,.2f} TL")
|
||||
```
|
||||
```cikti
|
||||
3 yıl sonra: 27,440.00 TL
|
||||
```
|
||||
|
||||
Bir sayının basamaklarını tek tek ayırmak da böyle bir iştir.
|
||||
|
||||
```kbl
|
||||
n = 4729
|
||||
basamak_toplami = 0
|
||||
iken n > 0:
|
||||
basamak_toplami += n % 10
|
||||
n = n // 10
|
||||
yazdir(basamak_toplami)
|
||||
```
|
||||
```cikti
|
||||
22
|
||||
```
|
||||
|
||||
> **Dikkat:** Koşulu bir gün yanlış yapacak satırı unutursan döngü **sonsuza dek** döner. Aşağıdaki kodda `sayac` hiç artmıyor; program durmaz (IDE belli bir süre sonra onu keser).
|
||||
|
||||
```kbl goster
|
||||
sayac = 1
|
||||
iken sayac <= 5:
|
||||
yazdir(sayac)
|
||||
# sayac += 1 unutuldu!
|
||||
```
|
||||
|
||||
## Alıştırma
|
||||
|
||||
```alistirma
|
||||
`iken` ile 2'nin kuvvetlerini yazdır: 1, 2, 4, 8, ... 1000'i geçmeyenleri, her biri ayrı satırda.
|
||||
%%%
|
||||
kuvvet = 1
|
||||
# buraya yaz
|
||||
%%%
|
||||
kuvvet = 1
|
||||
iken kuvvet <= 1000:
|
||||
yazdir(kuvvet)
|
||||
kuvvet *= 2
|
||||
%%%
|
||||
1
|
||||
2
|
||||
4
|
||||
8
|
||||
16
|
||||
32
|
||||
64
|
||||
128
|
||||
256
|
||||
512
|
||||
```
|
||||
|
||||
```alistirma
|
||||
Bir kumbarada 0 TL var. Her hafta 35 TL atılıyor. Kumbara 500 TL'ye ulaşana ya da geçene kadar kaç hafta gerektiğini ve son tutarı `X hafta, Y TL` biçiminde yazdır.
|
||||
%%%
|
||||
kumbara = 0
|
||||
hafta = 0
|
||||
# buraya yaz
|
||||
%%%
|
||||
kumbara = 0
|
||||
hafta = 0
|
||||
iken kumbara < 500:
|
||||
kumbara += 35
|
||||
hafta += 1
|
||||
yazdir(f"{hafta} hafta, {kumbara} TL")
|
||||
%%%
|
||||
15 hafta, 525 TL
|
||||
```
|
||||
Reference in New Issue
Block a user