İçeriğe geç
Educora
Orta8. sınıf24 dk30 / 59

Koşul ifadesi: if, elif, else ve bileşik koşullar

Karşılaştırmalar, `if`’in tam ve eksik biçimi, `elif` zincirleri, iç içe koşullar, `and`, `or`, `not` ve kalanla kurulan koşullar; sınav tipi izleme, «kaç kez `Yes`?» ve yazılı program sorularıyla.

Kendini test et
Bu derste öğreneceklerin
  • Karakter dizileri dâhil karşılaştırmaların sonucunu (True / False) belirlemek.
  • if’in tam ve eksik biçimini, elif zincirlerini ve iç içe koşulları yazmak; hangi dalın çalıştığını izlemek.
  • and, or, not içeren bileşik koşulları öncelik sırasına göre hesaplamak.
  • Tekrarlanan örüntü problemlerini kalan koşullarıyla (n % k) çözen programlar yazmak.

ATM, PIN doğru girildiğinde para verir, yanlış girildiğinde uyarı gösterir; trafik ışığında yeşilde geçer, kırmızıda dururuz. Program da duruma göre seçim yapmalıdır. Akış şemasında bu, eşkenar dörtgenle çizilen bir dallanmadır (bkz. «Algoritmalar ve akış şemaları» ve «Dallanan algoritmalar»); Python’da ise koşul ifadesi if ile yazılır. 2025–2026 giriş sınavlarının her kitapçığında koşul ifadesine 2–3 soru düştü, bazen bunlardan biri yazılı bir programdı.

Karşılaştırmalar: koşul ne zaman doğrudur?

Koşul, değeri True (doğru) ya da False (yanlış) olan bir ifadedir. En basit koşullar karşılaştırma işleçleriyle kurulur. Dikkat: eşitlik iki eşittir işaretiyle, == şeklinde yazılır; tek = atama demektir.

İşleçAnlamıÖrnek
==eşittir7 == 7 → True
!=eşit değildir7 != 7 → False
< >küçüktür, büyüktür3 > 8 → False
<= >=küçük veya eşit, büyük veya eşit8 >= 8 → True

Karakter dizileri karakter karakter, karakterlerin kodlarına göre karşılaştırılır; tıpkı sözlükteki kelimeler gibi: 'apple' < 'apricot' doğrudur, çünkü üçüncü karakterde p, r’den önce gelir. Büyük harflerin kodları küçük harflerinkinden küçüktür, bu yüzden 'Z' < 'a' de doğrudur. Rakamlardan oluşan karakter dizileri de karakter karakter karşılaştırılır: '10' < '9' doğrudur ('1' < '9'), oysa 10 > 9’dur. Bir sayı bir karakter dizisine asla eşit olmaz: 5 == '5' → False. Python çift eşitsizliğe de izin verir: 10 <= n <= 99 yazımı «n iki basamaklı bir sayıdır» anlamına gelir.

Bir koşulun değeri sıradan bir değerdir: yazdırılabilir (print(7 > 3) → True) ve bir değişkende saklanabilir: even = n % 2 == 0. Burada önce n % 2 == 0 karşılaştırması hesaplanır, sonra True ya da False değeri even değişkenine atanır; ardından if even: yazmak yeterlidir. Uzun koşulları böyle parçalara ayırmak programı okunaklı yapar.

Koşul ifadesinin tam ve eksik biçimi

Tanım
Eksik ve tam koşul ifadesi

Eksik biçim yalnızca if bölümünden oluşur: koşul doğruysa blok çalışır, yanlışsa hiçbir şey yapılmaz. Tam biçim if … else şeklindedir: iki daldan mutlaka biri çalışır; koşul doğruysa if bloğu, yanlışsa else bloğu.

Yazım kuralları: koşuldan sonra iki nokta (:) konur, dalın komutları ise girintiyle, genellikle 4 boşlukla yazılır. Aynı girintideki ardışık satırlar bir blok oluşturur: girinti bitince blok da biter. else, kendi if’iyle aynı girintide yazılır. Koşul ifadesinden sonra girintisiz gelen komutlar her iki durumda da çalışır.

