Den Ort eines Fehlers ermitteln und den Kode berichtigen, damit sich das Objekt zum gewünschten Zielort bewegen kann.
Informatik: Programmieren
Eine Reihe von Anweisungen angeben, die ein Objekt programmieren, sich von einer Stelle zur nächsten zu bewegen.
Informatisches Denken: Algorithmisches Denken
Mathematik: Geometrie
Erklären, warum es wichtig ist, ganz genaue Anweisungen zu geben.
Informatik: Programmieren
Mathematik: Geometrie
Genaue Anweisungen in einem Tempo angeben, dem die Person folgen kann.
Literacy: Sprechen
Kommunizieren, wann der Code nicht richtig funktioniert, damit die Person weiß, wo Fehler behoben werden müssen.
Informatik: Programmieren
Literacy: Sprechen
Dieses Beispiel ist eine Einführungslektion mit einem Objekt in der Mitte. Das Mädchen auf dem weißen Quadrat ist „der Bot“, das Mädchen hinter dem Feld „der Programmierer“ und der Junge in Grün und Gold „der Tester“.
Schlüsselfragen
Warum ist es wichtig, sehr klare Anweisungen zu geben? Habt ihr jemals unklare Anweisungen erhalten und daraufhin das Falsche getan?
Lektionseinstieg
Für diese Lektion wird ein großes Gitterfeld genötigt, wie beispielsweise:
ein auf den Boden gemaltes Schachbrett im Freien,
ein Gittermuster auf dem Klassenzimmerteppich,
ein mit Abdeckband auf den Klassenzimmerboden geklebtes Gitterfeld,
ein mit Kreide im Klassenzimmer oder im Freien gezeichnetes Gitterfeld.
Bitten Sie die Schüler um zwei Freiwillige und teilen Sie ihnen und sich selbst folgende Rollen zu:
Rolle 1: Der Entwickler (der das Programm schreibt) - Diese Rolle wird anfangs vom Lehrer übernommen.
Rolle 2: Der Tester (der dem Bot Anweisungen gibt und auf Fehler achtet).
Rolle 3: Der Bot (der das Programm ausführt).
Lektionsaktivitäten
Lehrer: „Ich werde der Programmierer sein, werde aber eure Hilfe benötigen. Wir werden den Bot programmieren und nicht nur fernsteuern, da ALLE Anweisungen geschrieben werden, bevor der Bot diesen Anweisungen folgen kann.“
„Es ist unsere Aufgabe, klare Anweisungen für den Bot niederzuschreiben, der (nennen Sie den Namen des Schülers) sein wird. (Name des Schülers) wird der Tester sein und die Anweisungen an den Bot weitergeben. Der Tester wird nach Fehlern Ausschau halten.“
„Zuallererst müssen wir festlegen, welche Programmiersprache wir dafür verwenden werden. Ich habe Pfeile gewählt, um Vorwärts bewegen, Nach links drehen und Nach rechts drehen darzustellen.“
„Debugging macht Spaß, da man Gelegenheit erhält, sein Programm nach erfolgter Fertigstellung zu ändern, wenn man feststellt, dass es nicht wie vorgesehen funktioniert.“
Unterrichtsbeobachtungen
Es gibt verschiedene Möglichkeiten, dieselbe Anweisung zum Ausdruck zu bringen (z. B. einen Pfeil zeichnen, „Vorwärts“ schreiben oder den obigen Ausdruck mit Pfeilen verwenden), es ist jedoch wichtig, dabei einheitlich vorzugehen. Die Entscheidungen über das genaue Format der Anweisungen haben unterschiedliche Programmiersprachen zur Folge und es ist völlig in Ordnung, wenn dies passiert, solange wir die begrifflichen Inhalte der jeweils verwendeten Sprache kennen.
Wenn sich Schüler über die Richtungen links und rechts nicht ganz sicher sind, können Sie die Links- und Rechts-Karten ausdrucken und an ihren Schuhen befestigen oder sie die Karten in der Hand halten lassen.
Lassen Sie den Bot die einzelnen Anweisungen ausführen: Vorwärts bedeutet, sich um ein Quadrat vorwärts zu bewegen, und Links bzw. Rechts bedeutet, sich an Ort und Stelle um 90 Grad zu drehen (und dabei nicht zu einem anderen Quadrat weiterzugehen).
Lehrer: „Wir werden nun unser eigenes Programm schreiben, mit dem Rotkäppchen ihre Großmutter retten wird. Das Ziel ist, Rotkäppchen zu dem Quadrat zu bringen, in dem sich die Großmutter befindet. Schreiben wir gemeinsam die ersten beiden Schritte auf das Whiteboard.“ (Zeichnen Sie zwei Vorwärtspfeile.)
Unterrichtsbeobachtungen
Eventuell müssen manche Schüler das Programm zunächst in Aktion sehen, um den Ablauf nachvollziehen zu können. Platzieren Sie also die Pfeile auf dem Gitterfeld, um aufzuzeigen, was das Rotkäppchen tun wird. Es können auch zunächst die ersten paar Anweisungen des Codes aufgeschrieben, getestet und dann um weitere Anweisungen ergänzt werden, was ebenfalls eine ausgezeichnete Methode ist. Wenn Sie Pfeile auf dem Gitterefeld platzieren, ist in Quadraten mit Richtungsänderungspfeilen auch ein Vorwärtspfeil erforderlich. Alternativ dazu können die Vorwärtspfeile auch auf der Linie zwischen den Quadraten platziert werden, was deren Funktion deutlicher macht.
„Versuchen wir es also einmal und schauen, was passiert.“
„Tester – Kannst du bitte diese Anweisungen nehmen und sie an den Bot weitergeben. Unterstreiche alles, was nicht funktioniert, wenn du siehst, dass der Bot etwas macht, das nicht richtig aussieht, und gib mir dann das Whiteboard zurück, um herauszufinden, wie der Fehler behoben werden kann.“
Unterrichtsbeobachtungen
Ein wichtiger Aspekt dieser Aktivität ist die Tatsache, dass alle Anweisungen geschrieben werden, bevor wir sie testen. Es ist nicht gestattet, dem Bot zusätzliche Anweisungen zu geben. Der Bot muss die niedergeschriebenen Anweisungen genau befolgen (was amüsant sein kann, wenn er in die falsche Richtung geht). Genau das geschieht beim Programmieren: Es werden Anweisungen, also Befehle, für ein Programm geschrieben, die dann während des Programmablaufs ausgeführt werden, ohne dass der Programmierer eingreift. Programmierer müssen sich beim Schreiben der Anweisungen die zu erwartenden Vorgänge vor ihrem geistigen Auge vorstellen. Während des Testens zeigt sich dann, ob ihre Planung richtig war!
Lehrer: „Bot – nimm bitte das Rotkäppchen und bereite dich darauf vor, die Anweisungen für den Tester entgegenzunehmen.“ (Der Bot kann ein Spielzeug oder einen Spielstein tragen, um damit Rotkäppchen darzustellen oder sich vorstellen, Rotkäppchen zu leiten).
Der Tester liest dann vom Whiteboard ab: „Vorwärts bewegen, vorwärts bewegen.“
Unterrichtsbeobachtungen
An dieser Stelle könnten Sie die Frage aufwerfen, ob eventuell eine „Stopp“-Anweisung benötigt wird. Die Schüler sollten in der Lage sein, die Schlussfolgerung zu ziehen, dass das Programm automatisch stoppt, nachdem es keine weiteren Anweisungen gibt.
„Tester, ist das Programm wie erwartet abgelaufen?“
Bejaht der Tester die Frage, fahren Sie mit dem Programmieren fort, anderenfalls sollten alle Fehlfunktionen behoben und das Programm erneut ausgeführt werden. In diesem Beispiel sollte sich das Rotkäppchen in dem diagonal unterhalb Großmutters Hütte liegenden Quadrat befinden.
Ergänzen wir das Ganze nun etwas. Was wäre als Nächstes zu programmieren? Zeigen Sie auf die Stelle, an der das nächste Stück Code hinzugefügt werden muss und fügen Sie eine Vorwärtsbewegung und Nach links drehen, Nach links drehen hinzu. (Dies ist absichtlich falsch.)
Ich glaube, wir können es jetzt testen. „Tester, bitte teste mein Programm“ (der Programmierer händigt das Whiteboard mit dem Programm dem Tester aus und der Bot sollte zum Startquadrat zurückkehren, um das Programm erneut ablaufen lassen zu können).
Lehrer: „Tester, denk daran, dass es dein Job ist, etwaige Fehler in meinem Programm zu erkennen. Fehler sind alle nicht erwartungsgemäß ablaufenden Vorgänge. Deine Aufgabe ist es, den Teil des Codes zu unterstreichen, an der du bemerkst, dass eine Anweisung nicht den gewünschten Verlauf zu nehmen scheint. Du kannst den Bot an der Stelle stoppen, an der du einen Fehler vermutest.“
Der Tester liest dann die Programmanweisungen vom Whiteboard ab und der Bot führt diese aus während sie vorgelesen werden.
„Vorwärts bewegen“
„Vorwärts bewegen“
„Vorwärts bewegen“
„Nach links drehen“
„Nach links drehen“
Unterrichtsbeobachtungen
Vom Tester sollte das zweite „Nach links drehen“ unterstrichen werden, da sich Rotkäppchen zweimal auf der Stelle gedreht haben müsste, anstatt sich einmal zu drehen und dann erneut vorwärts zu bewegen (was erforderlich ist, um zu Großmutters Hütte zu gelangen).
Lehrer: „Ausgezeichnet. Du hast einen Fehler entdeckt! Ich freue mich, wenn Fehler entdeckt werden und ich mich an die Lösung des Problems machen kann. Lasst uns jetzt zusammen daran arbeiten, meinen Fehler ausfindig zu machen. Tester, du hast gute Arbeit geleistet, den Fehler zu erkennen, doch jetzt ist es die Aufgabe des Programmierers, den Fehler ausfindig zu machen und zu beheben.“
Unterrichtsbeobachtungen
Wenn die Klasse nicht bestimmen kann, wie der Programmfehler zu beseitigen ist, gehen Sie die einzelnen Schritte durch und stellen Sie den Ablauf mithilfe von Rotkäppchen nach. War die Vorwärtsbewegung zweckmäßig? War die zweite Vorwärtsbewegung zweckmäßig? War die dritte Vorwärtsbewegung zweckmäßig? War die Linksdrehung zweckmäßig? Wie ist es mit der zweiten Linksdrehung? Nein? Okay, ich glaube, wir haben den Fehler gefunden. Unterstreichen wir diesen also und überlegen uns, was wir hier ändern müssen. Vorwärts bewegen? Testen wir es.
Sobald der Fehler identifiziert wurde, bitten Sie den Tester, das Ganze erneut zu testen. Bitten Sie den Bot, das Rotkäppchen an die Startposition zurückzubringen, und dann den Tester, die Anweisungen vorzulesen.
Haben wir Rotkäppchen erfolgreich programmiert, die Großmutter zu retten?
Unterrichtsbeobachtungen
Wir haben Rotkäppchen erfolgreich programmiert, die Großmutter zu retten, da sich Rotkäppchen und die Großmutter im gleichen Quadrat befinden.
Gibt es andere Möglichkeiten, wie wir Rotkäppchen programmieren könnten, um zur Großmutter zu gelangen? (Es gibt viele andere Möglichkeiten. Beispielsweise würde Links, Vorwärts, Rechts, Vorwärts, Vorwärts, Vorwärts ebenfalls funktionieren.) Diskutiert die Programmierungsoptionen und testet alle durch. Was wäre, wenn wir Rotkäppchen zur Großmutter führen und sie dann beide zurück in Sicherheit bringen wollten?
Unterrichtsbeobachtungen
Beim Programmieren gibt es zahlreiche Möglichkeiten, denselben Vorgang zu programmieren. Manche mögen effizienter sein als andere, sie sind jedoch alle richtig, sofern sie das gewünschte Ergebnis erzielen. Beispielsweise könnte ein Schüler Rotkäppchen so programmieren, dass es an der Außenseite des Gitterfelds entlang geht und dann zur Großmutter abbiegt. Dies wäre eine richtige Lösung, erfordert jedoch eine Menge zusätzlichen Code, der nicht notwendig ist. Häufig kommt es auch vor, dass sich zwei Programmierer Programme ausdenken, die mit ungefähr demselben Zeitaufwand das gleiche Ergebnis erzielen (zum Beispiel: Sowohl „Vorwärts, Links, Vorwärts, Rechts“ als auch „Links, Vorwärts, Rechts, Vorwärts“ bringen den Bot zurselben Stelle und Ausrichtung; beides sind gute Lösungen). Ein wichtiges Konzept beim Programmieren ist die Tatsache, dass es mehrere gute Lösungen geben kann. Nur selten ist eine einzige Lösung die beste. Und dies bedeutet, dass das Werk eines Schülers, das sich von einer möglicherweise vorhandenen Musterlösung unterscheidet, nicht unbedingt falsch sein muss. Sofern das beabsichtigte Ergebnis erzielt wird, wenn auch auf eine andere Weise, ist die Lösung dennoch richtig.
Unterrichtsbeobachtungen
Stellen Sie Ihre Schüler für diese Aufgabe um die Außenseite Ihres großen Gitterfelds herum auf. Alternativ dazu können Sie auch ein kleineres Gitterfeld wie ein Schachbrett oder die Rückseite eines 100er-Bretts verwenden (oder das mit dieser Lektion zur Verfügung gestellte ausdrucken), wobei der Bot dann eine Spielfigur auf dem Gitterfeld bewegt anstatt im Gitterfeld herumzulaufen.
Wenn Sie mehrere kleine Gitterfelder haben, können die Schüler in Dreiergruppen (Programmierer, Tester, Bot) unabhängig voneinander arbeiten. Wenn Sie ein großes Gitterfeld verwenden, kann eine Schülergruppe an ihrem Programm arbeiten, während eine andere Gruppe ihr Programm testet. Jede Gruppe darf ihr Programm einmal testen und dann ist die nächste Gruppe dran, während die vorherige Gruppe mit der Programmfehlersuche beginnt.
Lassen Sie die Schüler ihre eigenen Spielfiguren auswählen (eine, die gerettet werden muss, und die andere, die der Held ist) und lassen Sie sie den Prozess wie folgt üben:
Platziert die Spielfigur in einem Quadrat am Rand des Gitterfelds mit Blick nach innen.
Platziert die zu rettende Spielfigur innerhalb des Gitterfelds.
Der Programmierer notiert das Programm auf einem Whiteboard.
Dann nimmt der Tester das Whiteboard und einen andersfarbigen Whiteboardstift. Der Tester gibt die einzelnen Programmanweisungen an den Bot weiter. Der Tester hakt die Teile des Codes ab, die richtig sind, und unterstreicht die Stellen, an denen der Code nicht dem entspricht, was der Bot eigentlich tun sollte. Wenn dies passiert, sagt der Tester „Stopp“ und der Bot hält an und kehrt zur Startposition zurück. Der Tester gibt das Whiteboard an den Programmierer weiter, der dann den Code prüft und korrigiert und dem Tester eine überarbeitete Version zurückgibt.
Wiederholt Schritt 4, bis das Programm fehlerfrei ist und wie vorgesehen funktioniert.
Wechselt die Rollen und bewegt die Bot-Figur und die zu rettende Spielfigur, bis jeder einmal dran war.
Unterrichtsbeobachtungen
Wenn Sie bemerken, dass Ihre Schüler Unterstützung benötigen, um die benötigten Anweisungen zu visualisieren, können Sie die zur Verfügung gestellten Pfeile (Karten) auf dem Boden verwenden oder, bei einem kleinen Tischgitterfeld, mit einem Whiteboardstift oder kleinen Pfeilen aushelfen. So können sich die Schüler leichter vorstellen, was sie programmieren möchten.
Die nächste Aufgabe
Platzieren Sie Hindernisse auf dem Gitterfeld, um den Pfad schwieriger zu gestalten, da nun diese Hindernisse umgangen werden müssen. Hindernisse könnten der große böse Wolf oder andere Tiere sein, oder Sie könnten sich ein neues Szenario für das Gitterfeld ausdenken.
Weitere Aufgaben
Lassen Sie Schülergruppen die Rettung programmieren, ohne dabei die Linksdrehung einzusetzen (d. h. die einzigen Anweisungen sind Vorwärts und Nach rechts drehen). Unterstützen Sie die Schüler mit dem Hinweis, dass eine Linksdrehung auch durch drei Rechtsdrehungsanweisungen erreicht werden kann. Forden Sie sie anschließend auf, bei ihrem Programm nur mit der Linksdrehung aber ohne Rechtsdrehung zu arbeiten.
Fragen Sie die Schüler, ob sie Programme nur mit den Rechts- und Linksdrehungsanweisungen (d. h. ohne Vorwärtsanweisung) schreiben könnten? (Dies ist nicht möglich, da hierbei nur die Möglichkeit bestünde, sich auf einem Quadrat zu drehen.)
Unterrichtsbeobachtungen
Durch Eliminieren einer der Drehanweisungen wird deutlich, dass unterschiedliche Anweisungssätze dasselbe Ergebnis erzielen können, wobei jedoch manche praktischer sind als andere (zum Beispiel gibt es viele verschiedene Programmiersprachen, die im Prinzip dieselben Berechnungen anstellen, nur dass manche für einige Zwecke besser geeignet sind als andere).
Werden weniger Anweisungen eingesetzt, vereinfacht dies die Konstruktion eines Computers, was diesen wiederum schneller oder günstiger macht. Nehmen wir das Beispiel eines äußerst einfachen Computers, der über eine Additionsanweisung, jedoch nicht über eine Multiplikationsanweisung verfügt. Wenn nun Multiplikationen ausgeführt werden müssten, könnte dies durch Ausführen zahlreicher Additionen erreicht werden. Viele gebräuchliche Prozessoren sind heutzutage mit reduzierten Anweisungs- bzw. Befehlsssätzen ausgestattet (diese werden Reduced Instruction Set Computers bzw. RISC genannt), da hierdurch mehr Leistungsfähigkeit erzielt wird, als mit umfangreichen Befehlssätzen (Complex Instruction Set Computers bzw. CISC).
Das Gelernte anwenden
Viele Menschen denken, das Programmieren eine Art von besonderem Talent ist, das man entweder hat oder nicht hat, aber das stimmt nicht! Wie alle Fertigkeiten ist auch Programmieren etwas, das man sich durch Übung, Fehler machen und aus diesen Fehlern lernen aneignen kann. Allerdings müssen Programmierer kommunikationsfähig sein, insbesondere dann, wenn sie die Funktionen eines Programms ausarbeiten. Und sie müssen beharrlich sein, wenn es um das Auffinden und Beseitigen von Fehlern geht. Fehler sind beim Programmieren keine Seltenheit. Daher ist es ungemein wichtig, erkennen zu können, wo ein Fehler auftritt, und Problemlösungen zur Fehlerbeseitigung erarbeiten zu können. Es spielt keine Rolle, wieviel Programmiererfahrung jemand hat. Es wird immer Fehler geben, die es zu finden und zu beseitigen gilt. Das ist auch der Grund warum „Debugging“ (also Fehlersuche und -beseitigung) ein so wichtiges Wort für Programmierer ist.
Einfache Roboterspielzeuge wie die „Bienen-Bots“ verfügen über ähnliche Befehlssätze und können zur Nachbereitung herangezogen werden.
Lektionsbetrachtung
Nachdem wir jetzt erlebt haben, wie es ist, Programmierer zu sein – was ist eurer Ansicht nach das Schwierigste an den Aufgaben eines Programmierers?
Informatische Denkzusammenhänge erkennen
Aus allen Lektionen ergeben sich Verbindungen zu informatischem Denken. Nachstehend sind ein paar allgemeine Verbindungen aufgeführt, die diesen Inhalt betreffen.
Teaching computational thinking through CSUnplugged activities supports students to learn how to describe a problem, identify what are the important details they need to solve this problem, break it down into small logical steps so that they can then create a process which solves the problem, and then evaluate this process. These skills are transferable to any other curriculum area, but are particularly relevant to developing digital systems and solving problems using the capabilities of computers.
Diese informatischen Denkkonzepte sind alle miteinander verbunden und stützen sich gegenseitig. Insoweit möchten wir jedoch anmerken, dass nicht alle Aspekte des informatischen Denkens in jeder Unterrichtseinheit oder Lektion vorkommen. Wir haben jeweils die für Sie wichtigen Verbindungen hervorgehoben, um Ihre Schüler in Aktion zu beobachten. Unser Artikel zu informatischem Denken enthält weitere Hintergrundinformationen dazu, wie wir informatisches Denken definieren.
Algorithmisches Denken
Das Ausarbeiten einer Anweisungs- bzw. Befehlsfolge für diese Lektion trainiert algorithmische Problemlösungen, da die Schüler einen Algorithmus erstellen müssen, um eine Aufgabe zu bewältigen. Computeralgorithmen basieren auf Eingabe, Ausgabe, Speicher, Ablauf, Auswahl und Iteration. Bei dieser Übung konzentrieren wir uns darauf, Anweisungen in die richtige Reihenfolge zu bringen.
Worauf Sie beispielsweise achten können:
Sind die Schüler in der Lage, das Ergebnis ihres Programms abzusehen, bevor es ausgeführt wird? Haben die Schüler erfolgreich einen schrittweisen Anweisungssatz erstellt, den der Roboter befolgen soll?
Abstraktion
In dieser Lektion haben wir das Schreiben eines Programms und die Verwendung einer Programmiersprache auf sehr einfache Anweisungen wie Vorwärts bewegen, Nach rechts drehen und Nach links drehen verallgemeinert. Die Schüler schreiben ihre Anweisungen in bekannten Wörtern oder Symbolen nieder und geben die Anweisungen mündlich an den Bot weiter, was die Notwendigkeit eliminiert, mit einer Programmiersprache vertraut zu sein und und das Ganze auf einem Computer auszuführen. Dies hilft Schülern zu verstehen, welche Rolle Abläufe bei der Programmierung spielen, ohne durch technische Terminologie und Werkzeuge verwirrt zu werden.
Worauf Sie beispielsweise achten können:
Verstehen die Schüler die Phasen des Programmierens (das Programm entwerfen, es testen und Fehler finden/beseitigen), obwohl die Umgebung von physischen Geräten losgelöst ist?
Dekomposition
In unserem Alltag geben wir für gewöhnlich keine so spezifischen Anweisungen wie „Nach rechts drehen, einen Schritt vorwärts, einen Schritt vorwärts, nach links drehen“ und es scheint unkomplizierter zu sein, einfach zu sagen „Geh dort hinüber“. Wenn wir jedoch etwas programmieren, müssen wir ganz spezifische Aussagen machen, da wir Computern jeden einzelnen Schritt genau vorgeben und uns dabei auf die wenigen Anweisungen beschränken müssen, die sie befolgen können. Schüler sollten mit etwas arbeiten, das ihnen geläufig ist, wie beispielsweise „Gehe zu diesem Quadrat“, und die einfachsten einzelnen Schritte bestimmen, die erforderlich sind, um dies zu erreichen.
Außerdem können Programme schrittweise geschrieben werden und Schüler wurden dazu angeregt, zunächst die ersten paar Schritte zu schreiben, diese zu testen und dann zu ergänzen, anstatt zu versuchen, die gesamte Aufgabenstellung auf einmal zu lösen. Wenn wir ein Programm in kleine Bestandteile zerlegen, erscheint die Aufgabe weniger erdrückend.
Worauf Sie beispielsweise achten können:
Arbeiten die Schüler schrittweise an der Aufgabenstellung? Können sie die Aktion „nach links gehen“ in die Anweisungen „nach links drehen, vorwärts bewegen“ zerlegen?
Generalisierung und Muster
Beim Schreiben der Programme werden sich wahrscheinlich viele verschiedene Muster ergeben, und wenn die Schüler diese Muster erkennen, können sie einige davon mehrere Male wiederverwenden, anstatt jeden Schritt erneut ausarbeiten zu müssen. Eventuell erkennen Schüler beispielsweise, dass sie für eine beabsichtigte 180-Grad-Drehung die Anweisung „Links“ oder „Rechts“ zweimal wiederholen können und dass dieselbe Befehlsfolge jederzeit wiederverwendet werden kann, wenn diese Bewegung erneut benötigt wird. Oder, dass sie für eine diagonale Bewegung über das Gitterfeld hinweg die Befehlsgruppe „links, vorwärts gehen, rechts, vorwärts gehen“ (links und rechts umgekehrt, je nach Richtung) nehmen und so oft wiederholen können, wie dies zum Überqueren des Felds erforderlich ist.
Worauf Sie beispielsweise achten können:
Wenn Schüler die Muster in ihren Programmen und in der Fortbewegung des Bots erkennen – ist ihnen dann auch klar, dass sie diese Befehlssätze jederzeit wiederverwenden können, wenn der Bot dieselbe Bewegung erneut ausführen soll?
Auswertung
Die Schüler können ihre Programme bei dieser Aktivität anhand einer eindeutigen Methode auswerten, und zwar indem sie sich fragen „Hat es funktioniert?“. Durch Testen ihrer Programme können sie beurteilen, ob ihre Anweisungen die Aufgabe erfüllen.
Es gibt mehrere Programme, die die Schüler schreiben könnten, um den Bot zum Zielquadrat zu befördern, doch manche davon sind wahrscheinlich effizienter als andere. Dies kann entweder anhand der Anzahl der Anweisungen oder anhand des Zeitaufwands gemessen werden.
Worauf Sie beispielsweise achten können:
Haben die Schüler erkannt, dass mehrere Lösungen (etliche verschiedene Befehlssätze) möglich sind? Konnten sie einige davon vergleichen und auswerten, welche weniger Befehle verwenden und am schnellsten sind? Haben sie erkannt, dass man durch Messen des Zeitaufwands praktische Einblicke in die Leistungsfähigkeit eines Programms erhält, dass jedoch das Zählen der Anzahl der Anweisungen folgerichtiger ist? (Da es nicht davon abhängt, wer die Rolle des Bot oder des Testers innehat.)
Logik
Wenn Schüler auf Fehlfunktionen in ihren Programmen stoßen, müssen sie ihre Anweisungen unter logischen Gesichtspunkten Schritt für Schritt durchgehen, um den Fehler zu finden. Sie müssen sich überlegen, was ihren Erwartungen zufolge passieren sollte, wenn alle Anweisungen befolgt werden. Sofern sie nicht das erwartete Ergebnis erhalten, müssen sie herausfinden, was schiefgelaufen ist, warum es schiefgelaufen ist und wie der Fehler behoben werden kann. Dies erfordert, dass die Schüler ihr logisches Denkvermögen anwenden.
Worauf Sie beispielsweise achten können:
Gehen die Schüler ihre Anweisungen durch und sehen voraus, was jeweils passieren wird, wenn eine Anweisung ausgeführt wird? Wenden sie eine logische Methode an, wenn sie ihre Anweisungen auf Fehler untersuchen? Wie beispielsweise die Anweisungen Schritt für Schritt durchzugehen und zu überprüfen, ob der erwartete Ablauf eintritt, oder ihr Programm mit vorherigen Versionen zu vergleichen, die scheinbar keinen Fehler enthielten?
Diese Definition ist leider nicht in Deutsch verfügbar!