Files
semih 494781e84f Dersler ve Temeller; web örnekleri PORT ortam değişkenini okur
- dersler/: 29 kısa ders (açıklama, çalıştırılabilir örnek, alıştırma). Her örneğin
  ve alıştırma çözümünün çıktısı Online IDE'nin hazırlık adımında gerçekten koşulup
  dosyadakiyle karşılaştırılır; biçim dersler/BICIM.md.
- temeller/: tek konulu 12 başlangıç programı.
- web/anket, web/kisalt, web/pano: port PORT ortam değişkeninden okunur (Online IDE
  önizlemesi 8080 verir), yoksa eski sabit port.
- README: öğrenme bölümü, Online IDE bağlantısı.
2026-10-17 22:07:47 +03:00

151 lines
3.2 KiB
Markdown

---
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))
%%%
*
**
***
****
*****
```