Hata Ayıklama

Beklenen ile gerçek sonucu karşılaştırıp hatayı sistemli biçimde bulup düzeltmeyi öğren.

DERS PUSULASI

Bu sayfayı ne için kullanacaksın?

Ana fikir

Hata ayıklama, bir program ya da robot beklediğimiz gibi çalışmadığında sorunun nerede olduğunu sabırla bulup yalnız o adımı düzeltme işidir.

Üretilecek kanıt

Aşağıdaki sözde kodda bir mantık hatası var. Bir karakterin beşgen (5 kenar) çizmesi isteniyor. Başla 6 kez tekrarla 1 adım ilerle 72 derece sağa dön Bitir Görev: Beklenen sonucu bir cümleyle yaz. Bu kod ekranda hangi şekli çizer? (İpucu: 360 ÷ 72 = ?) İlk farkın hangi satırda olduğunu göster. Yalnız o tek satırı değiştirerek düzelt. Cevabını bir yetişkine…

Kontrol tuzağı

Hata ararken rastgele değişiklik yapmak çoğu zaman işi büyütür. Bunun yerine aşağıdaki sırayı izlemek çok daha güvenli. Beklenen sonucu yaz. Program tam olarak ne yapmalıydı? Önce bunu bir cümleyle söyle. Gözlemle. Program gerçekte ne yaptı? Ekrana, robota ya da hata mesajına dikkatle bak. Küçült. Programı küçük…

Sonraki bağlantı

Birden Fazla Çözümü Karşılaştırmak: Aynı problemi çözen farklı algoritmaları hız, adım sayısı ve açıklık açısından karşılaştırmayı öğreneceğiz.

Modül kaynakları: Python Tutorial · Arduino Learn

SeviyeBaşlangıç
Yaş10–16
Süre30–45 dk
Ön koşulAkış Şemaları
İçerikStandart ders · 1.444 kelime
Son güncelleme

Bir cümlelik özet

Hata ayıklama, bir program ya da robot beklediğimiz gibi çalışmadığında sorunun nerede olduğunu sabırla bulup yalnız o adımı düzeltme işidir.

Neden önemli?

Kod yazan herkes hata yapar. Ben de bir şeyi ilk denememde çalıştıramadığımda önce şaşırıyordum; sonra fark ettim ki asıl beceri hatasız yazmak değil, hatayı bulabilmek. Bir robot yanlış yöne dönerse ya da bir döngü eksik çizerse, bunu “başarısızlık” olarak görmek yerine bir bilmece gibi düşünebiliriz.

Hata ayıklamayı öğrenmek seni programlamada bağımsız yapar. Çünkü artık takıldığında “çalışmıyor, sildim” demek yerine “şurada duruyor, şunu deneyeyim” diyebilirsin. Bu ders, bunu yapmanın sistematik bir yolunu gösteriyor.

Kısa tanım: Hata ayıklama (debugging), bir algoritmadaki veya koddaki hatayı bulup düzeltme sürecidir.

Sistematik hata ayıklama yöntemi

Hata ararken rastgele değişiklik yapmak çoğu zaman işi büyütür. Bunun yerine aşağıdaki sırayı izlemek çok daha güvenli.

  1. Beklenen sonucu yaz. Program tam olarak ne yapmalıydı? Önce bunu bir cümleyle söyle.
  2. Gözlemle. Program gerçekte ne yaptı? Ekrana, robota ya da hata mesajına dikkatle bak.
  3. Küçült. Programı küçük parçalara ayır. Hepsini birden değil, tek bir bölümü düşün.
  4. Tek tek test et. Her adımı ayrı ayrı çalıştır ve çıktısını kontrol et.
  5. İlk farkı bul. Beklenenle gerçek sonucun ilk kez ayrıştığı noktayı işaretle.
  6. Yalnız o adımı değiştir. Tek bir değişiklik yap, tekrar dene. Düzeldiyse harika; düzelmediyse geri al ve başka bir şey dene.

Bu yöntemin kalbi şu: aynı anda tek bir şeyi değiştir. Böylece neyin işe yaradığını gerçekten anlarsın.

Örnek: Kare yerine üçgen çizen döngü

Bir karakterin kare çizmesini istiyoruz ama ekranda üçgen beliriyor.

Beklenen: Dört kenarlı bir kare
Gözlem: Üç kenar çizilip duruyor
Küçült: Sadece tekrar bölümüne bak
İlk fark: Tekrar sayısı 3 yazılmış
Düzeltme: Tekrar sayısını 4 yap

İlk fark “tekrar sayısı” satırında ortaya çıkıyor. O yüzden tüm kodu silmemize gerek yok; sadece o tek satırı düzeltiyoruz.

Örnek: Yanlış eşik değeri

Bir robot, engele 10 santimden yakınken durmalı. Ama robot engele çarpana kadar hiç durmuyor.

