<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://staging.moocwiki.org/index.php?action=history&amp;feed=atom&amp;title=IM6_-_Debugging_%E2%80%93_Fehler_finden</id>
	<title>IM6 - Debugging – Fehler finden - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://staging.moocwiki.org/index.php?action=history&amp;feed=atom&amp;title=IM6_-_Debugging_%E2%80%93_Fehler_finden"/>
	<link rel="alternate" type="text/html" href="https://staging.moocwiki.org/index.php?title=IM6_-_Debugging_%E2%80%93_Fehler_finden&amp;action=history"/>
	<updated>2026-09-13T12:50:43Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in MOOCsWiki Staging</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://staging.moocwiki.org/index.php?title=IM6_-_Debugging_%E2%80%93_Fehler_finden&amp;diff=52695&amp;oldid=prev</id>
		<title>Glanz: aiMOOC über GPT aiMOOC Action erstellt</title>
		<link rel="alternate" type="text/html" href="https://staging.moocwiki.org/index.php?title=IM6_-_Debugging_%E2%80%93_Fehler_finden&amp;diff=52695&amp;oldid=prev"/>
		<updated>2026-09-13T06:31:40Z</updated>

		<summary type="html">&lt;p&gt;aiMOOC über GPT aiMOOC Action erstellt&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{T}}&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Einleitung =&lt;br /&gt;
