Ana içeriğe geç

Kontrol Yapıları

Kontrol yapıları, programın akışını yönlendirmek için kullanılır. Lordex'te koşullu ifadeler ve döngüler bulunur.

Koşullu İfadeler (if-else)

Basit if Yapısı

En basit koşullu ifade eger (if) bloğudur:

yas = 18

eger (yas >= 18) {
yaz("Reşitsiniz")
}
Sözdizimi
  • eger anahtar kelimesi ile başlar
  • Koşul parantez içinde yazılır (koşul)
  • Kod bloğu süslü parantez içinde { ... }

if-else Yapısı

İki farklı durum için eger-degilse kullanın:

puan = 75

eger (puan >= 50) {
yaz("Geçtiniz!")
} degilse {
yaz("Kaldınız!")
}

if-else if-else Yapısı

Çoklu koşullar için degilse_eger kullanın:

not = 85

eger (not >= 90) {
yaz("Harf Notu: AA - Mükemmel")
} degilse_eger (not >= 80) {
yaz("Harf Notu: BA - Çok İyi")
} degilse_eger (not >= 70) {
yaz("Harf Notu: BB - İyi")
} degilse_eger (not >= 60) {
yaz("Harf Notu: CB - Orta")
} degilse_eger (not >= 50) {
yaz("Harf Notu: CC - Geçer")
} degilse {
yaz("Harf Notu: FF - Kaldı")
}
İpucu

Koşullar yukarıdan aşağıya kontrol edilir. İlk doğru koşul çalıştırılır ve diğerleri atlanır.

İç İçe if Yapıları

yas = 25
ehliyet = evet
tecrube = 3

eger (yas >= 18) {
eger (ehliyet) {
eger (tecrube >= 2) {
yaz("Araç kiralayabilirsiniz")
} degilse {
yaz("En az 2 yıl tecrübe gerekli")
}
} degilse {
yaz("Ehliyetiniz yok")
}
} degilse {
yaz("18 yaşından küçüksünüz")
}

Daha Okunabilir Versiyon:

eger (yas >= 18 ve ehliyet ve tecrube >= 2) {
yaz("Araç kiralayabilirsiniz")
} degilse_eger (yas < 18) {
yaz("18 yaşından küçüksünüz")
} degilse_eger (degil ehliyet) {
yaz("Ehliyetiniz yok")
} degilse {
yaz("En az 2 yıl tecrübe gerekli")
}

Pratik Örnekler

Örnek 1: Giriş Kontrolü

kullanici_adi = "admin"
sifre = "12345"

yaz("Kullanıcı adı:")
giris_adi = oku()

yaz("Şifre:")
giris_sifre = oku()

eger (giris_adi == kullanici_adi ve giris_sifre == sifre) {
yaz("Giriş başarılı! Hoş geldiniz.")
} degilse {
yaz("Kullanıcı adı veya şifre hatalı!")
}

Örnek 2: Yaş Kategorisi

yas = 35

eger (yas < 13) {
kategori = "Çocuk"
} degilse_eger (yas < 20) {
kategori = "Genç"
} degilse_eger (yas < 65) {
kategori = "Yetişkin"
} degilse {
kategori = "Yaşlı"
}

yaz("Kategori: " + kategori)

Örnek 3: Mevsim Belirleme

ay = 7  // Temmuz

eger (ay == 12 veya ay == 1 veya ay == 2) {
mevsim = "Kış"
} degilse_eger (ay >= 3 ve ay <= 5) {
mevsim = "İlkbahar"
} degilse_eger (ay >= 6 ve ay <= 8) {
mevsim = "Yaz"
} degilse_eger (ay >= 9 ve ay <= 11) {
mevsim = "Sonbahar"
} degilse {
mevsim = "Geçersiz ay"
}

yaz("Mevsim: " + mevsim)

While Döngüsü (iken)

iken döngüsü, koşul doğru olduğu sürece çalışır.

Temel Kullanım

sayac = 1

iken (sayac <= 5) {
yaz("Sayaç: " + sayac)
sayac = sayac + 1
}

Çıktı:

Sayaç: 1
Sayaç: 2
Sayaç: 3
Sayaç: 4
Sayaç: 5
Sonsuz Döngü

Sayaç güncellenmezse sonsuz döngüye girersiniz:

sayac = 1
iken (sayac <= 5) {
yaz(sayac)
// sayac = sayac + 1 // Bu satır olmadan sonsuz döngü!
}

Kullanıcı Girdisi ile Döngü

devam = "evet"

iken (devam == "evet") {
yaz("Bir sayı girin:")
sayi = int(oku())
yaz("Karesi: " + (sayi * sayi))

yaz("Devam etmek istiyor musunuz? (evet/hayir)")
devam = oku()
}

