Zum Inhalt springen

IM6 - Debugging – Fehler finden

Aus MOOCsWiki Staging
aiMOOC-Siegel

IM6 - Debugging – Fehler finden




Einleitung

Beim Programmieren klappt selten alles sofort. Ein Spiel startet nicht, eine Figur läuft in die falsche Richtung, ein Punktestand verhält sich merkwürdig oder eine Schleife wird viel öfter ausgeführt als geplant. Genau dann brauchst Du Debugging: eine systematische Fehlersuche in Programmen.

In diesem aiMOOC lernst Du nicht einfach nur, einen Fehler „irgendwie“ zu beheben. Du trainierst vier wichtige Denkweisen:

  1. Erwartung formulieren: Was soll das Programm tun?
  2. Ablauf nachvollziehen: Was passiert Schritt für Schritt?
  3. Fehler lokalisieren: An welcher Stelle weicht das Programm vom Soll ab?
  4. Testen: Funktioniert die Änderung wirklich – auch in mehreren Situationen?

Die Beispiele sind an blockbasiertes Programmieren wie Scratch angelehnt. Die Programme werden teilweise absichtlich als fehlerhafter Pseudocode gezeigt. Du sollst also nicht nur lesen, sondern wie eine Debugging-Detektivin oder ein Debugging-Detektiv denken.

Scratch ist eine blockbasierte Programmierumgebung, die besonders für Kinder und Jugendliche entwickelt wurde. Gerade bei Spielen kannst Du Fehler gut beobachten: Figuren bewegen sich sichtbar, Kollisionen lassen sich testen und Wiederholungen können gezählt werden.

Beim Video kannst Du bewusst mitdenken: Welche Blöcke bestimmen den Start? Wo wird eine Figur bewegt? Welche Schleifen oder Bedingungen müssten bei einem Fehler überprüft werden?


Was bedeutet Debugging?

Ein Bug ist ein Fehler in einem Programm oder Computersystem. Debugging bedeutet, die Ursache eines Fehlers zu suchen, einzugrenzen und zu beheben. Ein wichtiger Unterschied ist:

Testen zeigt Dir, dass etwas nicht wie erwartet funktioniert. Debugging hilft Dir herauszufinden, warum es nicht funktioniert.

Ein hilfreicher Ablauf lautet:

ERWARTUNG festlegen
        ↓
PROGRAMM ausführen
        ↓
BEOBACHTUNG notieren
        ↓
SCHRITT FÜR SCHRITT nachvollziehen
        ↓
FEHLERSTELLE eingrenzen
        ↓
EINE Änderung durchführen
        ↓
ERNEUT testen

Debugging ist also kein wildes Ausprobieren. Gute Fehlersuche folgt einer Spur.


Woher kommt das Wort Bug?

Das englische Wort bug wurde schon vor der Computerzeit für technische Störungen verwendet. Berühmt wurde eine Geschichte aus dem Jahr 1947: In einem Relais des Rechners Harvard Mark II wurde tatsächlich eine Motte gefunden und in das Logbuch geklebt. Das war ein scherzhafter „echter Bug“ – aber nicht der Ursprung des Wortes.

Die Geschichte ist trotzdem ein gutes Bild für Debugging: Ein Problem wird beobachtet, die Ursache wird gefunden und anschließend wird überprüft, ob das System wieder funktioniert.


Das wichtigste Debugging-Werkzeug: SOLL und IST

Bevor Du Code änderst, solltest Du zwei Dinge klar formulieren.

Frage Beispiel
SOLL Nach dem Drücken der rechten Pfeiltaste bewegt sich die Figur 10 Schritte nach rechts.
IST Nach dem Drücken der rechten Pfeiltaste bewegt sich die Figur 10 Schritte nach links.

Schon dieser Vergleich hilft: Das Spiel reagiert auf die richtige Taste. Der Start und das Tastaturereignis funktionieren also wahrscheinlich. Der Fehler liegt eher bei der Richtung oder beim Vorzeichen der Bewegung.

Das ist ein wichtiges Prinzip: Nutze jede Beobachtung, um mögliche Fehlerstellen auszuschließen.


Debugging-Protokoll

Ein einfaches Debugging-Protokoll kann so aussehen:

