İçeriğe geç
Educora
Orta6–7. sınıf22 dk24 / 59

Dallanan algoritmalar

İki yönlü ve tek yönlü dallanma, iç içe ve bileşik koşullar (ve, veya, değil), akış şemaları ve sözde kodları; birden çok eşkenar dörtgenli DİM akış şemalarını yürütmek ve sonuçtan başlangıç değerini bulmak.

Kendini test et
Bu derste öğreneceklerin
  • İki yönlü ve tek yönlü dallanmayı ayırt etmek, bunları akış şeması ve sözde kodla yazmak
  • İç içe koşulları ve “ve”, “veya”, “değil” ile kurulmuş bileşik koşulları değerlendirmek
  • Birden çok eşkenar dörtgenli bir DİM akış şemasını verilen değerler için yürütmek
  • Sonuçtan başlangıç değerlerini bulmak ve dal koşullarını denetlemek

Metro turnikesi her seferinde aynı soruyu sorar: kartta yeterli para var mı? Varsa geçiş açılır ve ücret düşülür; yoksa ekranda “Bakiye yetersiz” yazar. Turnikenin algoritması doğrusal değildir: koşulun cevabına göre iki farklı yoldan biri seçilir. Böyle algoritmalara dallanan algoritmalar denir. DİM’in algoritma sorularında birden çok eşkenar dörtgenli akış şemaları sık verilir; 2025–2026’daki her sınavda Python sorularından iki üçü de doğrudan “Koşul deyimi” konusundaydı. İkisinin de anahtarı bu derstedir.

İki yönlü ve tek yönlü dallanma

Tanım
Dallanan algoritma

Bir koşulun doğru ya da yanlış olmasına göre iki farklı komut dizisinden birinin uygulandığı algoritma. Akış şemasında dallanmayı eşkenar dörtgen oluşturur: “Evet” ve “Hayır” çıkışları iki daldır, dallar sonra yeniden birleşir.

  • İki yönlü dallanma — iki dalda da işlem vardır: “koşul doğruysa A’yı yap, değilse B’yi yap”.
  • Tek yönlü dallanma — yalnızca bir dalda işlem vardır: “koşul doğruysa A’yı yap”; koşul yanlışsa algoritma hiçbir şey yapmadan devam eder.
İki yönlü dallanmaTek yönlü dallanmaa > bEvetHayırm = am = bx < 0EvetHayırx = −x
Solda iki sayının büyüğü, sağda bir sayının mutlak değeri
Text
eğer a > b ise
    m = a
değilse
    m = b
son

eğer x < 0 ise
    x = −x
son
Aynı iki dallanma sözde kodla. Python’da: if a > b: … else: … ve if x < 0: …
Örnek 1. İki yönlü ve tek yönlü dallanmayı yürütmek

Yukarıdaki akış şemalarına göre bulun:
1) a, b çiftleri için m: (7, 3), (−2, 5), (4, 4).
2) x = −6 ve x = 9 için x’in son değeri.
3) “n % 2 = 0” koşuluyla “çift” ya da “tek” yazdıran iki yönlü dallanma — n = 14, 7, 0, −3 için.

Çözümü göster
1) 7 > 3 — Evet → m = 7. −2 > 5 — Hayır → m = 5. 4 > 4 — Hayır (4, 4’ten büyük değildir) → m = b = 4; eşit sayılarda da cevap doğrudur.
2) −6 < 0 — Evet → x = −(−6) = 6. 9 < 0 — Hayır → hiçbir şey değişmez, x = 9. Bu algoritma mutlak değeri bulur.
3) 14 % 2 = 0 → çift; 7 % 2 = 1 → tek; 0 % 2 = 0 → çift (0 bir çift sayıdır!); −3 % 2 = 1 (Python’da 2’ye bölümden kalan her zaman 0 ya da 1’dir) → tek.

İç içe koşullar

