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")
}
egeranahtar 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ı")
}
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
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
}
}
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ı
- 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 Kelime | Kullanım |
|---|---|---|
| If | eger | Koşullu çalıştırma |
| Else | degilse | Alternatif durum |
| Else If | degilse_eger | Çoklu koşullar |
| While | iken | Koşula bağlı tekrar |
| For | icin | Dizi üzerinde iterasyon |
Sonraki Adımlar
- Fonksiyonlar - Kod tekrarını azaltın
- Diziler ve Sözlükler - Veri yapıları
- Örnekler - Gerçek dünya örnekleri
Döngü ve koşullar ile oyunlar, hesap makineleri veya basit programlar yazarak pratik yapın!