yaz("Program sonlandı")

Toplama Örneği

// 1'den 100'e kadar olan sayıların toplamı
toplam = 0
sayi = 1

iken (sayi <= 100) {
toplam = toplam + sayi
sayi = sayi + 1
}

yaz("1'den 100'e kadar toplam: " + toplam) // 5050

Faktöriyel Hesaplama

n = 5
faktoriyel = 1
sayac = 1

iken (sayac <= n) {
faktoriyel = faktoriyel * sayac
sayac = sayac + 1
}

yaz(n + "! = " + faktoriyel) // 5! = 120

Şartlı Çıkış

sayac = 0
toplam = 0

iken (evet) { // Sonsuz döngü
sayac = sayac + 1
toplam = toplam + sayac

eger (toplam > 100) {
yaz("Toplam 100'ü geçti: " + toplam)
// Break desteklenmiyorsa koşulu değiştirin
sayac = 999999 // Döngüyü sonlandır
}
}
Break ve Continue

Alpha sürümünde break ve continue desteklenmeyebilir. Döngü koşulunu değiştirerek kontrol edin.

For Döngüsü (icin)

icin döngüsü, diziler ve koleksiyonlar üzerinde iterasyon yapar.

Dizi Üzerinde Döngü

meyveler = ["Elma", "Armut", "Muz", "Çilek"]

icin (meyve in meyveler) {
yaz("- " + meyve)
}

Çıktı:

- Elma
- Armut
- Muz
- Çilek

Sayı Dizisi Üzerinde Döngü

sayilar = [1, 2, 3, 4, 5]
toplam = 0

icin (sayi in sayilar) {
toplam = toplam + sayi
}

yaz("Toplam: " + toplam) // 15

Dizgi Listesi

isimler = ["Ahmet", "Mehmet", "Ayşe", "Fatma"]

yaz("Katılımcılar:")
icin (isim in isimler) {
yaz("- " + isim)
}

İç İçe Döngüler

// Çarpım tablosu
satir = 1
iken (satir <= 5) {
sutun = 1
iken (sutun <= 5) {
sonuc = satir * sutun
yaz(satir + " x " + sutun + " = " + sonuc)
sutun = sutun + 1
}
yaz("---")
satir = satir + 1
}

Matris İşleme

matris = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]

yaz("Matris Elemanları:")
icin (satir in matris) {
icin (eleman in satir) {
yaz(eleman)
}
}

Döngü Kontrol Teknikleri

Belirli Elemanı Arama

isimler = ["Ali", "Veli", "Ahmet", "Mehmet"]
aranan = "Ahmet"
bulundu = hayir

icin (isim in isimler) {
eger (isim == aranan) {
bulundu = evet
}
}

eger (bulundu) {
yaz(aranan + " listede bulundu")
} degilse {
yaz(aranan + " listede bulunamadı")
}

Koşullu İşlemler

sayilar = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

yaz("Çift sayılar:")
icin (sayi in sayilar) {
eger (sayi % 2 == 0) {
yaz(sayi)
}
}

Sayma ve Filtreleme

notlar = [45, 67, 89, 34, 78, 90, 56]
gecen = 0
kalan = 0

icin (not in notlar) {
eger (not >= 50) {
gecen = gecen + 1
} degilse {
kalan = kalan + 1
}
}

yaz("Geçen öğrenci: " + gecen)
yaz("Kalan öğrenci: " + kalan)

Pratik Örnekler

Örnek 1: Asal Sayı Kontrolü

fonksiyon asal_mi(n) {
eger (n < 2) {
geri_don hayir
}

i = 2
iken (i * i <= n) {
eger (n % i == 0) {
geri_don hayir
}
i = i + 1
}

geri_don evet
}

// Test
yaz("2'den 30'a kadar asal sayılar:")
sayi = 2
iken (sayi <= 30) {
eger (asal_mi(sayi)) {
yaz(sayi)
}
sayi = sayi + 1
}

Örnek 2: Fibonacci Dizisi

n = 10
a = 0
b = 1

yaz("İlk " + n + " Fibonacci sayısı:")
sayac = 0

iken (sayac < n) {
yaz(a)
temp = a + b
a = b
b = temp
sayac = sayac + 1
}

Örnek 3: Tahmin Oyunu

hedef = 42  // Gerçek uygulamada rastgele() kullanın
tahmin_hakki = 5
sayac = 0

yaz("1 ile 100 arasında bir sayı tahmin edin!")