Dallardan birinin içinde yeni bir eşkenar dörtgen olabilir; buna iç içe dallanma denir. Onunla iki değil, üç, dört ve daha çok durum ayırt edilir. Örneğin üç sayının en büyüğünü bulmak için önce a ile b karşılaştırılır, sonra kazanan c ile karşılaştırılır. Aynı iş art arda iki tek yönlü dallanmayla daha kolay yapılabilir: m = a; b > m ise m = b; c > m ise m = c. Bu “aday” yöntemi yazılı sorularda da çok işe yarar.

Örnek 2. Üç sayının en büyüğü

“Aday” algoritmasını (m = a; b > m ise m = b; c > m ise m = c) üç giriş için yürütün: (3, 9, 5), (8, 2, 8), (−1, −4, −7).

Çözümü göster
(3, 9, 5): m = 3 → 9 > 3 Evet, m = 9 → 5 > 9 Hayır → 9.
(8, 2, 8): m = 8 → 2 > 8 Hayır → 8 > 8 Hayır → 8 (eşitlik sorun çıkarmaz).
(−1, −4, −7): m = −1 → −4 > −1 Hayır → −7 > −1 Hayır → −1. Negatif sayılarda da çalışır, çünkü ilk aday “0” değil, a’dır.
D = b² − 4·a·c
burada:
  • Ddiskriminant: D > 0 — iki kök, D = 0 — bir kök, D < 0 — gerçek kök yok
  • a, b, ca·x² + b·x + c = 0 denkleminin katsayıları (a ≠ 0)

Üç durumu iki eşkenar dörtgen ayırır: önce D > 0, sonra D = 0

Başlaa, b, cD = b² − 4·a·cD > 0x₁ = (−b + √D)/(2a)x₂ = (−b − √D)/(2a)x₁, x₂EvetD = 0Hayırx = −b/(2a)xEvet“Gerçek kök yok”HayırBitir
İç içe dallanma: ikinci dereceden denklemin kökleri
Örnek 3. İkinci dereceden denklem akış şemasını yürütmek

Akış şemasını üç giriş için yürütün: 1) a = 1, b = −5, c = 6; 2) a = 1, b = 4, c = 4; 3) a = 2, b = 1, c = 3.

Çözümü göster
1) D = 25 − 24 = 1 > 0 → x₁ = (5 + 1)/2 = 3, x₂ = (5 − 1)/2 = 2.
2) D = 16 − 16 = 0 → D > 0 Hayır, D = 0 Evet → x = −4/2 = −2.
3) D = 1 − 24 = −23 → iki kez “Hayır” → “Gerçek kök yok”.
Her giriş akış şemasının farklı bir yolundan geçti; üç yolun hepsi denetlendi.

İkinci dereceden denklem akış şemasında “Hayır” dalı sonraki eşkenar dörtgene gider; bu bir merdiven yapısıdır: koşullar sırayla denetlenir, ilk doğru koşulun dalı çalışır, geri kalanlara bakılmaz. Python’da bu yapı if … elif … else ile yazılır. Merdivende koşulların sırası çok önemlidir: önce “puan ≥ 50”, sonra “puan ≥ 90” denetlenirse 95 puan alan öğrenci ilk dala düşer ve “pekiyi” notunu hiç alamaz. Kural: en dar koşul önce denetlenir.

Bileşik koşullar: ve, veya, değil

Basit koşullar mantıksal işlemlerle birleşince bir bileşik koşul oluşur. “A ve B” yalnızca iki koşul da doğruyken doğrudur; “A veya B” en az biri doğruyken doğrudur; “değil A” ise A’nın tersidir. Python’da bunlar and, or, not, veri tabanı sorgularında AND, OR, NOT olarak yazılır. İşlem sırası: önce “değil”, sonra “ve”, en son “veya”; emin değilsen parantez kullan.