&lt;br /&gt;
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 &amp;#039;&amp;#039;&amp;#039;Debugging&amp;#039;&amp;#039;&amp;#039;: eine systematische Fehlersuche in Programmen.&lt;br /&gt;
&lt;br /&gt;
In diesem aiMOOC lernst Du nicht einfach nur, einen Fehler „irgendwie“ zu beheben. Du trainierst vier wichtige Denkweisen:&lt;br /&gt;
&lt;br /&gt;
# [[Erwartung|Erwartung formulieren]]: Was &amp;#039;&amp;#039;&amp;#039;soll&amp;#039;&amp;#039;&amp;#039; das Programm tun?&lt;br /&gt;
# [[Programmablauf|Ablauf nachvollziehen]]: Was passiert Schritt für Schritt?&lt;br /&gt;
# [[Programmfehler|Fehler lokalisieren]]: An welcher Stelle weicht das Programm vom Soll ab?&lt;br /&gt;
# [[Softwaretest|Testen]]: Funktioniert die Änderung wirklich – auch in mehreren Situationen?&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Scratch 3.0 Programming Screenshot.png|500px|rahmenlos|center]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
{{#ev:youtube|   https://www.youtube.com/watch?v=9jTPZfhuVro   |500|center}}&lt;br /&gt;
&lt;br /&gt;
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?&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Was bedeutet Debugging? =&lt;br /&gt;
&lt;br /&gt;
Ein &amp;#039;&amp;#039;&amp;#039;Bug&amp;#039;&amp;#039;&amp;#039; ist ein Fehler in einem Programm oder Computersystem. &amp;#039;&amp;#039;&amp;#039;Debugging&amp;#039;&amp;#039;&amp;#039; bedeutet, die Ursache eines Fehlers zu suchen, einzugrenzen und zu beheben. Ein wichtiger Unterschied ist:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Testen&amp;#039;&amp;#039;&amp;#039; zeigt Dir, &amp;#039;&amp;#039;&amp;#039;dass&amp;#039;&amp;#039;&amp;#039; etwas nicht wie erwartet funktioniert.  &lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Debugging&amp;#039;&amp;#039;&amp;#039; hilft Dir herauszufinden, &amp;#039;&amp;#039;&amp;#039;warum&amp;#039;&amp;#039;&amp;#039; es nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
Ein hilfreicher Ablauf lautet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ERWARTUNG festlegen&lt;br /&gt;
        ↓&lt;br /&gt;
PROGRAMM ausführen&lt;br /&gt;
        ↓&lt;br /&gt;
BEOBACHTUNG notieren&lt;br /&gt;
        ↓&lt;br /&gt;
SCHRITT FÜR SCHRITT nachvollziehen&lt;br /&gt;
        ↓&lt;br /&gt;
FEHLERSTELLE eingrenzen&lt;br /&gt;
        ↓&lt;br /&gt;
EINE Änderung durchführen&lt;br /&gt;
        ↓&lt;br /&gt;
ERNEUT testen&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Debugging ist also kein wildes Ausprobieren. Gute Fehlersuche folgt einer Spur.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Woher kommt das Wort Bug? ==&lt;br /&gt;
&lt;br /&gt;
Das englische Wort &amp;#039;&amp;#039;&amp;#039;bug&amp;#039;&amp;#039;&amp;#039; 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.&lt;br /&gt;
&lt;br /&gt;
[[Datei:First Computer Bug, 1947.jpg|500px|rahmenlos|center]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Das wichtigste Debugging-Werkzeug: SOLL und IST =&lt;br /&gt;
&lt;br /&gt;
Bevor Du Code änderst, solltest Du zwei Dinge klar formulieren.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Frage&lt;br /&gt;
! Beispiel&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;SOLL&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Nach dem Drücken der rechten Pfeiltaste bewegt sich die Figur 10 Schritte nach rechts.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;IST&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Nach dem Drücken der rechten Pfeiltaste bewegt sich die Figur 10 Schritte nach links.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
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 &amp;#039;&amp;#039;&amp;#039;Richtung&amp;#039;&amp;#039;&amp;#039; oder beim &amp;#039;&amp;#039;&amp;#039;Vorzeichen&amp;#039;&amp;#039;&amp;#039; der Bewegung.&lt;br /&gt;
&lt;br /&gt;
Das ist ein wichtiges Prinzip: &amp;#039;&amp;#039;&amp;#039;Nutze jede Beobachtung, um mögliche Fehlerstellen auszuschließen.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Debugging-Protokoll ==&lt;br /&gt;
&lt;br /&gt;
Ein einfaches Debugging-Protokoll kann so aussehen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Schritt&lt;br /&gt;
! Leitfrage&lt;br /&gt;
! Beispiel&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Was erwarte ich?&lt;br /&gt;
| Figur bewegt sich nach rechts.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Was beobachte ich?&lt;br /&gt;
| Figur bewegt sich nach links.&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Wo könnte die Ursache liegen?&lt;br /&gt;
| Im Bewegungsbefehl.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Wie teste ich die Vermutung?&lt;br /&gt;
| Vorzeichen der x-Änderung prüfen.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Was ändere ich?&lt;br /&gt;
| -10 durch +10 ersetzen.&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Wie prüfe ich die Lösung?&lt;br /&gt;
| Taste mehrfach drücken und Position beobachten.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Dieses Protokoll trainiert Dich darin, nicht sofort irgendeinen Block zu verschieben, sondern eine &amp;#039;&amp;#039;&amp;#039;begründete Vermutung&amp;#039;&amp;#039;&amp;#039; zu testen.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Programme Schritt für Schritt lesen =&lt;br /&gt;
&lt;br /&gt;
Computer führen Anweisungen in einer festgelegten Reihenfolge aus. Beim Debugging hilft es, den Ablauf langsam nachzuspielen. Das nennt man oft &amp;#039;&amp;#039;&amp;#039;Tracing&amp;#039;&amp;#039;&amp;#039; oder Ablaufverfolgung.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Flowchart de.svg|450px|rahmenlos|center]]&lt;br /&gt;
&lt;br /&gt;
Ein [[Programmablaufplan]] oder Flussdiagramm stellt einen Algorithmus grafisch dar. Typische Elemente sind Start und Ende, Anweisungen, Entscheidungen und Pfeile für die Reihenfolge.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Mini-Tracing: Wo ist die Figur? ==&lt;br /&gt;
&lt;br /&gt;
Gegeben ist dieses Programm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SETZE x AUF 0&lt;br /&gt;
ÄNDERE x UM 10&lt;br /&gt;
ÄNDERE x UM 10&lt;br /&gt;
ÄNDERE x UM -5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Verfolge den Wert von x:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Schritt&lt;br /&gt;
! Befehl&lt;br /&gt;
! x vorher&lt;br /&gt;
! x nachher&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| SETZE x AUF 0&lt;br /&gt;
| unbekannt&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| ÄNDERE x UM 10&lt;br /&gt;
| 0&lt;br /&gt;
| 10&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| ÄNDERE x UM 10&lt;br /&gt;
| 10&lt;br /&gt;
| 20&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| ÄNDERE x UM -5&lt;br /&gt;
| 20&lt;br /&gt;
| 15&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Wenn das Programm am Ende x = 25 liefern sollte, erkennst Du beim Tracing genau, &amp;#039;&amp;#039;&amp;#039;ab welchem Schritt&amp;#039;&amp;#039;&amp;#039; die Werte nicht mehr zur Erwartung passen.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Debugging-Strategie für Klasse 6 =&lt;br /&gt;
&lt;br /&gt;
Merke Dir die Kurzform &amp;#039;&amp;#039;&amp;#039;E-A-F-T&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Erwarten&amp;#039;&amp;#039;&amp;#039;: Beschreibe genau, was passieren soll.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Ablaufen&amp;#039;&amp;#039;&amp;#039;: Gehe das Programm Schritt für Schritt durch.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Fehler finden&amp;#039;&amp;#039;&amp;#039;: Suche die erste Stelle, an der SOLL und IST auseinandergehen.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Testen&amp;#039;&amp;#039;&amp;#039;: Ändere möglichst nur eine Sache und prüfe erneut.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Eine Vermutung – eine Änderung – ein Test.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Use-Case 1: Das Spiel funktioniert nicht =&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Fehlerhaftes Programm A: falscher Start ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WENN TASTE LEERTASTE GEDRÜCKT&lt;br /&gt;
  SETZE x AUF 0&lt;br /&gt;
  SETZE y AUF 0&lt;br /&gt;
  SETZE PUNKTE AUF 0&lt;br /&gt;
  STARTE SPIEL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Erwartung:&amp;#039;&amp;#039;&amp;#039; Das Spiel startet beim Klick auf die grüne Flagge.  &lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beobachtung:&amp;#039;&amp;#039;&amp;#039; Beim Klick auf die grüne Flagge passiert nichts.&lt;br /&gt;
&lt;br /&gt;
Die Zeilen im Programm können korrekt sein, aber das &amp;#039;&amp;#039;&amp;#039;Ereignis&amp;#039;&amp;#039;&amp;#039; am Anfang ist falsch. Das Programm wartet auf die Leertaste.&lt;br /&gt;
&lt;br /&gt;
Eine mögliche Korrektur ist:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WENN GRÜNE FLAGGE ANGEKLICKT&lt;br /&gt;
  SETZE x AUF 0&lt;br /&gt;
  SETZE y AUF 0&lt;br /&gt;
  SETZE PUNKTE AUF 0&lt;br /&gt;
  STARTE SPIEL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Debugging-Lektion:&amp;#039;&amp;#039;&amp;#039; Wenn ein Programm gar nicht beginnt, prüfe zuerst das Startereignis.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Fehlerhaftes Programm B: Startsignal erreicht die Spielfigur nicht ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BÜHNE:&lt;br /&gt;
WENN GRÜNE FLAGGE ANGEKLICKT&lt;br /&gt;
  SENDE &amp;quot;START&amp;quot;&lt;br /&gt;
&lt;br /&gt;
FIGUR:&lt;br /&gt;
WENN ICH &amp;quot;LOS&amp;quot; EMPFANGE&lt;br /&gt;
  GEHE ZU x:0 y:0&lt;br /&gt;
  ZEIGE DICH&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Bühne sendet &amp;#039;&amp;#039;&amp;#039;START&amp;#039;&amp;#039;&amp;#039;, die Figur wartet aber auf &amp;#039;&amp;#039;&amp;#039;LOS&amp;#039;&amp;#039;&amp;#039;. Beide Namen müssen zusammenpassen.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Testidee:&amp;#039;&amp;#039;&amp;#039; Füge vorübergehend einen sichtbaren Hinweis ein:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WENN ICH &amp;quot;START&amp;quot; EMPFANGE&lt;br /&gt;
  SAGE &amp;quot;Startsignal angekommen&amp;quot; FÜR 1 SEKUNDE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn der Text erscheint, weißt Du: Das Signal kommt an. Danach kannst Du die nächsten Blöcke prüfen.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Ablaufdiagramm zum Startfehler ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Start: grüne Flagge]&lt;br /&gt;
          |&lt;br /&gt;
          v&lt;br /&gt;
[Signal START senden]&lt;br /&gt;
          |&lt;br /&gt;
          v&lt;br /&gt;
&amp;lt;Empfängt Figur START?&amp;gt;&lt;br /&gt;
      /        \&lt;br /&gt;
    ja          nein&lt;br /&gt;
    |            |&lt;br /&gt;
    v            v&lt;br /&gt;
[Figur       [Fehler bei&lt;br /&gt;
initialisieren] Signalname /&lt;br /&gt;
    |         Empfänger]&lt;br /&gt;
    v&lt;br /&gt;
[Spiel läuft]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieses Diagramm hilft Dir beim Eingrenzen. Wenn die Figur kein Startsignal empfängt, musst Du noch nicht über Bewegung oder Kollision nachdenken.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Use-Case 2: Die Figur bewegt sich falsch =&lt;br /&gt;
&lt;br /&gt;
Die Figur soll sich mit den Pfeiltasten bewegen. Rechts soll wirklich rechts sein, links soll links sein.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Scratch Screenshot, Running Script.png|500px|rahmenlos|center]]&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Fehlerhaftes Programm C: falsches Vorzeichen ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WENN TASTE RECHTSPFEIL GEDRÜCKT&lt;br /&gt;
  ÄNDERE x UM -10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SOLL:&amp;#039;&amp;#039;&amp;#039; x wird größer.  &lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;IST:&amp;#039;&amp;#039;&amp;#039; x wird kleiner.&lt;br /&gt;