Schritt Leitfrage Beispiel
1 Was erwarte ich? Figur bewegt sich nach rechts.
2 Was beobachte ich? Figur bewegt sich nach links.
3 Wo könnte die Ursache liegen? Im Bewegungsbefehl.
4 Wie teste ich die Vermutung? Vorzeichen der x-Änderung prüfen.
5 Was ändere ich? -10 durch +10 ersetzen.
6 Wie prüfe ich die Lösung? Taste mehrfach drücken und Position beobachten.

Dieses Protokoll trainiert Dich darin, nicht sofort irgendeinen Block zu verschieben, sondern eine begründete Vermutung zu testen.


Programme Schritt für Schritt lesen

Computer führen Anweisungen in einer festgelegten Reihenfolge aus. Beim Debugging hilft es, den Ablauf langsam nachzuspielen. Das nennt man oft Tracing oder Ablaufverfolgung.

Ein Programmablaufplan oder Flussdiagramm stellt einen Algorithmus grafisch dar. Typische Elemente sind Start und Ende, Anweisungen, Entscheidungen und Pfeile für die Reihenfolge.


Mini-Tracing: Wo ist die Figur?

Gegeben ist dieses Programm:

SETZE x AUF 0
ÄNDERE x UM 10
ÄNDERE x UM 10
ÄNDERE x UM -5

Verfolge den Wert von x:

Schritt Befehl x vorher x nachher
1 SETZE x AUF 0 unbekannt 0
2 ÄNDERE x UM 10 0 10
3 ÄNDERE x UM 10 10 20
4 ÄNDERE x UM -5 20 15

Wenn das Programm am Ende x = 25 liefern sollte, erkennst Du beim Tracing genau, ab welchem Schritt die Werte nicht mehr zur Erwartung passen.


Debugging-Strategie für Klasse 6

Merke Dir die Kurzform E-A-F-T:

  1. Erwarten: Beschreibe genau, was passieren soll.
  2. Ablaufen: Gehe das Programm Schritt für Schritt durch.
  3. Fehler finden: Suche die erste Stelle, an der SOLL und IST auseinandergehen.
  4. Testen: Ändere möglichst nur eine Sache und prüfe erneut.

Wenn Du gleichzeitig fünf Blöcke änderst und das Programm danach funktioniert, weißt Du nicht, welche Änderung den Fehler behoben hat. Deshalb gilt:

Eine Vermutung – eine Änderung – ein Test.


Use-Case 1: Das Spiel funktioniert nicht

Stell Dir ein Fangspiel vor. Nach dem Klick auf die grüne Flagge soll die Spielfigur in der Mitte starten und der Punktestand soll auf 0 gesetzt werden. Doch es passiert gar nichts.


Fehlerhaftes Programm A: falscher Start

WENN TASTE LEERTASTE GEDRÜCKT
  SETZE x AUF 0
  SETZE y AUF 0
  SETZE PUNKTE AUF 0
  STARTE SPIEL

Erwartung: Das Spiel startet beim Klick auf die grüne Flagge. Beobachtung: Beim Klick auf die grüne Flagge passiert nichts.

Die Zeilen im Programm können korrekt sein, aber das Ereignis am Anfang ist falsch. Das Programm wartet auf die Leertaste.

Eine mögliche Korrektur ist:

WENN GRÜNE FLAGGE ANGEKLICKT
  SETZE x AUF 0
  SETZE y AUF 0
  SETZE PUNKTE AUF 0
  STARTE SPIEL

Debugging-Lektion: Wenn ein Programm gar nicht beginnt, prüfe zuerst das Startereignis.


Fehlerhaftes Programm B: Startsignal erreicht die Spielfigur nicht

BÜHNE:
WENN GRÜNE FLAGGE ANGEKLICKT
  SENDE "START"

FIGUR:
WENN ICH "LOS" EMPFANGE
  GEHE ZU x:0 y:0
  ZEIGE DICH

Die Bühne sendet START, die Figur wartet aber auf LOS. Beide Namen müssen zusammenpassen.

Testidee: Füge vorübergehend einen sichtbaren Hinweis ein:

WENN ICH "START" EMPFANGE
  SAGE "Startsignal angekommen" FÜR 1 SEKUNDE