Python
n = 38
if n % 5 == 3:
    print(n // 5)
else:
    print(n % 5)
print('end')
▸ Beklenen çıktı
7
end
38 % 5 = 3, koşul doğrudur ve 38 // 5 = 7 yazdırılır. print('end') girintisiz olduğu için her durumda çalışır. n = 41 yazıp yeniden çalıştır: bu kez else dalı çalışacak.
Python
x = 12
y = 5
if x % y == 2:
    y = x * 2
    print(x, y)
    x = y - x
y = y + 1
print(x, y)
▸ Beklenen çıktı
12 24
12 25
Örnek 1’in programı.
Örnek 1. Koşuldan sonraki komutlar (kodlanmış cevap)

Yukarıdaki program ne yazdıracak? İki satırı da yazın.

Çözümü göster
x % y = 12 % 5 = 2, koşul doğrudur ve blok çalışır:
y = 12 · 2 = 24; print(x, y) → 12 24; x = 24 − 12 = 12.
Bloktan sonra girintisiz komutlar gelir: y = 24 + 1 = 25; print(x, y) → 12 25.
Cevap iki satırdır: 12 24 ve 12 25. Tuzak: girintisiz y = y + 1 komutunu başlangıçtaki y = 5 ile hesaplayan «12 6» yazar.

elif zincirleri ve iç içe koşullar

İkiden fazla seçenek olduğunda elif («else if», yani «değilse, eğer») kullanılır. Koşullar yukarıdan aşağıya denetlenir; ilk doğru koşulun dalı çalışır ve zincirin geri kalanı atlanır, sonraki koşullar doğru olsa bile. Hiçbir koşul doğru değilse sondaki else çalışır (yoksa hiçbir şey yapılmaz). Bu yüzden koşulların sırası önemlidir: if n > 10, elif n > 100’den önce yazılırsa ikinci dal asla çalışmaz.

1. koşuldoğru mu?evet1. dalhayır2. koşuldoğru mu?evet2. dalhayırelse dalısonraki komut
if … elif … else zinciri: koşullar yukarıdan aşağıya denetlenir, ilk doğru koşulun dalı çalışır, sonra program zincirden sonraki komuta geçer.
Python
s = 'k'
b = 'm'
if s == b:
    print('A')
elif s < b:
    print('B')
elif s == 'k':
    print('C')
else:
    print('D')
▸ Beklenen çıktı
B
Örnek 2’nin programı. Sınavda ilk satır s = input() olur.
Örnek 2. Bir karakter girilir

Klavyeden k harfi girilirse yukarıdaki program ne yazdırır?
A) A B) B C) C D) D E) hiçbir şey

Çözümü göster
s == b → 'k' == 'm' ✗.
s < b → 'k' < 'm' ✓ (alfabede k, m’den önce gelir) → B yazdırılır.
s == 'k' de doğru olduğu hâlde zincirin geri kalanı denetlenmez. Cevap: B.

Bir dalın içinde başka bir koşul ifadesi de olabilir; buna iç içe koşul denir. İçteki if, yalnızca dıştaki koşul doğruysa denetlenir. Hangi else’in hangi if’e ait olduğunu yalnızca girinti belirler: else, kendisiyle aynı girintide yazılmış, yukarıdaki en yakın if’e aittir. Sınav programlarında koşullar çoğu zaman 2–3 düzey iç içedir, bu yüzden izlemeyi sistemli yap.

  1. 1
    Başlangıç değerlerini yaz

    Değişkenleri ve başlangıç değerlerini (giriş değerleri dâhil) bir tabloya aktar.

  2. 2
    Koşulu hesapla: ✓ veya ✗

    Koşuldaki ifadeyi o anki değerlerle hesapla ve yanına ✓ (doğru) veya ✗ (yanlış) yaz.

  3. 3
    ✗ ise bloğu atla

    Girintisi daha büyük olan tüm satırları atla; aynı girintideki elif / else’e, o yoksa bloktan sonraki satıra geç.

  4. 4
    ✓ ise bloğa gir

    Komutları çalıştır, değişkenleri güncelle ve içteki koşullar için 2–3. adımları tekrarla. Bir dal çalıştıysa o zincirin kalan elif / else bölümleri atlanır.

  5. 5
    Sonraki komutları unutma

    Koşul ifadesinden sonraki girintisiz satırlar her zaman çalışır; cevap çoğu zaman tam orada oluşur.

