--- 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 ```