Wenn der Text erscheint, weißt Du: Das Signal kommt an. Danach kannst Du die nächsten Blöcke prüfen.


Ablaufdiagramm zum Startfehler

[Start: grüne Flagge]
          |
          v
[Signal START senden]
          |
          v
<Empfängt Figur START?>
      /        \
    ja          nein
    |            |
    v            v
[Figur       [Fehler bei
initialisieren] Signalname /
    |         Empfänger]
    v
[Spiel läuft]

Dieses Diagramm hilft Dir beim Eingrenzen. Wenn die Figur kein Startsignal empfängt, musst Du noch nicht über Bewegung oder Kollision nachdenken.


Use-Case 2: Die Figur bewegt sich falsch

Die Figur soll sich mit den Pfeiltasten bewegen. Rechts soll wirklich rechts sein, links soll links sein.


Fehlerhaftes Programm C: falsches Vorzeichen

WENN TASTE RECHTSPFEIL GEDRÜCKT
  ÄNDERE x UM -10

SOLL: x wird größer. IST: x wird kleiner.

Die Korrektur lautet:

WENN TASTE RECHTSPFEIL GEDRÜCKT
  ÄNDERE x UM 10

Debugging-Test: Starte bei x = 0. Drücke die rechte Pfeiltaste genau dreimal. Danach sollte x = 30 sein.


Fehlerhaftes Programm D: falsche Achse

WENN TASTE PFEIL NACH OBEN GEDRÜCKT
  ÄNDERE x UM 10

Die Figur bewegt sich nach rechts statt nach oben. Für die Bewegung nach oben muss die y-Koordinate verändert werden:

WENN TASTE PFEIL NACH OBEN GEDRÜCKT
  ÄNDERE y UM 10

Merksatz: x steuert links und rechts, y steuert unten und oben.


Fehlerhaftes Programm E: Bewegung wird sofort zurückgesetzt

WIEDERHOLE FORTLAUFEND
  SETZE x AUF 0
  WENN TASTE RECHTSPFEIL GEDRÜCKT
    ÄNDERE x UM 10

Die Figur kann kurz nach rechts springen, wird aber im nächsten Schleifendurchlauf wieder auf x = 0 gesetzt.

Eine bessere Struktur ist:

SETZE x AUF 0
WIEDERHOLE FORTLAUFEND
  WENN TASTE RECHTSPFEIL GEDRÜCKT
    ÄNDERE x UM 10

Debugging-Lektion: Prüfe nicht nur einzelne Blöcke, sondern auch, wie oft sie ausgeführt werden.


Ablaufdiagramm zur Bewegung

[Spiel läuft]
      |
      v
<Taste rechts gedrückt?>
   /          \
 nein          ja
  |            |
  |            v
  |      [x um +10 ändern]
  |            |
  +------------+
      |
      v
[nächste Prüfung]

Der entscheidende Testpunkt ist: Wird bei „ja“ wirklich die richtige Variable mit dem richtigen Vorzeichen verändert?


Use-Case 3: Die Schleife läuft zu oft

Schleifen wiederholen Befehle. Genau deshalb können kleine Fehler große Auswirkungen haben.


Fehlerhaftes Programm F: falsche Wiederholungszahl

Die Figur soll genau drei Sterne erzeugen.

WIEDERHOLE 30 MAL
  ERZEUGE STERN

Das Programm läuft technisch korrekt, aber die Zahl ist falsch.

Korrektur:

WIEDERHOLE 3 MAL
  ERZEUGE STERN

Wichtig: Nicht jeder Bug führt zu einem Absturz. Ein Programm kann vollständig laufen und trotzdem das falsche Ergebnis liefern.


Fehlerhaftes Programm G: Zähler wird nicht verändert

Die Schleife soll enden, wenn der Zähler 5 erreicht.

SETZE ZÄHLER AUF 0
WIEDERHOLE BIS ZÄHLER = 5
  SAGE "Runde"

Der Zähler bleibt immer 0. Die Bedingung wird deshalb nie wahr.

Korrektur:

SETZE ZÄHLER AUF 0
WIEDERHOLE BIS ZÄHLER = 5
  SAGE "Runde"
  ÄNDERE ZÄHLER UM 1

Beim Debugging kannst Du die Zählerwerte sichtbar machen:

