Ana Sayfa · Akademi · Robotik ve Kodlama · Scratch ile Programlama · Hata Ayıklama ve Test

Hata Ayıklama ve Test

Blokları izleyip değişkenleri gözleyerek Scratch projelerindeki hataları bul ve düzelt.

DERS PUSULASI

Bu sayfayı ne için kullanacaksın?

Ana fikir

Hata ayıklama, Scratch projesindeki bir sorunu adım adım bulup düzeltme işidir; bu derste blokları tek tek çalıştırmayı, değişkeni sahnede izlemeyi ve yavaş test yapmayı öğreniyoruz.

Üretilecek kanıt

Aşağıdaki kodda bir sorun var. Amaç: yeşil bayrağa tıklanınca kedinin sağa yürümesi ve kenara gelince durması. Ama kedi hiç durmuyor. yeşil bayrağa tıklandığında sürekli tekrarla 10 adım git Adımlar: Beklenen sonucu yaz: “Kedi kenara gelince duracak.” Gerçekte olanı gözlemle: Kedi kenardan çıkıp geri geliyor, hiç durmuyor. Eksik parçayı bul: Kodda “kenara…

Kontrol tuzağı

Blokları tek tek çalıştırmak Scratch’te bir blok yığınına tıklarsan o yığın hemen bir kez çalışır. Sarı kenarlık kısa bir an belirir. Bu, bir parçanın tek başına doğru çalışıp çalışmadığını görmenin en hızlı yoludur. Örneğin karakter hiç hareket etmiyorsa, önce sadece hareket kısmını deneriz: 10 adım git Bu bloğa…

Sonraki bağlantı

Proje: Labirent Oyunu

Modül kaynakları: Python Tutorial · Arduino Learn

SeviyeBaşlangıç
Yaş10–16
Süre30–45 dk
Ön koşulOyun Tasarımında Puan ve Seviye
İçerikStandart ders · 1.412 kelime
Son güncelleme

Bir cümlelik özet

Hata ayıklama, Scratch projesindeki bir sorunu adım adım bulup düzeltme işidir; bu derste blokları tek tek çalıştırmayı, değişkeni sahnede izlemeyi ve yavaş test yapmayı öğreniyoruz.

Neden önemli?

Bir oyun ilk denemede çalışmadığında bu bir başarısızlık değildir. Kod çoğu zaman ilk yazışta tam istediğimiz gibi çalışmaz. Önemli olan, sorunun tam olarak nerede olduğunu bulabilmektir.

Algoritma modülünde hata ayıklamanın (İngilizcesi “debugging”) bir yöntemi olduğunu öğrenmiştik: beklenen sonucu yaz, gerçekte olanı gözlemle, programı küçük parçalara ayır, ilk farkın oluştuğu noktayı bul. Scratch, bu yöntemi uygulamak için çok elverişlidir. Çünkü blokları çalışırken görebilir, tek tek deneyebilir ve değişkenleri gözümüzün önünde izleyebiliriz.

Ben de bir projede kedimin duvara girip takıldığını fark ettiğimde, önce “kod yanlış” diye düşünmüştüm. Blokları tek tek çalıştırınca sorunun kodun kendisinde değil, yanlış olay bloğunda olduğunu gördüm. Bu ders, o tür sorunları düzenli biçimde nasıl bulacağımızı anlatıyor.

Scratch’te hata nasıl bulunur?

Blokları tek tek çalıştırmak

Scratch’te bir blok yığınına tıklarsan o yığın hemen bir kez çalışır. Sarı kenarlık kısa bir an belirir. Bu, bir parçanın tek başına doğru çalışıp çalışmadığını görmenin en hızlı yoludur.

Örneğin karakter hiç hareket etmiyorsa, önce sadece hareket kısmını deneriz:

10 adım git

Bu bloğa tıkladığımızda kukla sağa kayıyorsa hareket bloğu sağlamdır. Demek ki sorun başka yerdedir; belki de bu bloğu çalıştıran olay hiç tetiklenmiyordur.

Değişkeni sahnede izlemek

Değişkenler (Variables) kategorisindeki bir değişkenin yanındaki kutuyu işaretlersen, değeri sahnenin köşesinde canlı olarak görünür. Böylece kod çalışırken sayının nasıl değiştiğini gözle takip edebilirsin.

Diyelim ki puan artmıyor. puan değişkenini sahnede açar ve oyunu oynarız:

yeşil bayrağa tıklandığında
puan değişkenini 0 yap
sürekli tekrarla
  eğer <fare göstergesine değiyor> ise
    puan değişkenini 1 artır