Beklenen: Mesafe 10 cm'den küçükse dur
Gözlem: Robot hiç durmuyor
Küçült: Sensör okuması doğru mu? Evet, 8 cm okuyor
İlk fark: Koşulda "> 10" yazılmış, "< 10" olmalıydı
Düzeltme: Karşılaştırmayı düzelt

Burada sensör çalışıyor, motor çalışıyor. Tek sorun karşılaştırmanın yönü. Bunu bulmanın yolu, her parçayı ayrı ayrı kontrol etmekten geçiyor.

Hata türleri

Hatalar hep aynı görünmez. Üç ana türü tanımak, nereye bakacağını bilmeni kolaylaştırır.

Sözdizimi hatası

Yazım kuralına uymayan koddur. Bir noktalı virgülü unutmak, parantezi kapatmamak gibi. Bilgisayar genellikle bunu kendi söyler ve bir hata mesajı verir. Örneğin Python’da iki nokta üst üste unutmak böyle bir hatadır.

Mantık hatası

Kod çalışır, hata mesajı vermez ama yanlış sonucu üretir. Kare yerine üçgen çizen döngü buna örnektir. Bunlar en sinsi hatalardır çünkü bilgisayar sana “burada bir yanlış var” demez; sonucu senin fark etmen gerekir.

Çalışma zamanı hatası

Program başlar, bir süre çalışır, sonra bir noktada durur. Örneğin bir sayıyı sıfıra bölmeye çalışmak ya da olmayan bir dosyayı açmak. Kod yazımı doğrudur ama çalışırken beklenmedik bir durumla karşılaşır.

Çalışma zamanı hatası tablosu
TürNe zaman fark edilirÖrnek
SözdizimiProgram başlamadanKapatılmamış parantez
MantıkSonuç yanlış oluncaÜçgen çizen kare döngüsü
Çalışma zamanıÇalışırken duruyorSıfıra bölme

Robotikte hata nereden gelir?

Robotlarda bir sorun her zaman koddan kaynaklanmaz. Dört ana kaynağı sırayla kontrol etmek iyi bir alışkanlıktır.

Ben bir robotta “kod bozuk” diye saatlerce arayıp sonunda sorunun gevşek bir kablo olduğunu görünce şunu öğrendim: önce en basit ve en fiziksel şeyleri kontrol et.

Sözde kod: Robotu adım adım test et

Başla
Beklenen davranışı bir cümleyle yaz
Sensörü tek başına oku ve değeri göster
Eğer sensör değeri mantıklı değilse
  bağlantıyı ve gücü kontrol et
Motoru tek başına kısa süre çalıştır
Eğer motor beklendiği gibi dönmüyorsa
  güç ve mekanik parçaları kontrol et
Kod mantığını en sona bırak ve tek tek test et
Bitir

Python: Basit bir mantık hatasını görünür kılmak

Kare çizen bir döngüde neyin olduğunu görmek için her adımda print kullanabiliriz. Bu, gözlem yapmanın en kolay yollarından biridir.

kenar_sayisi = 3  # Hata: kare için 4 olmalı

for adim in range(kenar_sayisi):
    print("Kenar çiziliyor:", adim + 1)
    # ilerle ve 90 derece dön
print("Toplam kenar:", kenar_sayisi)

Çıktıyı görünce “Toplam kenar: 3” yazdığını fark ederiz ve ilk farkı hemen buluruz. kenar_sayisi değerini 4 yapmak sorunu çözer.

Mini uygulama

Aşağıdaki sözde kodda bir mantık hatası var. Bir karakterin beşgen (5 kenar) çizmesi isteniyor.

Başla
6 kez tekrarla
  1 adım ilerle
  72 derece sağa dön
Bitir

Görev:

  1. Beklenen sonucu bir cümleyle yaz.
  2. Bu kod ekranda hangi şekli çizer? (İpucu: 360 ÷ 72 = ?)
  3. İlk farkın hangi satırda olduğunu göster.
  4. Yalnız o tek satırı değiştirerek düzelt.

Cevabını bir yetişkine ya da arkadaşına anlat: “Beklenen şuydu, gözlem şuydu, ilk fark şurada, düzeltmem bu.”

Uygulama laboratuvarı: Hata Ayıklama

Hata Ayıklama konusunu kalıcı hâle getirmenin en iyi yolu, kavramı küçük ve ölçülebilir bir göreve dönüştürmektir. Bu çalışmada Sistematik hata ayıklama yöntemi ile Örnek: Yanlış eşik değeri arasındaki ilişkiyi kullanarak açık bir algoritma, sözde kod ve test tablosu hazırlayacaksın. Amaç yalnız sonucun çalışması değil; hangi kararı neden verdiğini, neyi test ettiğini ve hangi durumda tasarımı değiştireceğini açıklayabilmektir.

Görev senaryosu