SETZE ZÄHLER AUF 0
WIEDERHOLE BIS ZÄHLER = 5
  SAGE ZÄHLER
  ÄNDERE ZÄHLER UM 1

So siehst Du die Folge 0, 1, 2, 3, 4 und kannst überprüfen, ob die Schleife passend endet.


Fehlerhaftes Programm H: Bedingung falsch herum

SETZE ZÄHLER AUF 0
WIEDERHOLE BIS ZÄHLER < 5
  ÄNDERE ZÄHLER UM 1

Da 0 bereits kleiner als 5 ist, kann die Schleife sofort enden. Gemeint war etwa:

SETZE ZÄHLER AUF 0
WIEDERHOLE BIS ZÄHLER = 5
  ÄNDERE ZÄHLER UM 1

Debugging-Frage: Ist die Abbruchbedingung am Anfang schon wahr? Dann startet die Wiederholung möglicherweise gar nicht.


Ablaufdiagramm für eine Zählschleife

[Zähler = 0]
      |
      v
<Zähler = 5?>
   /       \
 ja         nein
 |           |
 v           v
[Ende]   [Aktion]
             |
             v
      [Zähler + 1]
             |
             +------ zurück zur Prüfung


Weitere typische Bugs in Spielen


Fehlerhaftes Programm I: Punktestand wird ständig gelöscht

WIEDERHOLE FORTLAUFEND
  SETZE PUNKTE AUF 0
  WENN FIGUR BERÜHRT MÜNZE
    ÄNDERE PUNKTE UM 1

Der Punktestand wird in jedem Schleifendurchlauf wieder auf 0 gesetzt.

Besser:

SETZE PUNKTE AUF 0
WIEDERHOLE FORTLAUFEND
  WENN FIGUR BERÜHRT MÜNZE
    ÄNDERE PUNKTE UM 1

Debugging-Lektion: Initialisierung gehört meist vor die Hauptschleife.


Fehlerhaftes Programm J: Punkte steigen zu schnell

WIEDERHOLE FORTLAUFEND
  WENN FIGUR BERÜHRT MÜNZE
    ÄNDERE PUNKTE UM 1

Wenn die Figur die Münze mehrere Schleifendurchläufe lang berührt, können in sehr kurzer Zeit viele Punkte entstehen.

Eine mögliche Lösung:

WIEDERHOLE FORTLAUFEND
  WENN FIGUR BERÜHRT MÜNZE
    ÄNDERE PUNKTE UM 1
    VERSTECKE MÜNZE
    WARTE 1 SEKUNDE
    SETZE MÜNZE AN NEUE POSITION
    ZEIGE MÜNZE

Jetzt sorgt die Änderung dafür, dass eine Berührung nicht dauerhaft weitergezählt wird.


Fehlerhaftes Programm K: Springen in die falsche Richtung

WENN TASTE LEERTASTE GEDRÜCKT
  WIEDERHOLE 5 MAL
    ÄNDERE y UM -10

Die Figur soll nach oben springen, bewegt sich aber nach unten. Prüfe das Vorzeichen. Für den Aufstieg muss y zunächst größer werden.

Eine einfache Sprungidee:

WENN TASTE LEERTASTE GEDRÜCKT
  WIEDERHOLE 5 MAL
    ÄNDERE y UM 10
  WIEDERHOLE 5 MAL
    ÄNDERE y UM -10


Fehlerhaftes Programm L: Die Figur läuft durch die Wand

WENN TASTE RECHTSPFEIL GEDRÜCKT
  ÄNDERE x UM 10
WENN FIGUR BERÜHRT WAND
  SAGE "Aua!"

Das Programm erkennt zwar die Wand, korrigiert aber die Position nicht. Eine mögliche Verbesserung:

WENN TASTE RECHTSPFEIL GEDRÜCKT
  ÄNDERE x UM 10
  WENN FIGUR BERÜHRT WAND
    ÄNDERE x UM -10

Damit wird die letzte Bewegung zurückgenommen.


Debugging mit Erwartungen

Eine starke Debugging-Technik besteht darin, vor jedem wichtigen Schritt vorherzusagen, was passieren müsste.

Beispiel:

SETZE PUNKTE AUF 0
WIEDERHOLE 3 MAL
  ÄNDERE PUNKTE UM 2

