ProgrammierenITBO-Teilmodul-4

Aus ZUM-Unterrichten

Anleitung für die SuS im Open Document Format (ODF)


Handreichung für die Lehrperson

Ziele
  • Die SuS verstehen eine Simulation als Möglichkeit für das Suchen nach einer Problemlösung.
  • Sie analysieren und testen das zur Verfügung gestellte Beispiel der Simulation eines Rasenmäher-Roboters.
  • Sie ergänzen das Simulationsbeispiel mit einem selbst entwickelten Algorithmus.
  • Sie verstehen das Blockkonzept zur übersichtlichen Gliederung von Programmen.


Einführung

Eine Computersimulation ist ein Programm, das ein System (z.B. die Strassen in einem Quartier mit hohem Verkehrsaufkommen) modellhaft abbildet und (oft mit einer Visualisierung) aufzeigt, wie sich das simulierte System unter verschiedenen Bedingungen verhält (z.B. wenn Tempo 30 eingeführt würde, oder wenn einige Strassen zu Einbahnstrassen umfunktioniert würden). Computersimulationen sind beispielsweise dann nützlich, wenn Experimente mit dem interessierenden realen System zu aufwändig, zu gefährlich oder gar unmöglich sind. Und sogar wenn Experimente möglich sind, hilft der Vergleich mit Simulationen oft, das Verhalten der einzelnen Komponenten eines Systems besser zu verstehen.
In dieser Unterrichtssequenz analysieren die SuS das Beispiel eines Simulationsprogramms für einen Rasenmähroboter. Sie ergänzen das Programm mit einem selbst entwickelten Algorithmus, der bewirkt, dass der Mähroboter am Ende der Simulation in seine Box «zurückfährt». Die SuS lernen dabei das Konzept der Gliederung von Programmen mit Blöcken kennen und anwenden.
Der Einstieg in die Unterrichtssequenz könnte über einen Advanced Organizer erfolgen: Wer kennt aus Erfahrung (von zuhause, von den Nachbarn, usw.) Rasenmäher- oder Staubsauger-Roboter? Mähen bzw. saugen diese Roboter den Rasen bzw. das Zimmer vollständig bis in die letzte Ecke um alle Hindernisse herum? Kann man das beweisen? Abschätzen? Überprüfen? Was halten Sie von einer Simulation?


Sich mit dem Beispielprogramm vertraut machen

Für diese Unterrichtssequenz benötigen die SuS das Programm (Projekt) «RobotLawnMowerSimulation-Vorlage». Es ist auf der Scratch-Plattform veröffentlicht und kann von dort auf den eigenen Rechner heruntergeladen werden: https://scratch.mit.edu/projects/694607927
Das Programm simuliert einen Rasenmäher-Roboter auf einem Grundstück mit Sträuchern. Wenn der Rasenmäher ein Hindernis berührt (einen Strauch, den Rand des Grundstücks), fährt er ein Stück zurück und dreht sich dann um einen zufälligen Winkel zwischen 15 und 30 Grad. Danach fährt der Rasenmäher geradeaus weiter, bis er wieder ein Hindernis berührt.
Die SuS sollen das Programm mehrere Male neu starten und jeweils eine Bildschirmaufnahme des Simulationsergebnisses machen. Wenn die SuS die Bahnen des Rasenmähers vergleichen, sollen sie erkennen, dass sich die Ergebnisse unterscheiden, und verstehen, warum das so ist.
Der Algorithmus für die Steuerung des Mähroboters ist nichtdeterministisch: In welche Richtung der Mähroboter nach dem Berühren eines Hindernisses weiterfährt ist nicht festgelegt, sondern vom zufälligen Winkel (zwischen 15 und 30 Grad) abhängig. Das Ergebnis der Programmausführung ist nicht determiniert: Die Bahnen des Rasenmähers sind bei jeder Simulation wieder anders.
Ist der Algorithmus robust, d.h. funktioniert er noch zuverlässig, wenn die Ausführungsbedingungen ändern?
Die SuS müssen verstehen, was ein Algorithmus ist. Die Begriffe «nichtdeterministisch», «nicht determiniert» und «robust» müssen sie zur Kenntnis nehmen. Dadurch sollte Ihnen bewusst werden, dass ein Algorithmus bei mehrmaliger Ausführung nicht unbedingt immer die exakt gleiche Lösung liefert.
Die SuS sollen das Programm verändern, um die Ergebnisse der Simulation bei unterschiedlichen Bedingungen zu beurteilen. Sie platzieren dazu ein zusätzliches Hindernis (Haus) auf das «Grundstück».
Damit der Rasenmäher-Roboter das Haus als Hindernis erkennen kann, müssen die SuS die betreffende Ausführungsbedingung im Block «mowing» anpassen.
Vielleicht benötigen die SuS bei diesem Schritt Unterstützung in der Form eines Hinweises, damit sie darauf achten, dass der Rasenmäher-Roboter nicht «durch das Haus hindurch mäht».