&lt;br /&gt;
Die Korrektur lautet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WENN TASTE RECHTSPFEIL GEDRÜCKT&lt;br /&gt;
  ÄNDERE x UM 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Debugging-Test:&amp;#039;&amp;#039;&amp;#039; Starte bei x = 0. Drücke die rechte Pfeiltaste genau dreimal. Danach sollte x = 30 sein.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Fehlerhaftes Programm D: falsche Achse ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WENN TASTE PFEIL NACH OBEN GEDRÜCKT&lt;br /&gt;
  ÄNDERE x UM 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Figur bewegt sich nach rechts statt nach oben. Für die Bewegung nach oben muss die y-Koordinate verändert werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WENN TASTE PFEIL NACH OBEN GEDRÜCKT&lt;br /&gt;
  ÄNDERE y UM 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Merksatz:&amp;#039;&amp;#039;&amp;#039; x steuert links und rechts, y steuert unten und oben.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Fehlerhaftes Programm E: Bewegung wird sofort zurückgesetzt ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WIEDERHOLE FORTLAUFEND&lt;br /&gt;
  SETZE x AUF 0&lt;br /&gt;
  WENN TASTE RECHTSPFEIL GEDRÜCKT&lt;br /&gt;
    ÄNDERE x UM 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Figur kann kurz nach rechts springen, wird aber im nächsten Schleifendurchlauf wieder auf x = 0 gesetzt.&lt;br /&gt;
&lt;br /&gt;
Eine bessere Struktur ist:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SETZE x AUF 0&lt;br /&gt;
WIEDERHOLE FORTLAUFEND&lt;br /&gt;
  WENN TASTE RECHTSPFEIL GEDRÜCKT&lt;br /&gt;
    ÄNDERE x UM 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Debugging-Lektion:&amp;#039;&amp;#039;&amp;#039; Prüfe nicht nur einzelne Blöcke, sondern auch, &amp;#039;&amp;#039;&amp;#039;wie oft&amp;#039;&amp;#039;&amp;#039; sie ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Ablaufdiagramm zur Bewegung ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Spiel läuft]&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
&amp;lt;Taste rechts gedrückt?&amp;gt;&lt;br /&gt;
   /          \&lt;br /&gt;
 nein          ja&lt;br /&gt;
  |            |&lt;br /&gt;
  |            v&lt;br /&gt;
  |      [x um +10 ändern]&lt;br /&gt;
  |            |&lt;br /&gt;
  +------------+&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
[nächste Prüfung]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der entscheidende Testpunkt ist: Wird bei „ja“ wirklich die richtige Variable mit dem richtigen Vorzeichen verändert?&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Use-Case 3: Die Schleife läuft zu oft =&lt;br /&gt;
&lt;br /&gt;
Schleifen wiederholen Befehle. Genau deshalb können kleine Fehler große Auswirkungen haben.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Programmingloops.svg|500px|rahmenlos|center]]&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Fehlerhaftes Programm F: falsche Wiederholungszahl ==&lt;br /&gt;
&lt;br /&gt;
Die Figur soll genau drei Sterne erzeugen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WIEDERHOLE 30 MAL&lt;br /&gt;
  ERZEUGE STERN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Programm läuft technisch korrekt, aber die Zahl ist falsch.&lt;br /&gt;
&lt;br /&gt;
Korrektur:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WIEDERHOLE 3 MAL&lt;br /&gt;
  ERZEUGE STERN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Wichtig:&amp;#039;&amp;#039;&amp;#039; Nicht jeder Bug führt zu einem Absturz. Ein Programm kann vollständig laufen und trotzdem das falsche Ergebnis liefern.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Fehlerhaftes Programm G: Zähler wird nicht verändert ==&lt;br /&gt;
