# Döngüler: dongu ... icinde, sayı aralıkları, iken, kir ve devam # # Döngü, bir kod bloğunu tekrar tekrar çalıştırır. KabaLang'de iki türü var: # dongu x icinde ... : bir listenin ya da aralığın her öğesi için bir kez # iken koşul: : koşul doğru olduğu sürece # ── Bir listenin üzerinden geçmek ───────────────────────────── # Her turda sehir değişkeni sıradaki öğeyi alır. sehirler = ["Ankara", "İzmir", "Trabzon", "Van"] dongu sehir icinde sehirler: yazdir(f"• {sehir}") yazdir() # ── Sayı aralığı: 1..5 ──────────────────────────────────────── # 1..5 aralığı 1, 2, 3, 4, 5 demektir; üst sınır DAHİLDİR. toplam = 0 dongu i icinde 1..5: toplam += i yazdir(f"i = {i}, şimdiye kadarki toplam = {toplam}") yazdir() # Aralığın sınırları değişken de olabilir. n = 6 konsol.yaz(f"7'nin ilk {n} katı:") dongu i icinde 1..n: konsol.yaz(f" {7 * i}") yazdir() yazdir() # ── İç içe döngü: çarpım tablosu ────────────────────────────── # Dıştaki döngünün her turunda içteki döngü baştan sona çalışır. # {deger:4} sayıyı 4 karakterlik alana sağa yaslar; sütunlar böyle hizalanır. dongu satir icinde 1..5: cizelge = "" dongu sutun icinde 1..5: cizelge = cizelge + f"{satir * sutun:4}" yazdir(cizelge) yazdir() # ── iken: koşul doğru olduğu sürece ─────────────────────────── # Aralık yalnız ileri sayar (5..1 boştur); geri saymak için iken kullanılır. # Koşulu bir gün yanlış yapacak satırı (burada sayac -= 1) unutmak döngüyü sonsuz yapar. sayac = 5 iken sayac > 0: konsol.yaz(f"{sayac}... ") sayac -= 1 yazdir("kalkış!") # Kaç turda biteceğini bilmediğimiz işler için iken uygundur. # Yıllık %40 faizle 10.000 TL kaç yılda iki katını geçer? para = 10_000.0 yil = 0 iken para < 20_000.0: para = para * 1.40 yil += 1 yazdir(f"{yil} yıl sonra para {para:,.2f} TL oldu; iki katını geçti.") yazdir() # ── devam: bu turu atla ─────────────────────────────────────── # devam'a gelince turun geri kalanı atlanır, döngü bir sonraki öğeyle sürer. konsol.yaz("1-20 arası 3'e bölünmeyen tek sayılar:") dongu i icinde 1..20: eger i % 2 == 0: devam # çift sayıysa geç eger i % 3 == 0: devam # 3'e bölünüyorsa geç konsol.yaz(f" {i}") yazdir() # ── kir: döngüden tümden çık ────────────────────────────────── # Aradığımızı bulunca aramaya devam etmenin anlamı yok. notlar = [62, 48, 91, 77, 35, 88] dongu notu icinde notlar: eger notu < 50: yazdir(f"İlk başarısız not bulundu: {notu}") kir yazdir() # ── Hepsi bir arada: asal sayılar ───────────────────────────── # Bir sayı, 1 ve kendisinden başka böleni yoksa asaldır. # Her aday için 2'den başlayıp bölen arıyoruz; bölen bulunca kir ile çıkıyoruz. asal_sayisi = 0 konsol.yaz("50'ye kadar asal sayılar:") dongu aday icinde 2..50: asal = dogru bolen = 2 iken bolen * bolen <= aday: eger aday % bolen == 0: asal = yanlis kir # yalnız içteki iken döngüsünden çıkar bolen += 1 eger asal: konsol.yaz(f" {aday}") asal_sayisi += 1 yazdir() yazdir(f"Toplam {asal_sayisi} asal sayı.")