Sahnedeki puan sayacı hızla yükseliyorsa, koşul her karede tekrar tekrar doğru sayılıyor demektir. Sayının ne zaman değiştiğini görmek, hatanın nerede olduğunu anlamamızı sağlar.

Yavaş test etmek

Bazen kod o kadar hızlı çalışır ki ne olduğunu göremeyiz. İki yöntem işe yarar. Birincisi, Scratch’in “Turbo Modu”nun kapalı olduğundan emin olmak. İkincisi, döngünün içine kısa bekleme koymak:

sürekli tekrarla
  1 saniye bekle
  bir sonraki kostüme geç

Kostüm değişimini 1 saniye bekle ile yavaşlatınca, her adımı gözle görebilir ve sorunun hangi adımda başladığını rahatça buluruz. Sorunu bulduktan sonra beklemeyi kaldırıp normal hıza dönebiliriz.

Yaygın hataları tanımak

Yanlış olay bloğu

Her kod yığını bir olayla (Events) başlamalıdır. En sık hata, kodu yeşil bayrağa tıklandığında yerine yanlış bir olaya bağlamaktır.

Zıplama kodunu boşluk tuşuna bağlamak istediğimizi düşünelim:

bu kukla tıklandığında
y konumunu 50 artır

Burada kod, kuklaya fareyle tıklanınca çalışır; boşluk tuşuna basınca değil. Doğrusu şudur:

boşluk tuşuna basıldığında
y konumunu 50 artır

Karakter hiç tepki vermiyorsa, ilk kontrol edeceğimiz şey en üstteki olay bloğudur.

Döngü içinde beklememek

sürekli tekrarla (forever) döngüsü çok hızlıdır. İçinde hiç bekleme yoksa, bilgisayar döngüyü saniyede yüzlerce kez çalıştırır. Bu bazen kuklayı bir anda kaybolmuş gibi gösterir veya sesin sürekli üst üste çalınmasına yol açar.

yeşil bayrağa tıklandığında
sürekli tekrarla
  Miyav sesini çal

Bu kod “miyav” sesini bitmesini beklemeden tekrar tekrar başlatır ve ortaya cızırtı çıkar. Çözüm, sesin bitmesini beklemek:

yeşil bayrağa tıklandığında
sürekli tekrarla
  Miyav sesini bitene kadar çal

Klonların temizlenmemesi

Klonlar (klonlar / clones), bir kuklanın kopyalarıdır; oyunlarda mermi veya düşman oluşturmak için kullanılır. Klon ekrandan çıktığında veya bir düşmana çarptığında silinmezse, ekranda yüzlerce görünmez klon birikir ve oyun yavaşlar.

Yanlış: klon oluşturulur ama hiç silinmez.

klon oluşturulduğunda
sürekli tekrarla
  10 adım git

Daha iyi: klon kenara ulaşınca kendini silsin.

klon oluşturulduğunda
sürekli tekrarla
  10 adım git
  eğer <kenara değiyor> ise
    bu klonu sil

bu klonu sil (delete this clone) bloğu, işi biten kopyayı ekrandan kaldırır ve projeyi hızlı tutar.

Mini uygulama

Aşağıdaki kodda bir sorun var. Amaç: yeşil bayrağa tıklanınca kedinin sağa yürümesi ve kenara gelince durması. Ama kedi hiç durmuyor.

yeşil bayrağa tıklandığında
sürekli tekrarla
  10 adım git

Adımlar:

  1. Beklenen sonucu yaz: “Kedi kenara gelince duracak.”
  2. Gerçekte olanı gözlemle: Kedi kenardan çıkıp geri geliyor, hiç durmuyor.
  3. Eksik parçayı bul: Kodda “kenara değiyor mu?” diye soran bir koşul yok.
  4. Düzelt ve yeniden dene.

Düzeltilmiş kodu kendin yazmayı dene, sonra aşağıdaki çözümle karşılaştır:

yeşil bayrağa tıklandığında
sürekli tekrarla
  10 adım git
  eğer <kenara değiyor> ise
    tüm sesleri durdur
    dur [bu betik]

Burada Algılama (Sensing) kategorisindeki <kenara değiyor> koşulunu ve Kontrol (Control) kategorisindeki dur bloğunu kullandık. Değişkeni sahnede izleme alışkanlığını denemek için x konumu değerini de açıp kedinin nereye kadar gittiğini gözle takip edebilirsin.

Uygulama laboratuvarı: Hata Ayıklama ve Test