&lt;br /&gt;
Die Schleife soll enden, wenn der Zähler 5 erreicht.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SETZE ZÄHLER AUF 0&lt;br /&gt;
WIEDERHOLE BIS ZÄHLER = 5&lt;br /&gt;
  SAGE &amp;quot;Runde&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Zähler bleibt immer 0. Die Bedingung wird deshalb nie wahr.&lt;br /&gt;
&lt;br /&gt;
Korrektur:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SETZE ZÄHLER AUF 0&lt;br /&gt;
WIEDERHOLE BIS ZÄHLER = 5&lt;br /&gt;
  SAGE &amp;quot;Runde&amp;quot;&lt;br /&gt;
  ÄNDERE ZÄHLER UM 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beim Debugging kannst Du die Zählerwerte sichtbar machen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SETZE ZÄHLER AUF 0&lt;br /&gt;
WIEDERHOLE BIS ZÄHLER = 5&lt;br /&gt;
  SAGE ZÄHLER&lt;br /&gt;
  ÄNDERE ZÄHLER UM 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So siehst Du die Folge 0, 1, 2, 3, 4 und kannst überprüfen, ob die Schleife passend endet.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Flowgorithm Loops Main.svg|450px|rahmenlos|center]]&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Fehlerhaftes Programm H: Bedingung falsch herum ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SETZE ZÄHLER AUF 0&lt;br /&gt;
WIEDERHOLE BIS ZÄHLER &amp;lt; 5&lt;br /&gt;
  ÄNDERE ZÄHLER UM 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da 0 bereits kleiner als 5 ist, kann die Schleife sofort enden. Gemeint war etwa:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SETZE ZÄHLER AUF 0&lt;br /&gt;
WIEDERHOLE BIS ZÄHLER = 5&lt;br /&gt;
  ÄNDERE ZÄHLER UM 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Debugging-Frage:&amp;#039;&amp;#039;&amp;#039; Ist die Abbruchbedingung am Anfang schon wahr? Dann startet die Wiederholung möglicherweise gar nicht.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Ablaufdiagramm für eine Zählschleife ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Zähler = 0]&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
&amp;lt;Zähler = 5?&amp;gt;&lt;br /&gt;
   /       \&lt;br /&gt;
 ja         nein&lt;br /&gt;
 |           |&lt;br /&gt;
 v           v&lt;br /&gt;
[Ende]   [Aktion]&lt;br /&gt;
             |&lt;br /&gt;
             v&lt;br /&gt;
      [Zähler + 1]&lt;br /&gt;
             |&lt;br /&gt;
             +------ zurück zur Prüfung&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Blockly Loops main.png|450px|rahmenlos|center]]&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Weitere typische Bugs in Spielen =&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Fehlerhaftes Programm I: Punktestand wird ständig gelöscht ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WIEDERHOLE FORTLAUFEND&lt;br /&gt;
  SETZE PUNKTE AUF 0&lt;br /&gt;
  WENN FIGUR BERÜHRT MÜNZE&lt;br /&gt;
    ÄNDERE PUNKTE UM 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Punktestand wird in jedem Schleifendurchlauf wieder auf 0 gesetzt.&lt;br /&gt;
&lt;br /&gt;
Besser:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SETZE PUNKTE AUF 0&lt;br /&gt;
WIEDERHOLE FORTLAUFEND&lt;br /&gt;
  WENN FIGUR BERÜHRT MÜNZE&lt;br /&gt;
    ÄNDERE PUNKTE UM 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Debugging-Lektion:&amp;#039;&amp;#039;&amp;#039; Initialisierung gehört meist vor die Hauptschleife.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Fehlerhaftes Programm J: Punkte steigen zu schnell ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WIEDERHOLE FORTLAUFEND&lt;br /&gt;
  WENN FIGUR BERÜHRT MÜNZE&lt;br /&gt;
    ÄNDERE PUNKTE UM 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn die Figur die Münze mehrere Schleifendurchläufe lang berührt, können in sehr kurzer Zeit viele Punkte entstehen.&lt;br /&gt;
&lt;br /&gt;
Eine mögliche Lösung:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WIEDERHOLE FORTLAUFEND&lt;br /&gt;
  WENN FIGUR BERÜHRT MÜNZE&lt;br /&gt;
    ÄNDERE PUNKTE UM 1&lt;br /&gt;
    VERSTECKE MÜNZE&lt;br /&gt;
    WARTE 1 SEKUNDE&lt;br /&gt;
    SETZE MÜNZE AN NEUE POSITION&lt;br /&gt;
    ZEIGE MÜNZE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jetzt sorgt die Änderung dafür, dass eine Berührung nicht dauerhaft weitergezählt wird.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Fehlerhaftes Programm K: Springen in die falsche Richtung ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WENN TASTE LEERTASTE GEDRÜCKT&lt;br /&gt;
  WIEDERHOLE 5 MAL&lt;br /&gt;
    ÄNDERE y UM -10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Eine einfache Sprungidee:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WENN TASTE LEERTASTE GEDRÜCKT&lt;br /&gt;
  WIEDERHOLE 5 MAL&lt;br /&gt;
    ÄNDERE y UM 10&lt;br /&gt;
  WIEDERHOLE 5 MAL&lt;br /&gt;
    ÄNDERE y UM -10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Fehlerhaftes Programm L: Die Figur läuft durch die Wand ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WENN TASTE RECHTSPFEIL GEDRÜCKT&lt;br /&gt;
  ÄNDERE x UM 10&lt;br /&gt;