ABA ve BA veya Bdeğil A
doğrudoğrudoğrudoğruyanlış
doğruyanlışyanlışdoğruyanlış
yanlışdoğruyanlışdoğrudoğru
yanlışyanlışyanlışyanlışdoğru
Mantıksal işlemlerin doğruluk tablosu
(yıl % 4 = 0 ve yıl % 100 ≠ 0) veya yıl % 400 = 0
burada:
  • %bölümden kalan; “yıl % 4 = 0”, yılın 4’e bölündüğü anlamına gelir
  • ≠eşit değil

Gregoryen takviminde artık yıl (366 gün) kuralı; bileşik koşulun klasik örneği

Örnek 4. Artık yıl

Koşulu 2024, 2026, 1900 ve 2000 yılları için denetleyin.

Çözümü göster
2024: 4’e bölünür (doğru) ve 100’e bölünmez (doğru) → parantez doğru → artık yıl.
2026: 4’e bölünmez → parantez yanlış; 400’e de bölünmez → normal yıl.
1900: 4’e bölünür ama 100’e de bölünür → parantez yanlış; 1900 % 400 = 300 → normal yıl.
2000: parantez yanlış (100’e bölünür), ama 2000 % 400 = 0 → “veya” doğru → artık yıl.

DİM soruları: birden çok eşkenar dörtgenli akış şeması

Böyle bir soruda akış şeması bir ağaca benzer; ama verilen girişler için yalnızca bir yol izlenir. Her eşkenar dörtgende koşulu o anki değerlerle hesapla, cevabı (“Evet” ya da “Hayır”) yaz ve yalnızca o oku izle; diğer dallara bakma. En çok hata kesin ve kesin olmayan eşitsizliklerde yapılır: 60 > 60 yanlıştır, 60 ≥ 60 ise doğrudur.

Başlaa = 24b = 40a + b > 60a·2 = ba > bEvetHayıra = b / 5a = a − ba = b − a / 4a = a·2HayırEvetHayırEvetaBitir
Birden çok eşkenar dörtgenli DİM tarzı akış şeması
Örnek 5. Algoritma yürütüldükten sonra a kaç olur?

1) Akış şemasına göre yazdırılan a değerini bulun.
A) 16 B) 48 C) 34 D) 8 E) 30
2) Başlangıç değerleri a = 20, b = 40 olsaydı cevap ne olurdu?

Çözümü göster
1) 24 + 40 = 64 > 60 — Evet, sağ dal.
24·2 = 48 = 40? — Hayır → a = 40 − 24 / 4 = 40 − 6 = 34. Cevap C. Dikkat: bu yolda a > b eşkenar dörtgeni hiç denetlenmez.
2) 20 + 40 = 60 > 60? — Hayır (kesin eşitsizlik!), sol dal.
20 > 40? — Hayır → a = 40 / 5 = 8. Koşulu “60 ≥ 60” diye okuyan öğrenci sağa gider, 20·2 = 40 → a = 40 bulur ve yanılır.
Python
a = 24
b = 40
if a + b > 60:
    if a * 2 == b:
        a = a * 2
    else:
        a = b - a / 4
else:
    if a > b:
        a = a - b
    else:
        a = b / 5
print(a)
▸ Beklenen çıktı
34.0
Aynı akış şeması Python’da. Eşkenar dörtgendeki =, Python’da == olarak yazılır. / bölmesinin sonucu her zaman ondalıklıdır, bu yüzden 34.0 yazdırılır. Sınav programlarında değerler a = int(input()) ile okunur.

Ters problem: sonuçtan başlangıç değeri

DİM bazen algoritmayı tersinden sorar: sonuç bilinir, a’nın başlangıç değeri ise “?” olarak verilir. Doğrusal algoritmada başlangıç değerine x deriz, her adımı x cinsinden yazarız ve bir denklem elde ederiz. Dallanan algoritmada her dal için ayrı bir denklem çözülür, sonra bulunan kökün gerçekten o dala düştüğü denetlenir.

  1. 1
    Adlandır

    Bilinmeyen başlangıç değerine x de.

  2. 2
    İfade et

    Her komuttan sonra değişkenleri x cinsinden yaz (sayılar yerine ifadelerle bir izleme tablosu).

  3. 3
    Eşitle

    Sonucun ifadesini verilen değere eşitle ve denklemi çöz.

  4. 4
    Denetle

    Her kökü algoritmada yerine koy: dal koşulları ve kısıtlar (sıfıra bölme, doğal sayı) sağlanıyor mu?

  5. 5
    Sorulanı cevapla

    Soru köklerin toplamını, çarpımını ya da en büyüğünü soruyor olabilir; soruyu yeniden oku.