Das Blockkonzept zur Gliederung von Programmen


Das Skript des Simulationsprogramms ist sehr einfach.
Das Skript umfasst zwei Blöcke: «initialization» und «mowing». Die einzelnen Befehle für die Initialisierung bzw. die Steuerung des Mähroboters sind als eigene Blöcke definiert. Die Gliederung in Blöcke macht das Programm übersichtlich.
Die SuS sollen erkennen, dass mit (Skript-) Blöcken gegliederte Programme übersichtlicher und leichter zu verstehen sind. Sie sollen deshalb die nachfolgende Erweiterung des Simulationsprogramms in Form eines Blockes realisieren.


Den Algorithmus zur Steuerung des Mähroboters erweitern


Der Rasenmäher bleibt nach der Anzahl vorgegebener Schritte irgendwo stehen. Der Rasenmäher sollte am Ende aber wieder in die Box zurück fahren.
Die SuS sollen einen Algorithmus entwerfen, der den Rasenmäher zur Box zurück führt und dazu den Block «returnToBox» definieren.
Diese Aufgabe ist nicht trivial. Der Algorithmus für die Rückkehr des Rasenmähers zur Box muss wie der Algorithmus zum Mähen das «Umfahren» von Hindernissen ermöglichen. Während der Algorithmus zum Mähen nicht determiniert ist, muss der Algorithmus für die Rückkehr zur Box immer das gleiche Ergebnis liefern, also determiniert sein. Der Algorithmus zum Mähen kann deshalb nicht einfach kopiert werden. Anhand dieses Beispiels können die SuS ganz grundsätzliche Überlegungen zu Algorithmen diskutieren.
Die SuS sollen ihren Algorithmus testen. Vielleicht wäre es vorteilhaft, mit den SuS vorgängig mögliche Teststrategien zu diskutieren. Der Rasenmähers bleibt ja am Ende der Simulation an einer zufälligen Position stehen; genügen da einige wenige Versuche, um den Algorithmus für die Rückkehr zur Box zu testen? Oder wäre es vorteilhaft, den Rasenmäher «von Hand» an einigen ausgewählten Stellen zu positionieren und zu testen, ob er mit dem selbst entworfenen Algorithmus zur Box zurückkehrt?
Die grundsätzliche Frage bezüglich der Korrektheit von Programmen wird auf jeden Fall in der abschliesenden Reflexion (noch einmal) aufgeworfen.


Die Musterlösung für die Mäh-Roboter-Simulation ist auf der Scratch-Website veröffentlicht und kann von dort auf den eigenen Rechner heruntergeladen werden: https://scratch.mit.edu/projects/696401627



Reflexion
  • Diskutieren Sie den Nutzen der Simulation aus der Sicht eines Unternehmens, das Mähroboter anbietet, und aus der Sicht einer Person, die einen Mähroboter anschaffen will.
  • Wahrscheinlich ist bei keiner Simulation, die Sie gemacht haben, der «Rasen» vollständig «gemäht» worden. Müssen wir akzeptieren, dass auch mit Computern nicht für alle Probleme vollständig befriedigende Lösungen gefunden werden können? Müssen wir auf Garantien für Programme verzichten?
  • Sind Ihnen weitere Anwendungsbereiche bekannt, in denen Simulationen nützlich oder sogar nötig sind?
  • Diskutieren Sie mögliche Risiken, die bei der Übertragung von Simulationsergebnissen in die Realität auftreten könnten.




Diskussion (im ZUMpad)

https://zumpad.zum.de/p/ProgrammierenITBO-Teil4