Files

97 lines
3.7 KiB
Plaintext
Raw Permalink Normal View History

# 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ı.")