Kod hata ayıklama alışkanlığı, sorunu rastgele kod değiştirerek değil, düzenli bir kanıt toplama süreciyle geliştirilir. Bunun için hatayı yeniden üretir, beklenen sonuç ile gerçek sonucu karşılaştırır, hata mesajını parçalara ayırır ve küçük denemeleri tek bir değişkeni değiştirerek yaparsın.
Her değişiklikten sonra sonucu yeniden test etmek, hangi müdahalenin neye yol açtığını görmeni sağlar. Böylece hata ayıklama, tahmin yürütülen bir işlem olmaktan çıkar ve gözlem, hipotez, küçük değişiklik ve doğrulama döngüsüne dönüşür.
Hata ayıklama, tahmin ederek kod değiştirmek değil, gözlenebilir kanıtlarla olası nedenleri daraltmaktır.
Hata ayıklama alışkanlığı kanıt toplamaya nasıl dayanır?
Hata gördüğünde ilk soru “Hangi satırı değiştirmeliyim?” olmamalıdır. Önce sorunu hangi girdilerle ve hangi adımlardan sonra yeniden üretebildiğini belirle. Aynı işlemi tekrar yaptığında aynı hata ortaya çıkıyorsa, inceleyebileceğin daha somut bir durum oluşur. Hatanın oluştuğu satırı, kullanılan değerleri ve programın o noktaya kadar ne yaptığını not etmek, sorunu daraltmaya yardımcı olur.
Beklenen ve gerçek sonucu karşılaştırmak da önemli bir kanıttır. Programın belirli bir değeri üretmesini beklerken farklı bir değer üretmesi, problemin hangi işlemden sonra başladığına dair ipucu verir. Hata mesajını okurken yalnızca son satıra bakma; mesajdaki hata türünü, satır numarasını ve ilgili işlemi ayrı ayrı değerlendir. Bir mesaj, doğrudan çözümü vermese bile incelemeye nereden başlayacağını gösterebilir.
Sonraki adım, olası nedeni açıklayan küçük bir hipotez kurmaktır. Örneğin yanlış değerin bir değişkenden geldiğini düşünüyorsan, bütün programı değiştirmek yerine yalnızca o değişkeni gözlemle. print() ile ekrana ara değerleri yazdırabilir, böylece değerin hangi adımda beklenmedik hâle geldiğini görebilirsin. Aynı anda birden fazla satırı değiştirirsen hangi değişikliğin sonucu etkilediğini ayırt etmek zorlaşır.
Sorunu küçük adımlara bölmek ve her adımda neden ile sonucu ilişkilendirmek, dilden bağımsız algoritmik düşünme testi gibi çalışmalarda kullanılan problem çözme yaklaşımıyla da örtüşür. Amaç yalnızca hatayı gidermek değil, hatanın hangi koşulda ortaya çıktığını açıklayabilmektir.
Sözdizimi, çalışma zamanı ve mantık hataları nasıl ayrılır?

Hatanın türünü doğru adlandırmak, doğru kontrol noktasını seçmeyi kolaylaştırır. Sözdizimi hatasında program kodu okumaya veya çalıştırmaya başlamadan önce durabilir. Çalışma zamanı hatası, kod yürütülürken geçersiz bir işlemle karşılaşıldığında ortaya çıkar. Mantık hatasında ise program tamamlanır, ancak sonuç beklenenden farklı olur.
| Hata türü | Ne zaman fark edilir | Kısa örnek | İlk kontrol |
|---|---|---|---|
| Sözdizimi hatası | Program çalıştırılmadan önce | if puan > 50 satırında iki noktanın eksik olması |
Parantez, iki nokta, tırnak ve anahtar kelime yazımını kontrol et |
| Çalışma zamanı hatası | Kod yürütülürken | 10 / 0 işlemi veya geçersiz bir liste konumu |
Hatanın oluştuğu satırdaki değerleri ve sınırları incele |
| Mantık hatası | Program çalışıp sonuç ürettikten sonra | Toplamda aynı sayının iki kez kullanılması | Beklenen sonucu, işlemleri ve kullanılan değişkenleri karşılaştır |
Aşağıdaki örnekte kod çalışır, ancak toplam hesabında aynı liste elemanı iki kez kullanıldığı için mantık hatası oluşur:
sayilar = [3, 7]
toplam = sayilar[0] + sayilar[0]
print(toplam)
Beklenen çıktı 10, gerçek çıktı ise 6 olur. Burada parantez veya yazım yapısı bozuk değildir; çalışma sırasında da geçersiz bir işlem yapılmaz. Sorun, toplamı oluşturan değerlerin yanlış seçilmesidir. Bu nedenle mantık hatalarında yalnızca hata mesajı aramak yerine, her işlemin beklenen sonuca nasıl katkı yaptığını incelemek gerekir.
Beş adımlı teşhis döngüsü nasıl uygulanır?