Vorhersage:

Start: 0
nach Runde 1: 2
nach Runde 2: 4
nach Runde 3: 6

Wenn Du beim tatsächlichen Test die Werte 0, 2, 4, 6 beobachtest, stimmt der Ablauf. Wenn Du 0, 2, 2, 2 siehst, kannst Du gezielt fragen: Warum wird nach der ersten Runde nicht weiter erhöht?


Trace-Tabelle als Fehlerlupe

Für dieses fehlerhafte Programm:

SETZE LEBEN AUF 3
WIEDERHOLE 4 MAL
  ÄNDERE LEBEN UM -1

ergibt sich:

Zeitpunkt Leben Erwartung bei maximal drei Treffern
Start 3 3
nach Runde 1 2 2
nach Runde 2 1 1
nach Runde 3 0 0
nach Runde 4 -1 Spiel sollte bereits beendet sein

Die erste auffällige Stelle ist Runde 4. Genau dort solltest Du die Schleife oder Abbruchbedingung untersuchen.


Fehler eingrenzen statt raten

Wenn ein Spiel aus vielen Teilen besteht, solltest Du den Fehlerbereich verkleinern.

Beispiel: Die Spielfigur sammelt keine Münzen.

  1. Prüfe zuerst: Kann sich die Figur bewegen?
  2. Prüfe dann: Berührt die Figur die Münze wirklich?
  3. Prüfe dann: Wird die Kollisionsbedingung wahr?
  4. Prüfe dann: Wird der Punktestand verändert?
  5. Prüfe zuletzt: Wird der Punktestand vielleicht direkt wieder zurückgesetzt?

So teilst Du ein großes Problem in kleine prüfbare Fragen.


Sichtbare Testausgaben

Eine einfache Debugging-Hilfe ist eine zusätzliche Ausgabe:

WENN FIGUR BERÜHRT MÜNZE
  SAGE "Kollision erkannt"
  ÄNDERE PUNKTE UM 1

Wenn „Kollision erkannt“ erscheint, aber die Punkte nicht steigen, liegt der Fehler wahrscheinlich nach der Kollisionsprüfung.

Wenn der Text nicht erscheint, liegt der Fehler wahrscheinlich vor oder in der Kollisionsprüfung.


Testfälle planen

Ein guter Test besteht nicht nur aus „einmal klicken“. Überlege verschiedene Situationen.

Testfall Eingabe oder Situation Erwartetes Ergebnis
Start Grüne Flagge Figur startet in der Mitte, Punkte = 0
Bewegung rechts Rechtspfeil einmal x wird um 10 größer
Bewegung links Linkspfeil einmal x wird um 10 kleiner
Münze Figur berührt Münze Punkte steigen genau um 1
Wand Figur berührt rechte Wand Figur bleibt im Spielfeld
Schleife Runde startet Genau 3 Gegner erscheinen

Mit solchen Testfällen überprüfst Du nicht nur den Bugfix, sondern auch, ob durch die Änderung etwas anderes kaputtgegangen ist.


Debugging mit Ablaufdiagrammen

Ablaufdiagramme sind besonders hilfreich, wenn Du bei Bedingungen und Schleifen den Überblick verlierst.


Ablaufdiagramm: Münze einsammeln

[Spiel läuft]
      |
      v
<Berührt Figur Münze?>
    /          \
  nein          ja
   |             |
   |             v
   |        [Punkte + 1]
   |             |
   |             v
   |        [Münze neu setzen]
   |             |
   +-------------+
         |
         v
 [erneut prüfen]

Debugging-Frage: Wenn die Punkte zu schnell steigen, fehlt vielleicht der Schritt „Münze neu setzen“ oder die Figur bleibt zu lange im Berührungszustand.


Ablaufdiagramm: Spielende

[Start mit 3 Leben]
        |
        v
   [Spiel läuft]
        |
        v
<Spieler getroffen?>
    /        \
  nein        ja
   |           |
   |           v
   |      [Leben - 1]
   |           |
   |           v
   |       <Leben = 0?>
   |         /      \
   |       nein      ja
   |        |         |
   +--------+         v
                  [Spielende]