WENN FIGUR BERÜHRT WAND&lt;br /&gt;
  SAGE &amp;quot;Aua!&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Programm erkennt zwar die Wand, korrigiert aber die Position nicht. Eine mögliche Verbesserung:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WENN TASTE RECHTSPFEIL GEDRÜCKT&lt;br /&gt;
  ÄNDERE x UM 10&lt;br /&gt;
  WENN FIGUR BERÜHRT WAND&lt;br /&gt;
    ÄNDERE x UM -10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit wird die letzte Bewegung zurückgenommen.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Debugging mit Erwartungen =&lt;br /&gt;
&lt;br /&gt;
Eine starke Debugging-Technik besteht darin, vor jedem wichtigen Schritt vorherzusagen, was passieren müsste.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SETZE PUNKTE AUF 0&lt;br /&gt;
WIEDERHOLE 3 MAL&lt;br /&gt;
  ÄNDERE PUNKTE UM 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vorhersage:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Start: 0&lt;br /&gt;
nach Runde 1: 2&lt;br /&gt;
nach Runde 2: 4&lt;br /&gt;
nach Runde 3: 6&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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?&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Trace-Tabelle als Fehlerlupe ==&lt;br /&gt;
&lt;br /&gt;
Für dieses fehlerhafte Programm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SETZE LEBEN AUF 3&lt;br /&gt;
WIEDERHOLE 4 MAL&lt;br /&gt;
  ÄNDERE LEBEN UM -1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ergibt sich:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Zeitpunkt&lt;br /&gt;
! Leben&lt;br /&gt;
! Erwartung bei maximal drei Treffern&lt;br /&gt;
|-&lt;br /&gt;
| Start&lt;br /&gt;
| 3&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| nach Runde 1&lt;br /&gt;
| 2&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| nach Runde 2&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| nach Runde 3&lt;br /&gt;
| 0&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| nach Runde 4&lt;br /&gt;
| -1&lt;br /&gt;
| Spiel sollte bereits beendet sein&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die &amp;#039;&amp;#039;&amp;#039;erste auffällige Stelle&amp;#039;&amp;#039;&amp;#039; ist Runde 4. Genau dort solltest Du die Schleife oder Abbruchbedingung untersuchen.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Fehler eingrenzen statt raten =&lt;br /&gt;
&lt;br /&gt;
Wenn ein Spiel aus vielen Teilen besteht, solltest Du den Fehlerbereich verkleinern.&lt;br /&gt;
&lt;br /&gt;
Beispiel: Die Spielfigur sammelt keine Münzen.&lt;br /&gt;
&lt;br /&gt;
# Prüfe zuerst: Kann sich die Figur bewegen?&lt;br /&gt;
# Prüfe dann: Berührt die Figur die Münze wirklich?&lt;br /&gt;
# Prüfe dann: Wird die Kollisionsbedingung wahr?&lt;br /&gt;
# Prüfe dann: Wird der Punktestand verändert?&lt;br /&gt;
# Prüfe zuletzt: Wird der Punktestand vielleicht direkt wieder zurückgesetzt?&lt;br /&gt;
&lt;br /&gt;
So teilst Du ein großes Problem in kleine prüfbare Fragen.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Sichtbare Testausgaben ==&lt;br /&gt;
&lt;br /&gt;
Eine einfache Debugging-Hilfe ist eine zusätzliche Ausgabe:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WENN FIGUR BERÜHRT MÜNZE&lt;br /&gt;
  SAGE &amp;quot;Kollision erkannt&amp;quot;&lt;br /&gt;
  ÄNDERE PUNKTE UM 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn „Kollision erkannt“ erscheint, aber die Punkte nicht steigen, liegt der Fehler wahrscheinlich &amp;#039;&amp;#039;&amp;#039;nach&amp;#039;&amp;#039;&amp;#039; der Kollisionsprüfung.&lt;br /&gt;
&lt;br /&gt;
Wenn der Text nicht erscheint, liegt der Fehler wahrscheinlich &amp;#039;&amp;#039;&amp;#039;vor&amp;#039;&amp;#039;&amp;#039; oder &amp;#039;&amp;#039;&amp;#039;in&amp;#039;&amp;#039;&amp;#039; der Kollisionsprüfung.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Testfälle planen =&lt;br /&gt;
&lt;br /&gt;
Ein guter Test besteht nicht nur aus „einmal klicken“. Überlege verschiedene Situationen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Testfall&lt;br /&gt;
! Eingabe oder Situation&lt;br /&gt;
! Erwartetes Ergebnis&lt;br /&gt;
|-&lt;br /&gt;
| Start&lt;br /&gt;
| Grüne Flagge&lt;br /&gt;
| Figur startet in der Mitte, Punkte = 0&lt;br /&gt;
|-&lt;br /&gt;
| Bewegung rechts&lt;br /&gt;
| Rechtspfeil einmal&lt;br /&gt;
| x wird um 10 größer&lt;br /&gt;
|-&lt;br /&gt;
| Bewegung links&lt;br /&gt;
| Linkspfeil einmal&lt;br /&gt;
| x wird um 10 kleiner&lt;br /&gt;
|-&lt;br /&gt;
| Münze&lt;br /&gt;
| Figur berührt Münze&lt;br /&gt;
| Punkte steigen genau um 1&lt;br /&gt;
|-&lt;br /&gt;
| Wand&lt;br /&gt;
| Figur berührt rechte Wand&lt;br /&gt;
| Figur bleibt im Spielfeld&lt;br /&gt;
|-&lt;br /&gt;
| Schleife&lt;br /&gt;
| Runde startet&lt;br /&gt;
| Genau 3 Gegner erscheinen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Mit solchen Testfällen überprüfst Du nicht nur den Bugfix, sondern auch, ob durch die Änderung etwas anderes kaputtgegangen ist.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Debugging mit Ablaufdiagrammen =&lt;br /&gt;
&lt;br /&gt;
Ablaufdiagramme sind besonders hilfreich, wenn Du bei Bedingungen und Schleifen den Überblick verlierst.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Ablaufdiagramm: Münze einsammeln ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Spiel läuft]&lt;br /&gt;
      |&lt;br /&gt;
      v&lt;br /&gt;