Python
a = 36
b = 14
if a % b > 5:
    a = a - b
    if a > 2 * b:
        b = b + 3
    else:
        b = b - 3
        if b % 2 == 1:
            a = a + 1
else:
    a = a + b
print(a + b, a - b)
▸ Beklenen çıktı
34 12
Örnek 3’ün programı: üç düzeyli iç içe koşullar.
Örnek 3. Sınav tipi çoktan seçmeli soru: iç içe koşullar

Yukarıdaki programın sonucunu belirleyin.
A) 39 5 B) 33 11 C) 34 12 D) 58 14 E) 22 11

Çözümü göster
1) a % b = 36 % 14 = 8; 8 > 5 ✓ → a = 36 − 14 = 22.
2) a > 2 · b → 22 > 28 ✗ → else dalı: b = 14 − 3 = 11.
3) İçteki koşul: b % 2 == 1 → 11 % 2 = 1 ✓ → a = 22 + 1 = 23.
4) Dıştaki else atlanır. print(a + b, a - b) → 23 + 11 = 34, 23 − 11 = 12.
Cevap: C) 34 12. B seçeneği içteki if’i unutanlar (a = 22, b = 11), A ise yanlış dalı seçenler (b = 17) içindir.

Bileşik koşullar: and, or, not

Birkaç koşul mantıksal işleçlerle birleştirilir: and (ve) iki koşul da doğruysa doğrudur; or (veya) en az biri doğruysa doğrudur; not (değil) koşulun değerini tersine çevirir. Bunlar «Mantık işlemleri ve mantık kapıları» dersindeki ve, veya, değil işlemleridir.

ABA and BA or Bnot A
TrueTrueTrueTrueFalse
TrueFalseFalseTrueFalse
FalseTrueFalseTrueTrue
FalseFalseFalseFalseTrue
aritmetik → == != < > <= >= → not → and → or

Öncelik soldan sağa azalır: önce aritmetik, sonra karşılaştırmalar, ardından not, and ve en son or. Emin değilsen parantez kullan; program hem doğru hem okunaklı olur.

Aralıklar için hazır kalıplar: x, [10, 20] aralığındadır — 10 <= x <= 20 (yani x >= 10 and x <= 20); x aralığın dışındadır — x < 10 or x > 20, bu da not (10 <= x <= 20) ile aynıdır. Dikkat: «dışında» koşulunda and yazmak hatadır; hiçbir sayı aynı anda hem 10’dan küçük hem 20’den büyük olamaz, böyle bir koşul her zaman yanlıştır.

Örnek 4. Öncelik fark yaratır

x = 7, y = 2 iken hesaplayın: 1) x > 5 or y > 3 and x < 0; 2) not x > 5 and y == 2; 3) (x > 5 or y > 3) and x < 0.

Çözümü göster
1) Önce and: y > 3 and x < 0 → ✗ ve ✗ = False; sonra x > 5 or False → ✓ veya ✗ = True.
2) not, karşılaştırmadan sonra ama and’den önce yapılır: not (7 > 5) = not True = False; False and … = False.
3) Önce parantez: x > 5 or y > 3 = True; True and x < 0 = ✓ ve ✗ = False.
1. ve 3. ifadeler yalnızca parantezle ayrılır, sonuçları ise zıttır.
Örnek 5. Kaç kez «Yes» yazdırılır?

