- 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ı.
147 lines
3.1 KiB
Markdown
147 lines
3.1 KiB
Markdown
---
|
|
baslik: kir ve devam
|
|
bolum: Akış denetimi
|
|
ozet: Döngüden erken çıkmak ve bir turu atlamak
|
|
---
|
|
|
|
Bazen döngünün sonuna kadar gitmek gerekmez: aradığını bulmuşsundur ya da bu turdaki öğe seni ilgilendirmiyordur. `kir` döngüden tümden çıkar, `devam` yalnız bu turu atlar.
|
|
|
|
## kir: döngüden çık
|
|
|
|
Listede ilk başarısız notu arayalım. Bulunca aramaya devam etmenin anlamı yok.
|
|
|
|
```kbl
|
|
notlar = [62, 81, 48, 77, 35]
|
|
dongu n icinde notlar:
|
|
eger n < 50:
|
|
yazdir(f"İlk başarısız not: {n}")
|
|
kir
|
|
yazdir(f"{n} geçti")
|
|
```
|
|
```cikti
|
|
62 geçti
|
|
81 geçti
|
|
İlk başarısız not: 48
|
|
```
|
|
|
|
`kir` çalışınca döngü hemen biter; 77 ve 35'e hiç bakılmaz.
|
|
|
|
## devam: bu turu atla
|
|
|
|
`devam`'a gelince turun geri kalanı atlanır, döngü bir sonraki öğeyle sürer.
|
|
|
|
```kbl
|
|
dongu i icinde 1..10:
|
|
eger i % 3 == 0:
|
|
devam
|
|
konsol.yaz(f"{i} ")
|
|
yazdir()
|
|
```
|
|
```cikti
|
|
1 2 4 5 7 8 10
|
|
```
|
|
|
|
Burada `konsol.yaz` kullandık: `yazdir` gibidir ama satırı bitirmez, böylece sayılar yan yana dizilir. En sondaki boş `yazdir()` satırı kapatır.
|
|
|
|
## iken dogru ile kir
|
|
|
|
Kaç tur süreceği belli olmayan bir döngüyü `iken dogru:` ile başlatıp koşul sağlanınca `kir` ile bitirebilirsin.
|
|
|
|
```kbl
|
|
n = 27
|
|
adim = 0
|
|
iken dogru:
|
|
eger n == 1:
|
|
kir
|
|
eger n % 2 == 0:
|
|
n = n // 2
|
|
degilse:
|
|
n = 3 * n + 1
|
|
adim += 1
|
|
yazdir(f"27, {adim} adımda 1'e ulaştı.")
|
|
```
|
|
```cikti
|
|
27, 111 adımda 1'e ulaştı.
|
|
```
|
|
|
|
> **Dikkat:** `iken dogru:` yazdıysan döngünün içinde mutlaka bir `kir` olmalı ve ona bir gün ulaşılmalı. Yoksa döngü sonsuza dek döner.
|
|
|
|
## İç içe döngüde kir
|
|
|
|
`kir` yalnız **içinde bulunduğu** döngüden çıkar; dıştaki döngü devam eder.
|
|
|
|
```kbl
|
|
dongu satir icinde 1..3:
|
|
dongu sutun icinde 1..3:
|
|
eger sutun > satir:
|
|
kir
|
|
konsol.yaz(f"{satir}{sutun} ")
|
|
yazdir()
|
|
```
|
|
```cikti
|
|
11
|
|
21 22
|
|
31 32 33
|
|
```
|
|
|
|
## Hepsi bir arada: asal sayılar
|
|
|
|
Bir sayı, 1 ve kendisinden başka böleni yoksa asaldır. Her aday için bölen arıyoruz; bulunca `kir` ile içteki döngüden çıkıyoruz.
|
|
|
|
```kbl
|
|
dongu aday icinde 2..30:
|
|
asal = dogru
|
|
bolen = 2
|
|
iken bolen * bolen <= aday:
|
|
eger aday % bolen == 0:
|
|
asal = yanlis
|
|
kir
|
|
bolen += 1
|
|
eger asal:
|
|
konsol.yaz(f"{aday} ")
|
|
yazdir()
|
|
```
|
|
```cikti
|
|
2 3 5 7 11 13 17 19 23 29
|
|
```
|
|
|
|
## Alıştırma
|
|
|
|
```alistirma
|
|
`urunler` listesinde ilk `"süt"`ü bul: bulunduğu sırayı (1'den sayarak) `süt 3. sırada` biçiminde yazdır ve döngüden çık.
|
|
%%%
|
|
urunler = ["ekmek", "peynir", "süt", "yumurta", "süt"]
|
|
sira = 0
|
|
dongu u icinde urunler:
|
|
sira += 1
|
|
# buraya yaz
|
|
%%%
|
|
urunler = ["ekmek", "peynir", "süt", "yumurta", "süt"]
|
|
sira = 0
|
|
dongu u icinde urunler:
|
|
sira += 1
|
|
eger u == "süt":
|
|
yazdir(f"süt {sira}. sırada")
|
|
kir
|
|
%%%
|
|
süt 3. sırada
|
|
```
|
|
|
|
```alistirma
|
|
1'den 20'ye kadar sayıları gez. Çift sayıları `devam` ile atla, tek sayıların toplamını bulup yazdır.
|
|
%%%
|
|
toplam = 0
|
|
dongu i icinde 1..20:
|
|
# buraya yaz
|
|
yazdir(toplam)
|
|
%%%
|
|
toplam = 0
|
|
dongu i icinde 1..20:
|
|
eger i % 2 == 0:
|
|
devam
|
|
toplam += i
|
|
yazdir(toplam)
|
|
%%%
|
|
100
|
|
```
|