iken (sayac < tahmin_hakki) {
yaz("Tahmininiz:")
tahmin = int(oku())
sayac = sayac + 1

eger (tahmin == hedef) {
yaz("Tebrikler! " + sayac + " tahminde buldunuz!")
sayac = tahmin_hakki // Döngüyü sonlandır
} degilse_eger (tahmin < hedef) {
yaz("Daha büyük bir sayı deneyin")
} degilse {
yaz("Daha küçük bir sayı deneyin")
}

kalan = tahmin_hakki - sayac
eger (kalan > 0) {
yaz("Kalan hak: " + kalan)
}
}

eger (tahmin != hedef) {
yaz("Maalesef kaybettiniz. Doğru sayı: " + hedef)
}

Örnek 4: Menü Sistemi

devam = evet

iken (devam) {
yaz("")
yaz("=== HESAP MAKİNESİ ===")
yaz("1. Toplama")
yaz("2. Çıkarma")
yaz("3. Çarpma")
yaz("4. Bölme")
yaz("5. Çıkış")
yaz("Seçiminiz:")

secim = int(oku())

eger (secim >= 1 ve secim <= 4) {
yaz("Birinci sayı:")
sayi1 = float(oku())

yaz("İkinci sayı:")
sayi2 = float(oku())

eger (secim == 1) {
sonuc = sayi1 + sayi2
yaz("Sonuç: " + sonuc)
} degilse_eger (secim == 2) {
sonuc = sayi1 - sayi2
yaz("Sonuç: " + sonuc)
} degilse_eger (secim == 3) {
sonuc = sayi1 * sayi2
yaz("Sonuç: " + sonuc)
} degilse_eger (secim == 4) {
eger (sayi2 != 0) {
sonuc = sayi1 / sayi2
yaz("Sonuç: " + sonuc)
} degilse {
yaz("Hata: Sıfıra bölme!")
}
}
} degilse_eger (secim == 5) {
yaz("Çıkılıyor...")
devam = hayir
} degilse {
yaz("Geçersiz seçim!")
}
}

En İyi Uygulamalar

✅ İyi Pratikler

// 1. Anlamlı değişken isimleri
iken (sayac < toplam_ogrenci) {
// ...
}

// 2. Basit koşullar
eger (yas >= 18 ve ehliyet_var) {
// ...
}

// 3. Yorumlar ekle
// Kullanıcıdan veri al ve kontrol et
iken (devam) {
// ...
}

❌ Kötü Pratikler

// 1. Sonsuz döngüler
iken (evet) {
// Çıkış koşulu yok!
}

// 2. Çok karmaşık koşullar
eger (a > 5 ve b < 10 veya c == 3 ve d != 7 veya e >= 20) {
// Okunması zor!
}

// 3. İç içe çok derin yapılar
eger (kosul1) {
eger (kosul2) {
eger (kosul3) {
eger (kosul4) {
// Çok derin!
}
}
}
}

Yaygın Hatalar

Hata 1: Parantez Eksikliği

Hatalı:

eger yas >= 18 {  // Parantez eksik
yaz("Reşit")
}

Doğru:

eger (yas >= 18) {
yaz("Reşit")
}

Hata 2: Sonsuz Döngü

Hatalı:

sayac = 1
iken (sayac < 10) {
yaz(sayac)
// Sayaç güncellenmemiş!
}

Doğru:

sayac = 1
iken (sayac < 10) {
yaz(sayac)
sayac = sayac + 1
}

Hata 3: Yanlış Karşılaştırma

Hatalı:

eger (x = 5) {  // Atama operatörü!
yaz("x eşit 5")
}

Doğru:

eger (x == 5) {  // Karşılaştırma operatörü
yaz("x eşit 5")
}

Performans İpuçları

Performans
  • Döngü içinde gereksiz hesaplamalar yapmayın
  • Mümkünse döngü dışında hesaplayın
  • Çok karmaşık koşullardan kaçının
// ❌ Verimsiz
iken (i < 100) {
sonuc = hesapla_karmasik_islem() // Her döngüde hesaplanıyor
yaz(sonuc)
i = i + 1
}

// ✅ Verimli
sonuc = hesapla_karmasik_islem() // Bir kez hesaplandı
iken (i < 100) {
yaz(sonuc)
i = i + 1
}

Özet

YapıAnahtar KelimeKullanım
IfegerKoşullu çalıştırma
ElsedegilseAlternatif durum
Else Ifdegilse_egerÇoklu koşullar
WhileikenKoşula bağlı tekrar
ForicinDizi üzerinde iterasyon

Sonraki Adımlar

Pratik Yapın

Döngü ve koşullar ile oyunlar, hesap makineleri veya basit programlar yazarak pratik yapın!