Program art arda 10 kez çalıştırılıyor ve her seferinde klavyeden bir (s, t) çifti giriliyor: (9, 4); (9, 6); (2, 5); (−1, 3); (8, 8); (0, 0); (12, 9); (−5, −5); (7, 1); (10, 11). Kaç kez Yes yazdırılır? (Azerbaycan sınavında program genellikle «evet» / «hayır» anlamındaki kelimeleri yazdırır.)
s = int(input())
t = int(input())
if s >= 8 and t % 3 != 0 or s < 0:
    print('Yes')
else:
    print('No')

Çözümü göster
and, or’dan önce yapıldığı için koşul şöyle okunur: (s >= 8 and t % 3 != 0) or s < 0.
• s < 0 olan çiftler hemen Yes verir: (−1, 3), (−5, −5), yani 2 çift.
• Diğerlerinde s ≥ 8 olmalı ve t 3’e bölünmemelidir: (9, 4) ✓, (9, 6) ✗ (6 % 3 = 0), (8, 8) ✓, (12, 9) ✗ (9 % 3 = 0), (10, 11) ✓, yani 3 çift.
• (2, 5), (0, 0), (7, 1) çiftlerinde s < 8 → No.
Toplam: 2 + 3 = 5.
Python
pairs = [(9, 4), (9, 6), (2, 5), (-1, 3), (8, 8),
         (0, 0), (12, 9), (-5, -5), (7, 1), (10, 11)]
count = 0
for s, t in pairs:
    if s >= 8 and t % 3 != 0 or s < 0:
        count = count + 1
print(count)
▸ Beklenen çıktı
5
Kontrol: burada bir for döngüsü (sonraki ders) aynı koşulu 10 çiftin her biri için denetler ve Yes cevaplarını sayar.
Python
x = 3
y = 5
if x * y > 15:
    print('#')
elif y ** x != 125:
    print('# #')
else:
    print('# # # #')
if y // x == 1:
    print('# # #')
▸ Beklenen çıktı
# # # #
# # #
Örnek 6’nın programı.
Örnek 6. Yazdırılan sembolleri saymak

Yukarıdaki program çalıştıktan sonra kaç tane # sembolü yazdırılır?
A) 1 B) 3 C) 4 D) 7 E) 10

Çözümü göster
Birinci koşul ifadesi: x · y = 15, 15 > 15 ✗; elif: 5 ** 3 = 125, 125 != 125 ✗ → else: # # # # (4 sembol).
İkinci, ayrı if: y // x = 5 // 3 = 1, 1 == 1 ✓ → # # # (3 sembol).
Toplam D) 7. İkinci if ayrı bir ifadedir ve birincinin sonucundan bağımsız olarak denetlenir.

Kalanla kurulan koşullar ve yazılı soru

Sınavın en sevdiği koşullar kalanla kurulur. Onları bir bakışta tanımalısın:

  • n % 2 == 0 — n çifttir; n % 2 == 1 — n tektir;
  • n % k == 0 — n, k’ye bölünür; n % k != 0 — bölünmez;
  • n % 10 == 7 — son basamak 7’dir; n // 10 % 10 == 3 — onlar basamağı 3’tür;
  • n % 3 == 0 and n % 5 == 0 — n, 15’e bölünür;
  • tekrarlanan örüntü: bir şey her k adımda bir tekrarlanıyorsa n % k, n’nin örüntüdeki yerini gösterir.

Son fikri yazılı bir soruda uygulayalım. Doğal sayılar 4 sütunlu bir tabloya «yılan» gibi yazılmıştır: tek numaralı satırlarda soldan sağa, çift numaralı satırlarda sağdan sola.

ABCD
1234
8765
9101112
16151413
…………
Örnek 7. Yazılı soru: sayı hangi sütunda?

Klavyeden girilen n doğal sayısının (1 ≤ n ≤ 1000) yukarıdaki tablonun hangi sütununda olduğunu bulan Python programını yazın. Örneğin: giriş 6 → çıkış C; 13 → D; 16 → A; 26 → B.