Ein Fehler kann entstehen, wenn die Prüfung „Leben = 0?“ fehlt oder an der falschen Stelle steht.


Debugging-Regeln für gute Fehlersucherinnen und Fehlersucher

  1. Ändere nicht sofort den Code, sondern beschreibe zuerst den Fehler.
  2. Schreibe SOLL und IST auf.
  3. Reproduziere den Fehler: Kannst Du ihn erneut auslösen?
  4. Prüfe den Ablauf in kleinen Schritten.
  5. Beobachte Variablenwerte und Zähler.
  6. Ändere möglichst nur eine Sache auf einmal.
  7. Teste danach nicht nur den alten Fehlerfall, sondern auch andere wichtige Fälle.
  8. Bewahre funktionierende Zwischenschritte auf.


Vom Spiel zum echten Programmieren

Die gleichen Denkweisen gelten auch außerhalb von Scratch. In textbasierten Programmiersprachen kann ein Debugger Programme Schritt für Schritt ausführen, Variablen anzeigen und an Haltepunkten anhalten. Für Dich ist zunächst vor allem die Denkweise wichtig: Erwartung – Beobachtung – Eingrenzung – Test.

Beim Betrachten eines Spiel-Tutorials kannst Du selbst eine Debugging-Challenge daraus machen: Stoppe vor einem Programmschritt und sage voraus, wie sich die Figur, der Punktestand oder eine Schleife verhalten müsste.


Interaktive Aufgaben


Quiz: Teste Dein Wissen

Was ist der erste sinnvolle Schritt beim Debugging? (Genau beschreiben was das Programm tun soll) (!Mehrere Blöcke gleichzeitig ändern) (!Das ganze Programm löschen) (!Nur auf gut Glück testen)




Eine Figur soll nach rechts laufen bewegt sich aber nach links. Was prüfst Du zuerst? (Das Vorzeichen der Änderung von x) (!Die Lautstärke) (!Die Hintergrundfarbe) (!Den Namen des Projekts)




Was zeigt eine Trace-Tabelle? (Werte und Zustände Schritt für Schritt) (!Nur die Farbe der Spielfigur) (!Nur den fertigen Programmcode) (!Die Internetgeschwindigkeit)




Eine Schleife soll fünfmal laufen läuft aber endlos. Was ist eine typische Ursache? (Der Zähler wird nicht verändert) (!Die Figur hat ein Kostüm) (!Der Bildschirm ist zu groß) (!Die Maus wurde bewegt)




Warum sollte man beim Debugging möglichst nur eine Sache gleichzeitig ändern? (Damit man erkennt welche Änderung den Fehler beeinflusst hat) (!Damit das Programm langsamer wird) (!Damit weniger Variablen existieren) (!Damit alle Schleifen verschwinden)




Was bedeutet SOLL beim Debugging? (Das erwartete Verhalten) (!Das beobachtete Verhalten) (!Der Dateiname) (!Die Anzahl der Figuren)




Warum ist ein Testfall nützlich? (Er legt Eingabe und erwartetes Ergebnis fest) (!Er ersetzt das Programm) (!Er verhindert jede Schleife) (!Er ändert automatisch alle Fehler)




Eine Figur reagiert gar nicht auf den Start. Was solltest Du früh prüfen? (Das Startereignis) (!Nur die Punktzahl) (!Nur die Kostümfarbe) (!Nur die Größe der Bühne)




Wann ist eine Debugging-Vermutung besonders gut? (Wenn sie mit einem gezielten Test überprüft werden kann) (!Wenn sie möglichst kompliziert klingt) (!Wenn sie ohne Beobachtung entsteht) (!Wenn gleichzeitig viele Stellen geändert werden)




Was solltest Du nach einem Bugfix tun? (Das Programm erneut mit mehreren passenden Testfällen prüfen) (!Sofort alle Tests löschen) (!Alle Variablen umbenennen) (!Das Programm nicht mehr starten)





Memory

Debugging systematische Fehlersuche
SOLL erwartetes Verhalten
IST beobachtetes Verhalten
Trace schrittweises Nachvollziehen
Bug Programmfehler
Testfall Eingabe mit erwartetem Ergebnis
Schleife wiederholte Ausführung
Bedingung Entscheidung im Programm





Drag and Drop

