--- baslik: dongu ... icinde ve aralıklar bolum: Akış denetimi ozet: Bir listenin, metnin ya da sayı aralığının her öğesi için tekrar etmek --- Elinde bir şehir listesi var ve her birini yazdırmak istiyorsun. `dongu x icinde ...` döngüsü bir topluluğun her öğesi için bloğunu bir kez çalıştırır; sayaç tutmana gerek kalmaz. ## Liste üzerinde dönmek Her turda `sehir` değişkeni sıradaki öğeyi alır. ```kbl sehirler = ["Ankara", "İzmir", "Trabzon", "Van"] dongu sehir icinde sehirler: yazdir(f"• {sehir}") ``` ```cikti • Ankara • İzmir • Trabzon • Van ``` Döngü değişkenine istediğin adı verebilirsin. Anlamlı bir ad seç: `dongu ogrenci icinde ogrenciler`. ## Sayı aralığı: a..b `1..5` aralığı 1, 2, 3, 4, 5 demektir. **Üst sınır dahildir.** ```kbl dongu i icinde 1..5: yazdir(f"{i} x 3 = {i * 3}") ``` ```cikti 1 x 3 = 3 2 x 3 = 6 3 x 3 = 9 4 x 3 = 12 5 x 3 = 15 ``` Sınırlar değişken ya da hesap olabilir. ```kbl n = 4 toplam = 0 dongu i icinde 1..n: toplam += i * i yazdir(f"1'den {n}'e kadar karelerin toplamı: {toplam}") ``` ```cikti 1'den 4'e kadar karelerin toplamı: 30 ``` ## İndeksle dönmek Sıra numarasına da ihtiyacın varsa `0..liste.uzunluk() - 1` aralığında dönersin. ```kbl kazananlar = ["Elif", "Mert", "Zeynep"] dongu i icinde 0..kazananlar.uzunluk() - 1: yazdir(f"{i + 1}. {kazananlar[i]}") ``` ```cikti 1. Elif 2. Mert 3. Zeynep ``` ## Metin üzerinde dönmek Bir metin üzerinde dönünce her turda bir karakter gelir. ```kbl kelime = "Çalışkan öğrenciler" unlu = 0 dongu harf icinde kelime.kucult(): eger "aeıioöuü".icerir(harf): unlu += 1 yazdir(f"{unlu} ünlü harf var.") ``` ```cikti 7 ünlü harf var. ``` ## İç içe döngü Dıştaki döngünün her turunda içteki döngü baştan sona çalışır. Çarpım tablosu buna klasik bir örnektir. ```kbl dongu satir icinde 1..4: cizgi = "" dongu sutun icinde 1..4: cizgi += f"{satir * sutun:4}" yazdir(cizgi) ``` ```cikti 1 2 3 4 2 4 6 8 3 6 9 12 4 8 12 16 ``` > **Dikkat:** Aralık yalnız ileri sayar. `5..1` boş bir aralıktır, döngü hiç çalışmaz. Geri saymak için `iken` kullan. ```kbl dongu i icinde 5..1: yazdir(i) yazdir("Döngü hiç çalışmadı.") ``` ```cikti Döngü hiç çalışmadı. ``` > **İpucu:** Döngü değişkenini değiştirmek listeyi değiştirmez. `dongu x icinde l: x = x * 2` yazınca `l` aynı kalır. Listeyi güncellemenin yolunu *Liste işlemleri* dersinde göreceksin. ## Alıştırma ```alistirma `notlar` listesindeki notların toplamını ve ortalamasını bul. Ortalamayı 1 basamakla `Toplam: 404, ortalama: 80.8` biçiminde yazdır. %%% notlar = [72, 95, 88, 61, 88] toplam = 0 # buraya yaz %%% notlar = [72, 95, 88, 61, 88] toplam = 0 dongu n icinde notlar: toplam += n ortalama = toplam / notlar.uzunluk() yazdir(f"Toplam: {toplam}, ortalama: {ortalama:.1f}") %%% Toplam: 404, ortalama: 80.8 ``` ```alistirma 1'den 5'e kadar her `n` için `n` tane yıldızdan oluşan bir satır yazdır (bir merdiven). `"*".tekrarla(n)` işini görür. %%% # buraya yaz %%% dongu n icinde 1..5: yazdir("*".tekrarla(n)) %%% * ** *** **** ***** ```