Hata Ayıklama ve Test 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 Scratch’te hata nasıl bulunur? ile Değişkeni sahnede izlemek arasındaki ilişkiyi kullanarak çalışan bir Scratch sahnesi, blok düzeni ve test listesi 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: bir robotun görevleri doğru sırada tamamladığı simülasyon. Dersin ana hedefi “Blokları izleyip değişkenleri gözleyerek Scratch projelerindeki hataları bul ve düzelt” 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 ve Test” çalışmasını bitirdiğinde ürünü bir arkadaşına yalnız bölüm başlıklarıyla anlat. Arkadaşın bir robotun görevleri doğru sırada tamamladığı simülasyon senaryosundaki adımları ve karar nedenlerini takip edebiliyorsa anlatım yeterince açıktır. Anlaşılmayan noktayı daha fazla terim ekleyerek değil, Scratch’te hata nasıl bulunur? ve Değişkeni sahnede izlemek ilişkisini daha küçük adımlara bölerek düzelt.

Sık yapılan hatalar

Sorunu baştan tahmin etmek

Kodun tamamına bakıp “herhalde şurası” demek yerine, parçaları tek tek çalıştırıp kanıtla ilerlemek daha hızlıdır.

Aynı anda birçok şeyi değiştirmek

Bir denemede beş bloğu birden değiştirirsen, düzelme olsa bile hangi değişikliğin işe yaradığını bilemezsin. Her seferinde tek bir şeyi değiştir ve tekrar dene.

Değişkeni sahnede açmayı unutmak

Sayının nasıl değiştiğini görmeden puan veya can hatalarını bulmak zordur. İlk iş, ilgili değişkeni sahnede görünür yapmaktır.

Yeşil bayrakla başlamadan test etmek

Değişkenleri başlangıç değerine ayarlayan yeşil bayrağa tıklandığında bloğunu çalıştırmadan test edersen, önceki oyundan kalan değerler seni yanıltır. Her testten önce yeşil bayrağa tıkla.

Güvenlik notu

Bu ders tamamen ekran üzerinde, Scratch içinde yapılır; herhangi bir donanım gerektirmez. Yine de uzun süre ekran başında kalmamaya dikkat et: her 20–30 dakikada bir kısa ara ver, gözlerini dinlendir ve biraz hareket et. Projeni Scratch web sitesinde paylaşacaksan, yorumları ve paylaşımları bir yetişkinle birlikte gözden geçir; gerçek adını, okulunu veya adresini projelere yazma.

Ders özeti

Kontrol soruları

  1. Bir blok yığınına tıkladığında ne olur ve bu neden işe yarar?
  2. Bir değişkeni sahnede görünür yapmak hata ayıklamada nasıl yardımcı olur?
  3. sürekli tekrarla döngüsünün içine neden bazen kısa bir bekleme koyarız?
  4. Karakter bir tuşa hiç tepki vermiyorsa ilk olarak hangi bloğu kontrol etmelisin?
  5. Ekrandan çıkan bir klon silinmezse ne gibi bir sorun oluşur?

Cevaplar

  1. O yığın hemen bir kez çalışır ve kenarında kısa bir sarı çerçeve belirir. Böylece o parçanın tek başına doğru çalışıp çalışmadığını, projenin geri kalanından ayırarak görebilirsin.
  2. Değişkenin değeri sahnenin köşesinde canlı görünür. Sayının ne zaman ve nasıl değiştiğini gözle izleyerek, sorunun kodun hangi noktasında başladığını anlarsın.
  3. sürekli tekrarla çok hızlı çalışır. Kısa bir bekleme, adımları gözle görülebilecek kadar yavaşlatır; böylece hatanın hangi adımda ortaya çıktığını fark edebiliriz.
  4. En üstteki olay bloğunu. Kod yanlış bir olaya bağlıysa (örneğin bu kukla tıklandığında, olması gereken boşluk tuşuna basıldığında yerine) karakter tuşa tepki vermez.
  5. Ekranda görünmez klonlar birikir. Bu, projeyi yavaşlatır ve çarpışma gibi kontrolleri karıştırabilir. Bunu önlemek için işi biten klon bu klonu sil ile kaldırılmalıdır.

Kaynak ve doğrulama notu

“Hata Ayıklama ve Test” dersi için doğrulama odağı Scratch’te hata nasıl bulunur? ile Değişkeni sahnede izlemek arasındaki ilişkinin örnekler üzerinde tutarlı çalışmasıdır. Blok adları Scratch’in güncel temel kategorileriyle uyumlu tutulmuştur. Proje davranışı; başlangıç, normal oyun, hata ve yeniden başlatma durumlarında ayrı ayrı denenmelidir.

Sonraki ders

Proje: Labirent Oyunu

Quiz’i BaşlatScratch ile Programlama 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.