&amp;lt;Berührt Figur Münze?&amp;gt;&lt;br /&gt;
    /          \&lt;br /&gt;
  nein          ja&lt;br /&gt;
   |             |&lt;br /&gt;
   |             v&lt;br /&gt;
   |        [Punkte + 1]&lt;br /&gt;
   |             |&lt;br /&gt;
   |             v&lt;br /&gt;
   |        [Münze neu setzen]&lt;br /&gt;
   |             |&lt;br /&gt;
   +-------------+&lt;br /&gt;
         |&lt;br /&gt;
         v&lt;br /&gt;
 [erneut prüfen]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Debugging-Frage:&amp;#039;&amp;#039;&amp;#039; Wenn die Punkte zu schnell steigen, fehlt vielleicht der Schritt „Münze neu setzen“ oder die Figur bleibt zu lange im Berührungszustand.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Ablaufdiagramm: Spielende ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Start mit 3 Leben]&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
   [Spiel läuft]&lt;br /&gt;
        |&lt;br /&gt;
        v&lt;br /&gt;
&amp;lt;Spieler getroffen?&amp;gt;&lt;br /&gt;
    /        \&lt;br /&gt;
  nein        ja&lt;br /&gt;
   |           |&lt;br /&gt;
   |           v&lt;br /&gt;
   |      [Leben - 1]&lt;br /&gt;
   |           |&lt;br /&gt;
   |           v&lt;br /&gt;
   |       &amp;lt;Leben = 0?&amp;gt;&lt;br /&gt;
   |         /      \&lt;br /&gt;
   |       nein      ja&lt;br /&gt;
   |        |         |&lt;br /&gt;
   +--------+         v&lt;br /&gt;
                  [Spielende]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein Fehler kann entstehen, wenn die Prüfung „Leben = 0?“ fehlt oder an der falschen Stelle steht.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Debugging-Regeln für gute Fehlersucherinnen und Fehlersucher =&lt;br /&gt;
