"Bug" nereden geliyor?
Programdaki hatalara İngilizcede bug (böcek) denir. Hataları bulup düzeltme işine de hata ayıklama (debug) adı verilir. Her programcı hata yapar; iyi programcıyı ayıran, hatayı hızlı ve sistemli biçimde bulabilmesidir.
Hata türleri
- Yazım hatası: Komut yanlış yazılmıştır, program hiç çalışmaz. Metin tabanlı dillerde eksik parantez veya noktalı virgül buna örnektir.
- Mantık hatası: Program çalışır ama yanlış sonuç verir. Örneğin puanı artırmak yerine azaltan bir komut.
- Sıralama hatası: Komutlar doğru ama sırası yanlıştır. Kuklayı hareket ettirdikten sonra başlangıç noktasına götürmek gibi.
Sistemli hata ayıklama adımları
- Hatayı tekrarla: Sorun hangi durumda ortaya çıkıyor? Her seferinde mi, bazen mi?
- Beklenen ile olanı karşılaştır: Ne olmasını bekliyordum, ne oldu?
- Alanı daralt: Kodun parçalarını tek tek çalıştırarak sorunlu bölümü bul.
- Değişkenleri izle: Scratch'te değişkenleri sahnede göstererek değerlerin nasıl değiştiğini takip et.
- Tek bir değişiklik yap ve test et: Aynı anda birçok şeyi değiştirirsen neyin işe yaradığını anlayamazsın.
Örnek hata
yeşil bayrağa tıklandığında
sürekli tekrarla
10 adım git
puan değişkenini 0 yap
Puan hiç sıfırlanmıyor. Neden? Çünkü sürekli tekrarla hiç bitmediği için altındaki komuta asla sıra gelmez. Çözüm: sıfırlama komutunu döngünün üstüne taşımak.
Lastik ördek yöntemi
Kodunuzu satır satır, masanızdaki bir oyuncağa anlatıyormuş gibi yüksek sesle açıklayın. Anlatırken hatayı çoğu zaman kendiniz fark edersiniz. Bir arkadaşınıza anlatmak da aynı işe yarar.
Konuyu pekiştir
3 soruluk kısa test. Bir seçeneğe dokunduğunuzda doğru cevap ve açıklaması görünür.
-
Program çalışıyor ama yanlış sonuç veriyorsa bu hangi hata türüdür?
Mantık hatasında program çalışır ama sonuç yanlıştır.
-
"sürekli tekrarla" bloğunun altındaki komut neden hiç çalışmaz?
Sonsuz döngüden çıkılmadığı için sıra alttaki komuta gelmez.
-
Hata ayıklarken neden aynı anda tek bir değişiklik yapılmalıdır?
Tek değişiklik, sonucun nedenini açıkça gösterir.