canlı ~/duyurular $
Algoritma müfredatı
ünite 6 · Problem Çözme · ders 6.2

Hata ayıklama alışkanlıkları

Program yanlış çalışıyor. Rastgele değiştirme; izle, daralt, doğrula.

7 dk 21 / 22

Hata bulmak da bir algoritmadır:

  1. Yeniden üret: hata hep mi oluyor, belli girdide mi? Girdiyi yaz.
  2. Beklentiyi yaz: "toplam 408 olmalı". Beklenti olmadan hata da yoktur.
  3. Daralt: ara değerleri yazdır (Console.WriteLine), izleme tablosu tut. Hangi satırdan sonra sapıyor?
  4. Tek şey değiştir: aynı anda üç şeyi değiştirirsen neyin düzelttiğini bilemezsin.
  5. Sınırları dene: boş liste, tek eleman, 0, negatif, çok büyük.

Sık hatalar sözlüğü

BelirtiŞüpheli
bir eksik / bir fazladöngü sınırı (< mi ≤ mi), 0'dan başlayan indeks
program bitmiyorkoşulu değiştiren satır döngü dışında
sonuç hep 0 / hep ilk değerbiriktirici döngü içinde sıfırlanıyor
5 + 3 = 53metin + metin; tür dönüşümü
bölme sonucu tam sayıtam sayı / tam sayı; 3.0 gerekli
Hata Avcısı'ndaki hataların hepsi bu tabloda. Oradaki alışkanlık, kendi kodunda da işe yarar.
akış şeması elips: başla/bitir · dikdörtgen: işlem · paralelkenar: girdi/çıktı · baklava: karar
flowchart TD
  A[Hata: beklenen != sonuç] --> B[Girdi ve beklentiyi yaz]
  B --> C[Ara değerleri yazdır]
  C --> D{Sapma nerede?}
  D --> E[Tek satır değiştir]
  E --> F{Düzeldi mi?}
  F -- Hayır --> C
  F -- Evet --> G[Sınır değerlerle tekrar test]
sözde kod adımlar
1İKEN sonuç ≠ beklenen2  ara değerleri yazdır3  sapan satırı bul4  yalnızca o satırı değiştir5  yeniden çalıştır6DÖNGÜ SONU7sınır değerlerle test et
aynısı C# ile C#
1int[] notlar = { 85, 90, 78, 95, 60 };2int toplam = 0;3for (int i = 1; i < notlar.Length; i++)   // sapma burada: i = 14{5    toplam += notlar[i];6    Console.WriteLine("i=" + i + " toplam=" + toplam);   // ara değer7}8Console.WriteLine(toplam);
adım adım izleme

Kutuların her adımdaki değeri. Kağıtta izleme tablosu tutarken tam bunu yaparsın.

#satıritoplamdüzeltmenot
1 i=1 toplam=90 1 90 · Beklenti: ilk turda 85 olmalıydı → sapma ilk turda
2 i=2 toplam=168 2 168 ·
3 şüphe: döngü 1'den başlıyor · · i = 0 notlar[0] hiç toplanmadı
senin sıran

Hata Avcısı'nda bir hatayı ipucu almadan çöz; ama çözmeden önce kâğıda "belirti → şüpheli → test girdisi" üçlüsünü yaz. Sonra tahminin doğru çıktı mı?

kendini sına Aynı anda üç satırı değiştirip program düzelince neden hâlâ sorun var?
Hangi değişikliğin düzelttiğini bilmiyorsun; diğer ikisi başka bir şeyi bozmuş olabilir. Tek değişiklik, tek test.
İşaret bu tarayıcıda kalır. XP için giriş yap — her ders +15 XP.