&lt;br /&gt;
# Ändere nicht sofort den Code, sondern beschreibe zuerst den Fehler.&lt;br /&gt;
# Schreibe SOLL und IST auf.&lt;br /&gt;
# Reproduziere den Fehler: Kannst Du ihn erneut auslösen?&lt;br /&gt;
# Prüfe den Ablauf in kleinen Schritten.&lt;br /&gt;
# Beobachte Variablenwerte und Zähler.&lt;br /&gt;
# Ändere möglichst nur eine Sache auf einmal.&lt;br /&gt;
# Teste danach nicht nur den alten Fehlerfall, sondern auch andere wichtige Fälle.&lt;br /&gt;
# Bewahre funktionierende Zwischenschritte auf.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Vom Spiel zum echten Programmieren =&lt;br /&gt;
&lt;br /&gt;
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: &amp;#039;&amp;#039;&amp;#039;Erwartung – Beobachtung – Eingrenzung – Test&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
{{#ev:youtube|   https://www.youtube.com/watch?v=eLjEU_ybm6M   |500|center}}&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Interaktive Aufgaben =&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Quiz: Teste Dein Wissen ==&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Was ist der erste sinnvolle Schritt beim Debugging?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Genau beschreiben was das Programm tun soll)&lt;br /&gt;
(!Mehrere Blöcke gleichzeitig ändern)&lt;br /&gt;
(!Das ganze Programm löschen)&lt;br /&gt;
(!Nur auf gut Glück testen)&lt;br /&gt;
&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Eine Figur soll nach rechts laufen bewegt sich aber nach links. Was prüfst Du zuerst?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Das Vorzeichen der Änderung von x)&lt;br /&gt;
(!Die Lautstärke)&lt;br /&gt;
(!Die Hintergrundfarbe)&lt;br /&gt;
(!Den Namen des Projekts)&lt;br /&gt;
&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Was zeigt eine Trace-Tabelle?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Werte und Zustände Schritt für Schritt)&lt;br /&gt;
(!Nur die Farbe der Spielfigur)&lt;br /&gt;
(!Nur den fertigen Programmcode)&lt;br /&gt;
(!Die Internetgeschwindigkeit)&lt;br /&gt;
&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Eine Schleife soll fünfmal laufen läuft aber endlos. Was ist eine typische Ursache?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Der Zähler wird nicht verändert)&lt;br /&gt;
(!Die Figur hat ein Kostüm)&lt;br /&gt;
(!Der Bildschirm ist zu groß)&lt;br /&gt;
(!Die Maus wurde bewegt)&lt;br /&gt;
&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Warum sollte man beim Debugging möglichst nur eine Sache gleichzeitig ändern?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Damit man erkennt welche Änderung den Fehler beeinflusst hat)&lt;br /&gt;
(!Damit das Programm langsamer wird)&lt;br /&gt;
(!Damit weniger Variablen existieren)&lt;br /&gt;
(!Damit alle Schleifen verschwinden)&lt;br /&gt;
&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Was bedeutet SOLL beim Debugging?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Das erwartete Verhalten)&lt;br /&gt;
(!Das beobachtete Verhalten)&lt;br /&gt;
(!Der Dateiname)&lt;br /&gt;
(!Die Anzahl der Figuren)&lt;br /&gt;
&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Warum ist ein Testfall nützlich?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Er legt Eingabe und erwartetes Ergebnis fest)&lt;br /&gt;
(!Er ersetzt das Programm)&lt;br /&gt;
(!Er verhindert jede Schleife)&lt;br /&gt;
(!Er ändert automatisch alle Fehler)&lt;br /&gt;
&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Eine Figur reagiert gar nicht auf den Start. Was solltest Du früh prüfen?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Das Startereignis)&lt;br /&gt;
(!Nur die Punktzahl)&lt;br /&gt;
(!Nur die Kostümfarbe)&lt;br /&gt;
(!Nur die Größe der Bühne)&lt;br /&gt;
&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Wann ist eine Debugging-Vermutung besonders gut?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Wenn sie mit einem gezielten Test überprüft werden kann)&lt;br /&gt;
(!Wenn sie möglichst kompliziert klingt)&lt;br /&gt;
(!Wenn sie ohne Beobachtung entsteht)&lt;br /&gt;
(!Wenn gleichzeitig viele Stellen geändert werden)&lt;br /&gt;
&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Was solltest Du nach einem Bugfix tun?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Das Programm erneut mit mehreren passenden Testfällen prüfen)&lt;br /&gt;
(!Sofort alle Tests löschen)&lt;br /&gt;
(!Alle Variablen umbenennen)&lt;br /&gt;
(!Das Programm nicht mehr starten)&lt;br /&gt;
&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Memory ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;memo-quiz&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Debugging || systematische Fehlersuche&lt;br /&gt;
|-&lt;br /&gt;
| SOLL || erwartetes Verhalten&lt;br /&gt;
|-&lt;br /&gt;
| IST || beobachtetes Verhalten&lt;br /&gt;
|-&lt;br /&gt;
| Trace || schrittweises Nachvollziehen&lt;br /&gt;
|-&lt;br /&gt;
| Bug || Programmfehler&lt;br /&gt;
|-&lt;br /&gt;
| Testfall || Eingabe mit erwartetem Ergebnis&lt;br /&gt;
|-&lt;br /&gt;
| Schleife || wiederholte Ausführung&lt;br /&gt;
|-&lt;br /&gt;
| Bedingung || Entscheidung im Programm&lt;br /&gt;
|}&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Drag and Drop ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;lueckentext-quiz&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! Ordne die richtigen Begriffe zu.&lt;br /&gt;
! Thema&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Startereignis prüfen&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Spiel reagiert beim Start überhaupt nicht&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Vorzeichen prüfen&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Figur läuft nach links statt nach rechts&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Achse prüfen&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Figur läuft seitwärts statt nach oben&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Zähler prüfen&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Schleife läuft zu oft oder endlos&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Initialisierung prüfen&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Punktestand springt immer wieder auf null&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Kollisionsbedingung prüfen&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Münze wird berührt aber nicht erkannt&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Abbruchbedingung prüfen&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Spiel endet trotz null Leben nicht&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
{{E}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Debugging-Drag-and-Drop: Schrittfolge ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;lueckentext-quiz&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! Ordne die richtigen Begriffe zu.&lt;br /&gt;
! Debugging-Schritt&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Erwartung formulieren&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Was soll passieren&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Beobachtung notieren&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Was passiert tatsächlich&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Ablauf verfolgen&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Werte und Befehle Schritt für Schritt prüfen&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Fehlerstelle eingrenzen&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Erste Abweichung zwischen Soll und Ist suchen&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Vermutung testen&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Eine gezielte Änderung ausprobieren&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Ergebnis prüfen&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Mehrere passende Testfälle erneut durchführen&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
{{E}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Interaktive Debugging-Aufgabe: Drei Spielefehler ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;lueckentext-quiz&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! Ordne die passende Korrektur zu.&lt;br /&gt;
! Fehlerbild&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;x um 10 ändern&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Rechtspfeil bewegt Figur nach links weil x um minus 10 geändert wird&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;y um 10 ändern&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Pfeil nach oben bewegt Figur seitwärts&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Wiederhole 3 mal&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Es erscheinen 30 statt 3 Gegner&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Zähler um 1 erhöhen&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Wiederhole-bis-Schleife endet nie&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Punkte vor der Schleife auf null setzen&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Punktestand wird ständig gelöscht&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
{{E}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Kreuzworträtsel ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;kreuzwort-quiz&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Debugging || Wie nennt man die systematische Suche nach Programmfehlern?&lt;br /&gt;
|-&lt;br /&gt;
| Schleife || Wie heißt eine Programmstruktur für Wiederholungen?&lt;br /&gt;
|-&lt;br /&gt;
| Variable || Wo kann ein Programm veränderliche Werte speichern?&lt;br /&gt;
|-&lt;br /&gt;
| Testfall || Wie nennt man eine festgelegte Prüfsituation mit erwartetem Ergebnis?&lt;br /&gt;
|-&lt;br /&gt;
| Bedingung || Wie heißt eine Prüfung die über einen weiteren Ablauf entscheidet?&lt;br /&gt;
|-&lt;br /&gt;
| Ablaufplan || Wie kann ein Algorithmus grafisch mit Pfeilen und Symbolen dargestellt werden?&lt;br /&gt;
|}&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== LearningApps ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;iframe&amp;gt; https://learningapps.org/index.php?s=IM6+Debugging+Fehler+finden &amp;lt;/iframe&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Lückentext ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;quiz display=simple&amp;gt;&lt;br /&gt;
{&amp;#039;&amp;#039;&amp;#039;Vervollständige den Text.&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|type=&amp;quot;{}&amp;quot;}&lt;br /&gt;
Beim Debugging formulierst Du zuerst eine { Erwartung } für das Programm. Danach vergleichst Du das erwartete Verhalten mit der tatsächlichen { Beobachtung }. Beim schrittweisen Nachvollziehen eines Programms spricht man häufig von einem { Trace }. Eine Schleife führt Anweisungen { wiederholt } aus. Wenn eine Figur nach links statt nach rechts läuft, kann ein falsches { Vorzeichen } die Ursache sein. Für Bewegungen nach oben und unten wird meist die { y-Achse } verändert. Ein Zähler muss in einer Zählschleife passend { verändert } werden. Nach einer Korrektur solltest Du das Programm erneut { testen }. Ein festgelegter Test mit Eingabe und erwarteter Ausgabe heißt { Testfall }. Gute Fehlersuche ändert möglichst nur { eine } vermutete Ursache gleichzeitig.&lt;br /&gt;
&amp;lt;/quiz&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Offene Aufgaben =&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
=== Leicht ===&lt;br /&gt;
&lt;br /&gt;
# [[SOLL-IST-Protokoll]]: Nimm ein kleines Spiel und beschreibe für drei Aktionen jeweils SOLL und IST.&lt;br /&gt;
# [[Bewegungsfehler]]: Erstelle absichtlich ein Programm, bei dem die rechte Pfeiltaste die Figur nach links bewegt. Tausche mit einer Partnerperson und lasse den Fehler finden.&lt;br /&gt;
# [[Trace-Tabelle]]: Erfinde ein Programm mit vier Änderungen an einer Variablen und erstelle dazu eine Tabelle mit den Werten nach jedem Schritt.&lt;br /&gt;
# [[Schleifenbeobachtung]]: Baue eine Schleife, die genau fünf sichtbare Aktionen ausführt, und dokumentiere, wie Du überprüfst, dass es wirklich fünf sind.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
=== Standard ===&lt;br /&gt;
&lt;br /&gt;
# [[Debugging-Spiel]]: Programmiere ein Minispiel mit drei absichtlich eingebauten Fehlern. Erstelle Hinweise, damit andere die Fehler systematisch finden können.&lt;br /&gt;
# [[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.&lt;br /&gt;
# [[Testplan]]: Entwickle mindestens sechs Testfälle für ein Spiel mit Bewegung, Punkten und Spielende.&lt;br /&gt;
# [[Fehlerinterview]]: Befrage eine Mitschülerin oder einen Mitschüler beim Debugging. Notiere, welche Vermutungen zuerst aufgestellt und wie sie getestet wurden.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
=== Schwer ===&lt;br /&gt;
&lt;br /&gt;
# [[Fehlerbibliothek]]: Sammle fünf unterschiedliche Bug-Arten aus eigenen Programmen und ordne jedem Bug ein Symptom, eine Ursache, eine Korrektur und einen Test zu.&lt;br /&gt;
# [[Debugging-Challenge]]: Erstelle ein Spiel, bei dem ein Fehler nur unter einer bestimmten Bedingung auftritt. Beschreibe, wie man ihn reproduzieren kann.&lt;br /&gt;
# [[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.&lt;br /&gt;
# [[Debugging-Tutorial]]: Produziere ein kurzes Erklärvideo, in dem Du an einem fehlerhaften Programm Erwartung, schrittweises Nachvollziehen, Fehlerlokalisierung und erneutes Testen demonstrierst.&lt;br /&gt;
&lt;br /&gt;
{{:Offene Aufgabe - MOOC erstellen}}&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Lernkontrolle =&lt;br /&gt;
&lt;br /&gt;
# [[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.&lt;br /&gt;
# [[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.&lt;br /&gt;
# [[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.&lt;br /&gt;
# [[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.&lt;br /&gt;
# [[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.&lt;br /&gt;
# [[Transferaufgabe Debugging]]: Übertrage die Debugging-Schritte auf einen Alltagsfehler, zum Beispiel eine Lampe, die nicht leuchtet. Zeige Gemeinsamkeiten zwischen technischer Fehlersuche und Programmdiagnose.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Lernnachweis =&lt;br /&gt;
&lt;br /&gt;
Für einen Lernnachweis zu diesem Thema ist wichtig, dass Du nicht nur einen fertigen Bugfix zeigst, sondern Deinen Denkweg nachvollziehbar machst.&lt;br /&gt;
&lt;br /&gt;
# Du formulierst das erwartete Verhalten als klares SOLL.&lt;br /&gt;
# Du beschreibst die tatsächliche Beobachtung als IST.&lt;br /&gt;
# Du kannst einen Programmablauf Schritt für Schritt nachvollziehen.&lt;br /&gt;
# Du erkennst typische Fehler bei Ereignissen, Bewegungsrichtungen, Achsen, Variablen, Bedingungen und Schleifen.&lt;br /&gt;
# Du grenzt eine Fehlerstelle mit Beobachtungen oder Testausgaben ein.&lt;br /&gt;
# Du formulierst eine überprüfbare Vermutung zur Ursache.&lt;br /&gt;
# Du veränderst gezielt eine passende Programmstelle.&lt;br /&gt;
# Du verwendest mehrere Testfälle, um die Korrektur zu prüfen.&lt;br /&gt;
# Du kannst erklären, warum Deine Änderung den Fehler behebt.&lt;br /&gt;
# Du dokumentierst mindestens einen Debugging-Prozess vollständig von der Erwartung bis zum abschließenden Test.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= OERs zum Thema =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;iframe&amp;gt; https://de.m.wikipedia.org/wiki/Debuggen &amp;lt;/iframe&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Verknüpfte Lernbereiche =&lt;br /&gt;
&lt;br /&gt;
{| align=center&lt;br /&gt;
{{:D-Tab}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[Debugging]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
# [[Programmfehler]]&lt;br /&gt;
# [[Algorithmus]]&lt;br /&gt;
# [[Programmablaufplan]]&lt;br /&gt;
# [[Scratch]]&lt;br /&gt;
# [[Schleife]]&lt;br /&gt;
# [[Bedingung]]&lt;br /&gt;
# [[Variable]]&lt;br /&gt;
# [[Softwaretest]]&lt;br /&gt;
# [[Computerspiel]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Informatik]]&lt;br /&gt;
[[Kategorie:Programmierung]]&lt;br /&gt;
[[Kategorie:Debugging]]&lt;br /&gt;
[[Kategorie:Algorithmus]]&lt;br /&gt;
[[Kategorie:Medienbildung]]&lt;br /&gt;
[[Kategorie:Klasse 6]]&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= aiMOOC-Projekte =&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AI_MOOC]] [[Kategorie:GPT aiMOOC]]&lt;br /&gt;
{{MT}}&lt;/div&gt;</summary>
		<author><name>Glanz</name></author>
	</entry>
</feed>