Ordne die richtigen Begriffe zu. Thema
Startereignis prüfen Spiel reagiert beim Start überhaupt nicht
Vorzeichen prüfen Figur läuft nach links statt nach rechts
Achse prüfen Figur läuft seitwärts statt nach oben
Zähler prüfen Schleife läuft zu oft oder endlos
Initialisierung prüfen Punktestand springt immer wieder auf null
Kollisionsbedingung prüfen Münze wird berührt aber nicht erkannt
Abbruchbedingung prüfen Spiel endet trotz null Leben nicht





Debugging-Drag-and-Drop: Schrittfolge

Ordne die richtigen Begriffe zu. Debugging-Schritt
Erwartung formulieren Was soll passieren
Beobachtung notieren Was passiert tatsächlich
Ablauf verfolgen Werte und Befehle Schritt für Schritt prüfen
Fehlerstelle eingrenzen Erste Abweichung zwischen Soll und Ist suchen
Vermutung testen Eine gezielte Änderung ausprobieren
Ergebnis prüfen Mehrere passende Testfälle erneut durchführen





Interaktive Debugging-Aufgabe: Drei Spielefehler

Ordne die passende Korrektur zu. Fehlerbild
x um 10 ändern Rechtspfeil bewegt Figur nach links weil x um minus 10 geändert wird
y um 10 ändern Pfeil nach oben bewegt Figur seitwärts
Wiederhole 3 mal Es erscheinen 30 statt 3 Gegner
Zähler um 1 erhöhen Wiederhole-bis-Schleife endet nie
Punkte vor der Schleife auf null setzen Punktestand wird ständig gelöscht





Kreuzworträtsel

Debugging Wie nennt man die systematische Suche nach Programmfehlern?
Schleife Wie heißt eine Programmstruktur für Wiederholungen?
Variable Wo kann ein Programm veränderliche Werte speichern?
Testfall Wie nennt man eine festgelegte Prüfsituation mit erwartetem Ergebnis?
Bedingung Wie heißt eine Prüfung die über einen weiteren Ablauf entscheidet?
Ablaufplan Wie kann ein Algorithmus grafisch mit Pfeilen und Symbolen dargestellt werden?





LearningApps


Lückentext

Vervollständige den Text.
Beim Debugging formulierst Du zuerst eine

für das Programm. Danach vergleichst Du das erwartete Verhalten mit der tatsächlichen

. Beim schrittweisen Nachvollziehen eines Programms spricht man häufig von einem

. Eine Schleife führt Anweisungen

aus. Wenn eine Figur nach links statt nach rechts läuft, kann ein falsches

die Ursache sein. Für Bewegungen nach oben und unten wird meist die

verändert. Ein Zähler muss in einer Zählschleife passend

werden. Nach einer Korrektur solltest Du das Programm erneut

. Ein festgelegter Test mit Eingabe und erwarteter Ausgabe heißt

. Gute Fehlersuche ändert möglichst nur

vermutete Ursache gleichzeitig.




Offene Aufgaben


Leicht

  1. SOLL-IST-Protokoll: Nimm ein kleines Spiel und beschreibe für drei Aktionen jeweils SOLL und IST.
  2. Bewegungsfehler: Erstelle absichtlich ein Programm, bei dem die rechte Pfeiltaste die Figur nach links bewegt. Tausche mit einer Partnerperson und lasse den Fehler finden.
  3. Trace-Tabelle: Erfinde ein Programm mit vier Änderungen an einer Variablen und erstelle dazu eine Tabelle mit den Werten nach jedem Schritt.
  4. Schleifenbeobachtung: Baue eine Schleife, die genau fünf sichtbare Aktionen ausführt, und dokumentiere, wie Du überprüfst, dass es wirklich fünf sind.


Standard

  1. Debugging-Spiel: Programmiere ein Minispiel mit drei absichtlich eingebauten Fehlern. Erstelle Hinweise, damit andere die Fehler systematisch finden können.
  2. Ablaufdiagramm: Zeichne ein Ablaufdiagramm für „Figur sammelt Münze und erhält einen Punkt“. Baue danach absichtlich einen Fehler in das Diagramm ein und lasse ihn korrigieren.
  3. Testplan: Entwickle mindestens sechs Testfälle für ein Spiel mit Bewegung, Punkten und Spielende.
  4. Fehlerinterview: Befrage eine Mitschülerin oder einen Mitschüler beim Debugging. Notiere, welche Vermutungen zuerst aufgestellt und wie sie getestet wurden.


