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