Hata ayıklamayı rastgele satırlar değiştirmek yerine kanıt toplayan bir döngü olarak uygulayabilirsin. Her adımda tek bir soruya odaklanmak, hatanın kaynağını daha anlaşılır hâle getirir.
- Hatayı aynı girdilerle yeniden üret. Önce programı, hatanın ortaya çıktığı girdilerle tekrar çalıştır. Hata her çalıştırmada oluşmuyorsa kullanılan veri, işlem sırası veya başlangıç değerleri gibi koşulları not et.
- Beklenen sonuç ile gerçek sonucu karşılaştır. Programın hangi sonucu üretmesi gerektiğini açıkça yaz. Ardından aldığı sonucu bununla karşılaştır. Böylece yalnızca “çalışmadı” demek yerine, farkın hangi değerde veya aşamada başladığını görebilirsin.
- Hata mesajını konum, işlem ve değer açısından yorumla. Mesajdaki dosya ve satır bilgisi hatanın görüldüğü konumu gösterir. Hatanın hangi işlem sırasında oluştuğunu ve ilgili değişkenlerin o andaki değerlerini ayrıca incele. Hata mesajı çoğu zaman doğrudan nedeni değil, sorunun fark edildiği noktayı gösterir.
- Tek değişkenli küçük bir deneme yap. Şüphelendiğin tek bir satırı, koşulu veya değeri değiştirerek yeniden çalıştır.
printya da benzeri gözlem noktaları, belirli bir soruyu yanıtlamak için kullanılmalıdır. Uygun değişkeni işlemin öncesinde ve sonrasında göstermek, değerin nerede beklenmedik biçimde değiştiğini ortaya çıkarabilir. Aynı anda birden fazla değişiklik yapmak ise sonucu hangi değişikliğin etkilediğini belirsizleştirir. - İlk senaryoyu ve yakın bir ikinci senaryoyu yeniden test ederek doğrula. Düzeltmeyi önce hatanın görüldüğü girdilerle, ardından benzer ama farklı bir girdilerle dene. İki testte de beklenen sonuç alınmıyorsa düzeltme henüz doğrulanmış sayılmaz.
Programlama bilgisi ile algoritmik düşünmeyi ayrı ayrı değerlendirmek için programlama ve algoritmik düşünme bilgi testlerini inceleyebilirsin.
Yanlış toplam örneğinde hata nasıl izlenir?
Aşağıdaki kod çalışır, ancak toplamı yanlış hesaplar. Sorun sözdiziminde değil, döngü içindeki atama işlemindedir.
prices = [10, 20, 30]
total = 0
for price in prices:
print("İşlem öncesi:", total, "Eklenen:", price)
total = price
print("İşlem sonrası:", total)
print("Toplam:", total)
Beklenen toplam 60 olmasına rağmen gerçek çıktı 30 olur:
İşlem öncesi: 0 Eklenen: 10
İşlem sonrası: 10
İşlem öncesi: 10 Eklenen: 20
İşlem sonrası: 20
İşlem öncesi: 20 Eklenen: 30
İşlem sonrası: 30
Toplam: 30
Gözlem mesajları sorunu gösterir: total her yinelemede önceki değere yeni fiyatı eklemek yerine doğrudan yeni fiyata eşitlenir. Bu nedenle 10, ardından 20, son olarak 30 yazılır ve değerler birikmez.
Beş adımlı döngü bu örnekte şöyle işler: Aynı listeyle hata yeniden üretilir, 30 ile beklenen 60 karşılaştırılır, gözlem çıktısındaki değişim yorumlanır, yalnızca ilgili satır küçük bir denemeyle değiştirilir ve sonuç yeniden test edilir.
prices = [10, 20, 30]
total = 0
for price in prices:
print("İşlem öncesi:", total, "Eklenen:", price)
total += price
print("İşlem sonrası:", total)
print("Toplam:", total)
Yalnızca total = price satırının total += price olarak değiştirilmesiyle düzeltilmiş son çıktı Toplam: 60 olur.
Son olarak yakın bir ikinci senaryoyla doğrulama yapabilirsin:
prices = [4, 6, 10]
total = 0
for price in prices:
total += price
print("Toplam:", total)
Bu testte beklenen çıktı Toplam: 20 şeklindedir. İki farklı listeyle doğru sonuç alınması, düzeltmenin yalnızca ilk örneğe özel olmadığını kontrol etmeye yardımcı olur.
Hata ayıklama kontrol listesi nasıl kullanılır?
Hata ayıklama sürecini tahminlere bırakmamak için her denemede aynı sırayı izleyebilirsin. Aşağıdaki kontrol listesi, hatayı yeniden üretmeyi, kanıt toplamayı ve yaptığın değişikliğin sonucunu doğrulamayı kolaylaştırır.
- Hatayı aynı girdilerle yeniden üret.
- Kullanılan girdiyi ve beklenen sonucu yaz.
- Gerçek sonucu kaydet.
- Hata mesajını ve ilgili satırı incele.
- Hesaplamada veya koşulda kullanılan ilgili değişkeni kontrol et.
- Şüphelendiğin adıma
printile tek bir hedefli gözlem noktası ekle. - Yalnızca bir değişiklik yap.
- Aynı senaryoyu yeniden çalıştır.
- Yakın bir ikinci senaryoyla doğrula.
- Geçici gözlem satırlarını temizle.
- Bulduğun nedeni ve uyguladığın çözümü kısa biçimde not et.
Program hata mesajı vermiyor ama sonuç yanlışsa özellikle beklenen ve gerçek çıktıyı karşılaştır. Bu iki sonucu yan yana yazmak, sorunun hangi adımda ortaya çıktığını görmeyi kolaylaştırır. Hata mesajı bulunmadığında ara değerleri incelemek ve tek değişiklikten sonra aynı senaryoyu yeniden çalıştırmak daha da önem kazanır.
Sık Sorulan Sorular
Program hata mesajı vermiyor ama sonuç yanlışsa ne yapmalıyım?
Önce kullandığın girdiyi, beklenen sonucu ve gerçek sonucu yaz. Ardından hesaplamadaki ara değerlerden birini hedefli bir print satırıyla kontrol et. Tek bir değişiklik yapıp aynı girdilerle yeniden çalıştır, sonra benzer ama farklı bir girdide sonucu doğrula.
print gözlem noktası olarak nasıl kullanılmalı?
print komutunu rastgele yerlere çoğaltmak yerine, şüphelendiğin işlemin hemen öncesine veya sonrasına ekle. Değişken adını ve değerini anlaşılır bir etiketle yazdır. İnceleme tamamlandığında geçici print satırlarını kaldır.
Aynı anda birden fazla değişiklik yapmak neden sorun oluşturur?
Birden fazla satırı aynı anda değiştirirsen hangi değişikliğin sonucu etkilediğini ayırt etmek zorlaşır. Bu nedenle önce tek bir varsayımı sınayan küçük bir değişiklik yap, aynı senaryoyu çalıştır ve sonucu karşılaştır.
Sözdizimi, çalışma zamanı ve mantık hatalarını nasıl ayırt edebilirim?
Sözdizimi hatası kod çalışmadan önce yazım kurallarıyla ilgili bir sorun olduğunu gösterir. Çalışma zamanı hatası program çalışırken ortaya çıkar. Mantık hatasında program çalışır, ancak ürettiği sonuç beklenenden farklıdır. Hata mesajı ve yanlış çıktı, hangi türü incelemen gerektiğine dair ilk ipuçlarını verir.
Bu listeyi düzenli kullandığında hata ayıklama, tahmin yerine tekrarlanabilir bir teşhis süreciyle desteklenebilir.