ü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
tamamlandı
Hata bulmak da bir algoritmadır:
- Yeniden üret: hata hep mi oluyor, belli girdide mi? Girdiyi yaz.
- Beklentiyi yaz: "toplam 408 olmalı". Beklenti olmadan hata da yoktur.
- Daralt: ara değerleri yazdır (
Console.WriteLine), izleme tablosu tut. Hangi satırdan sonra sapıyor? - Tek şey değiştir: aynı anda üç şeyi değiştirirsen neyin düzelttiğini bilemezsin.
- Sınırları dene: boş liste, tek eleman, 0, negatif, çok büyük.
Sık hatalar sözlüğü
| Belirti | Şüpheli |
|---|---|
| bir eksik / bir fazla | döngü sınırı (< mi ≤ mi), 0'dan başlayan indeks |
| program bitmiyor | koşulu değiştiren satır döngü dışında |
| sonuç hep 0 / hep ilk değer | biriktirici döngü içinde sıfırlanıyor |
| 5 + 3 = 53 | metin + 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ır | i | toplam | düzeltme | not |
|---|---|---|---|---|---|
| 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.
tamamlandı
İşaret bu tarayıcıda kalır. XP için
giriş yap — her ders +15 XP.