Örnek 6. Doğrusal algoritmada başlangıç değerlerinin toplamı

Algoritma: a = ?; b = a + 4; a = a · b; a = a − 2 · b. Yürütmeden sonra a = 7 oluyor. a’nın alabileceği başlangıç değerlerinin toplamını bulun.
A) 8 B) −2 C) 2 D) −15 E) 3

Çözümü göster
a = x → b = x + 4 → a = x(x + 4) = x² + 4x → a = x² + 4x − 2(x + 4) = x² + 2x − 8.
x² + 2x − 8 = 7 → x² + 2x − 15 = 0 → x = 3 ya da x = −5.
Denetim: x = 3: b = 7, a = 21, a = 21 − 14 = 7 ✓; x = −5: b = −1, a = 5, a = 5 + 2 = 7 ✓.
Toplam: 3 + (−5) = −2, cevap B.
Örnek 7. Dallanan algoritmada ters problem

Algoritma: a = ?; a > 10 ise b = a − 10, değilse b = a + 4; b yazdırılır.
1) Çıktı 12. a’nın başlangıç değerlerinin toplamını bulun.
2) Çıktı 20. a kaç olabilir?

Çözümü göster
1) “Evet” dalı: a − 10 = 12 → a = 22; 22 > 10 ✓.
“Hayır” dalı: a + 4 = 12 → a = 8; 8 > 10 yanlıştır, yani a gerçekten “Hayır” dalına düşer ✓.
Toplam: 22 + 8 = 30.
2) “Evet”: a = 30, 30 > 10 ✓. “Hayır”: a = 16, ama 16 > 10 doğrudur; böyle bir a “Evet” dalına gider ve 6 verir ✗.
Cevap: yalnızca a = 30. Denetim adımı olmasa 16 da yanlışlıkla yazılırdı.

Dallanma, algoritmaya “seçme” gücü verir. Sonraki adım aynı komutların tekrarlanmasıdır; bu, «Döngülü algoritmalar ve izleme tablosu» dersinin konusudur. Döngünün koşulu da bu dersteki gibi bir eşkenar dörtgenle denetlenir; bu yüzden eşkenar dörtgenleri akıcı okumak orada da gerekecek.

Alıştırma

year = 2100. Artık yıl kuralını bileşik bir koşulla yazın: artık yılsa 366, değilse 365 yazdırın.

Alıştırma · Python
year = 2100
# print 366 for a leap year, otherwise 365
▸ Beklenen çıktı
365

Önemli noktalar

  • Dallanan algoritmada koşulun cevabına göre iki yoldan biri seçilir; akış şemasında bunu eşkenar dörtgen yapar.
  • İki yönlü dallanmada iki dalda da, tek yönlü dallanmada yalnızca bir dalda işlem vardır.
  • “A ve B” ikisi de doğruyken, “A veya B” en az biri doğruyken doğrudur; “değil (a > b)” ⇔ a ≤ b.
  • DİM akış şemasında bir giriş için yalnızca bir yol izlenir: her eşkenar dörtgeni o anki değerlerle denetle, kesin eşitsizliklere dikkat et.
  • Ters problemde başlangıç değerine x de, denklem kur, her kökü dal koşullarıyla denetle; köklerin toplamını Vieta teoremiyle bul.

Kendini test et

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

1 / 12
Koşul sağlanmadığında hiçbir işlemin yapılmadığı dallanmaya ne denir?