Şu senaryoyu ele al: okul çantasını eksiksiz hazırlayan bir kontrol düzeni. Dersin ana hedefi “Beklenen ile gerçek sonucu karşılaştırıp hatayı sistemli biçimde bulup düzeltmeyi öğren” olduğuna göre önce problemi tek cümleyle tanımla. Ardından sistemin alacağı girdiyi, uygulayacağı işlemi ve üreteceği çıktıyı ayrı ayrı yaz. Bilmediğin bir ayrıntı varsa onu varsayım olarak işaretle; varsayımı gerçek bilgi gibi kullanma.

  1. Planla: Başlangıç durumunu, beklenen sonucu ve kullanacağın kavramları yaz.
  2. En küçük sürümü kur: Yalnız temel davranışı çalıştır; süsleme ve ek özellikleri sonraya bırak.
  3. Üç test hazırla: Normal bir durum, sınırda bir durum ve hatalı ya da beklenmeyen bir durum seç.
  4. Sonucu kaydet: Beklenen ile gerçekleşeni yan yana yaz; fark varsa olası nedeni belirt.
  5. Tek değişiklik yap: Aynı anda birçok şeyi değiştirmek yerine bir kararı düzeltip testi yeniden çalıştır.

Başarı ölçütleri

“Hata Ayıklama” çalışmasını bitirdiğinde ürünü bir arkadaşına yalnız bölüm başlıklarıyla anlat. Arkadaşın okul çantasını eksiksiz hazırlayan bir kontrol düzeni senaryosundaki adımları ve karar nedenlerini takip edebiliyorsa anlatım yeterince açıktır. Anlaşılmayan noktayı daha fazla terim ekleyerek değil, Sistematik hata ayıklama yöntemi ve Örnek: Yanlış eşik değeri ilişkisini daha küçük adımlara bölerek düzelt.

Sık yapılan hatalar

Her şeyi silmek

Bir şey çalışmayınca tüm kodu silip baştan yazmak cazip gelir. Ama böyle yaparsan hatanın ne olduğunu asla öğrenemezsin ve aynı hatayı tekrar yaparsın. Önce hatayı bul.

Tek seferde çok değişiklik yapmak

Aynı anda üç şeyi değiştirip yeniden çalıştırırsan, düzeldiğinde hangisinin işe yaradığını bilemezsin. Her seferinde tek bir şey değiştir.

Hata mesajını okumamak

Bilgisayarın verdiği hata mesajı bir ceza değil, bir ipucudur. Genellikle hangi satırda ve ne tür bir sorun olduğunu söyler. Mesajı okumadan çözüm aramak, haritayı açmadan yol sormak gibidir.

Güvenlik notu

Robotik parçalarını (kablo, pil, motor) kontrol ederken sistemin gücünü önce kapat. Gevşek bir kabloyu ya da sıkışmış bir tekerleği güç açıkken düzeltmeye çalışma; parmağın motora kapılabilir ya da kısa devre olabilir. Pil, motor ve kablolarla ilgili tüm kontrolleri bir yetişkinle birlikte yap.

Ders özeti

Kontrol soruları

  1. Hata ayıklama nedir? Bir cümleyle tanımla.
  2. Sistematik yöntemin altı adımını sırayla yaz.
  3. Kare yerine üçgen çizen bir döngüdeki hata hangi türdendir: sözdizimi, mantık, yoksa çalışma zamanı mı?
  4. Bir robotun motoru zayıf dönüyorsa ilk hangi iki kaynağı kontrol edersin?
  5. “Tek seferde çok değişiklik yapmak” neden kötü bir alışkanlıktır?

Cevaplar

  1. Bir algoritmadaki veya koddaki hatayı bulup düzeltme sürecidir.
  2. Beklenen sonucu yaz → gözlemle → küçült → tek tek test et → ilk farkı bul → yalnız o adımı değiştir.
  3. Mantık hatasıdır. Kod çalışır ve hata mesajı vermez, ama yanlış şekli üretir.
  4. Güç (piller/voltaj) ve mekanik (sıkışmış parça) kaynaklarını; ayrıca bağlantıyı da kontrol etmek iyi olur.
  5. Çünkü düzeldiğinde hangi değişikliğin işe yaradığını anlayamazsın; hatayı gerçekten çözmüş sayılmazsın.

Kaynak ve doğrulama notu

“Hata Ayıklama” dersi için doğrulama odağı Sistematik hata ayıklama yöntemi ile Örnek: Yanlış eşik değeri arasındaki ilişkinin örnekler üzerinde tutarlı çalışmasıdır. Bu dersteki algoritmalar, örnek girdiler elle izlenerek ve beklenen çıktılarla karşılaştırılarak doğrulanmıştır. Sözde kod, belirli bir programlama diline bağlı kalmadan düşünme sırasını görünür kılmak için kullanılır.

Sonraki ders

Birden Fazla Çözümü Karşılaştırmak: Aynı problemi çözen farklı algoritmaları hız, adım sayısı ve açıklık açısından karşılaştırmayı öğreneceğiz.

Quiz’i BaşlatAlgoritmalar bölümüne dön
SORU HAVUZU

Bu dersi 10 soruyla pekiştir

Bu ders için 20 soruluk bir havuz hazırlandı. Her başlangıçta 10 soru ve seçenekler yeniden karıştırılır.