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,146 @@
|
||||
---
|
||||
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
|
||||
```
|
||||
Reference in New Issue
Block a user