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ı.
This commit is contained in:
@@ -0,0 +1,150 @@
|
||||
---
|
||||
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))
|
||||
%%%
|
||||
*
|
||||
**
|
||||
***
|
||||
****
|
||||
*****
|
||||
```
|
||||
Reference in New Issue
Block a user