Çözümü göster
1) Örüntü her 8 sayıda bir tekrarlanır (iki satır = 8 hücre), bu yüzden r = n % 8 kalanına bakarız.
2) İlk iki satırdan her kalanın yerini okuruz: r = 1 → A, 2 → B, 3 → C, 4 → D, 5 → D, 6 → C, 7 → B, 0 → A (8, 16, 24, … A sütunundadır).
3) Gruplarız: A — r = 0 veya 1; B — 2 veya 7; C — 3 veya 6; D — kalan 4 ve 5.
4) Bunu bir if … elif … else zincirine çeviririz (program aşağıda). Kontrol: 26 % 8 = 2 → B ✓, 13 % 8 = 5 → D ✓.
Python
n = 26
r = n % 8
if r == 0 or r == 1:
    print('A')
elif r == 2 or r == 7:
    print('B')
elif r == 3 or r == 6:
    print('C')
else:
    print('D')
▸ Beklenen çıktı
B
Yazılı sorunun çözümü. Cevap kâğıdında ilk satır n = int(input()) olmalıdır; burada tarayıcıda çalışsın diye n = 26 yazdık. 6, 13 ve 16 ile de dene.

Yazılı soruda eksiksiz bir program yazılır: giriş (int(input())), hesaplama (burada kalan ve koşullar) ve çıkış (print). DİM, yazılı soruların puanlama ölçütlerini yayımlamaz; bu yüzden her bölümü açıkça yaz ve programını örnek tablodaki tüm durumlarla, ayrıca «sınır» değerleriyle (burada 8 ve 16 gibi kalanı 0 olan sayılarla) adım adım denetle.

Alıştırma

Bir trafik ışığı döngüsel çalışır: her 60 saniyenin ilk 30 saniyesinde yeşil (green), sonraki 5 saniyede sarı (yellow), kalan 25 saniyede kırmızı (red) yanar; sayım 0. saniyeden başlar. Program her an için rengi yazdırsın diye bir if … elif … else yaz (verilen anları dolaşan for döngüsü hazır).

Alıştırma · Python
for t in [10, 33, 50, 1000, 1234]:
    r = t % 60
    colour = '?'
    # choose the colour with if / elif / else
    print(t, colour)
▸ Beklenen çıktı
10 green
33 yellow
50 red
1000 red
1234 yellow
Alıştırma

Bir yıl 4’e bölünüp 100’e bölünmüyorsa ya da 400’e bölünüyorsa artık yıldır (366 gün). Program dört yıl için doğru cevabı yazdırsın diye leap değişkenindeki False yerine bu bileşik koşulu yaz.

Alıştırma · Python
for y in [2024, 2100, 2000, 2026]:
    leap = False  # write the condition here
    if leap:
        print(y, 'Yes')
    else:
        print(y, 'No')
▸ Beklenen çıktı
2024 Yes
2100 No
2000 Yes
2026 No

Önemli noktalar

  • Koşul, değeri True ya da False olan bir ifadedir: eşitlik ==, eşitsizlik !=; karakter dizileri kodlarına göre karakter karakter karşılaştırılır ('10' < '9').
  • Eksik if’te dal çalışabilir de çalışmayabilir de; tam if … else’te iki daldan mutlaka biri çalışır. Blok girintiyle belirlenir.
  • if … elif … else zincirinde yalnızca ilk doğru koşulun dalı çalışır; ayrı if ifadelerinin her biri kendi başına denetlenir.
  • Öncelik: aritmetik → karşılaştırma → not → and → or; emin değilsen parantez kullan.
  • Tek/çift, bölünebilme ve tekrarlanan örüntüler (sütunlar, günler, trafik ışığı) n % k kalanıyla dallara ayrılır.

Kendini test et

12 soru. Her doğru cevap XP kazandırır.

1 / 12
Python’da iki değerin eşit olup olmadığını hangi işleç denetler?