Schwer

  1. Fehlerbibliothek: Sammle fünf unterschiedliche Bug-Arten aus eigenen Programmen und ordne jedem Bug ein Symptom, eine Ursache, eine Korrektur und einen Test zu.
  2. Debugging-Challenge: Erstelle ein Spiel, bei dem ein Fehler nur unter einer bestimmten Bedingung auftritt. Beschreibe, wie man ihn reproduzieren kann.
  3. Vergleich von Strategien: Löse denselben Fehler einmal durch zufälliges Ausprobieren und einmal mit SOLL-IST, Trace und Testfällen. Vergleiche Zeit, Übersicht und Sicherheit der Lösung.
  4. Debugging-Tutorial: Produziere ein kurzes Erklärvideo, in dem Du an einem fehlerhaften Programm Erwartung, schrittweises Nachvollziehen, Fehlerlokalisierung und erneutes Testen demonstrierst.




Text bearbeiten Bild einfügen Video einbetten Interaktive Aufgaben erstellen



Lernkontrolle

  1. Fehlerursache begründen: Eine Figur bewegt sich nach dem Rechtspfeil nach links. Erkläre zwei mögliche Ursachen und entwirf für jede Ursache einen Test, mit dem Du sie unterscheiden kannst.
  2. Schleife analysieren: Ein Programm erzeugt mehr Gegner als geplant. Beschreibe, welche Informationen Du beobachten möchtest, bevor Du den Code änderst, und begründe Deine Auswahl.
  3. Testfälle entwickeln: Für ein Spiel mit drei Leben soll das Spiel bei null Leben enden. Entwickle Testfälle, die nicht nur den Normalfall, sondern auch Grenzfälle prüfen.
  4. Ablauf rekonstruieren: Du beobachtest die Variablenfolge 0, 1, 2, 3, 4, 5, 6 obwohl die Schleife bei 5 enden sollte. Erkläre, an welchen Stellen Du nach dem Fehler suchen würdest.
  5. Bugfix bewerten: Eine Person behebt einen Fehler, indem sie gleichzeitig fünf Blöcke verändert. Erkläre, warum diese Methode problematisch ist, obwohl das Spiel danach funktioniert.
  6. Transferaufgabe Debugging: Übertrage die Debugging-Schritte auf einen Alltagsfehler, zum Beispiel eine Lampe, die nicht leuchtet. Zeige Gemeinsamkeiten zwischen technischer Fehlersuche und Programmdiagnose.




Lernnachweis

Für einen Lernnachweis zu diesem Thema ist wichtig, dass Du nicht nur einen fertigen Bugfix zeigst, sondern Deinen Denkweg nachvollziehbar machst.

  1. Du formulierst das erwartete Verhalten als klares SOLL.
  2. Du beschreibst die tatsächliche Beobachtung als IST.
  3. Du kannst einen Programmablauf Schritt für Schritt nachvollziehen.
  4. Du erkennst typische Fehler bei Ereignissen, Bewegungsrichtungen, Achsen, Variablen, Bedingungen und Schleifen.
  5. Du grenzt eine Fehlerstelle mit Beobachtungen oder Testausgaben ein.
  6. Du formulierst eine überprüfbare Vermutung zur Ursache.
  7. Du veränderst gezielt eine passende Programmstelle.
  8. Du verwendest mehrere Testfälle, um die Korrektur zu prüfen.
  9. Du kannst erklären, warum Deine Änderung den Fehler behebt.
  10. Du dokumentierst mindestens einen Debugging-Prozess vollständig von der Erwartung bis zum abschließenden Test.




OERs zum Thema



Verknüpfte Lernbereiche


aiMOOC-Projekte

MOOCwiki · Deutsch

Nach dem Lernen ist vor dem Lernen

Entdecke direkt den nächsten Lernkurs. Weitere Inhalte erscheinen, wenn Du weiter nach unten scrollst.

Zur MOOCwiki-Hauptseite
Inhalte werden geladen ...

Mediathek wird aus dem Wiki geladen ...