ProgrammierenITBO-Teilmodul-3 und ProgrammierenITBO-Teilmodul-4: Unterschied zwischen den Seiten

Aus ZUM-Unterrichten
(Unterschied zwischen Seiten)
Markierung: 2017-Quelltext-Bearbeitung
 
(Die Seite wurde neu angelegt: „<!-- Kommentar --> =='''Anleitung für die SuS im Open Document Format (ODF)'''== {{Box|Download|mini…“)
Markierung: 2017-Quelltext-Bearbeitung
 
Zeile 5: Zeile 5:
-->
-->
=='''Anleitung für die SuS im Open Document Format (ODF)'''==
=='''Anleitung für die SuS im Open Document Format (ODF)'''==
{{Box|Download|[[Datei:ProgrammierenTeil3StudentEditionV4.odt|mini]]|Download
{{Box|Download|[[Datei:ProgrammierenTeil4StudentEditionV4.odt|mini]]|Download
}}
}}




=='''Handreichung für die Lehrperson'''==
=='''Handreichung für die Lehrperson'''==
{{Box|Download|[[Datei:ProgrammierenTeil3TeacherEditionV4.odt|mini]]|Download
{{Box|Download|[[Datei:ProgrammierenTeil4TeacherEditionV4.odt|mini]]|Download
}}
}}


{{Box|Ziele|* Die SuS analysieren eine einfache interaktive, multimediale «Geschichte».
{{Box|Ziele|* Die SuS verstehen eine Simulation als Möglichkeit für das Suchen nach einer Problemlösung.


* Sie ergänzen die «Geschichte» mit einer zusätzlichen Szene.
* Sie analysieren und testen das zur Verfügung gestellte Beispiel der Simulation eines Rasenmäher-Roboters.


* Die SuS lernen, wie sie «Szenen» und «Szenenwechsel» entwerfen und umsetzen können.
* Sie ergänzen das Simulationsbeispiel mit einem selbst entwickelten Algorithmus.


* Sie erfahren, wie Animationen entworfen und realisiert werden können.|Kurzinfo
* Sie verstehen das Blockkonzept zur übersichtlichen Gliederung von Programmen.|Kurzinfo
}}
}}


Zeile 25: Zeile 25:
==='''Einführung'''===
==='''Einführung'''===


:Die Faszination des Programmierens liegt vor allem in der ungeheuren Vielfalt möglicher Anwendungen.
: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.


:Mit Computerprogrammen können wir die kürzeste Strassenverbindung zwischen zwei Orten finden, Geld von einem Konto auf ein anderes überweisen, einen Text von der einen in eine andere Sprache übersetzen, eine E-Mail versenden, Filme schauen und vieles mehr.  
: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.


:Programme können auch unterhaltsam und lehrreich sein. Spiele und interaktive Geschichten auf dem PC oder Smartphone, zum Beispiel, finden viele Menschen attraktiv. Animationen erleichtern das Erkennen von Zusammenhängen und fördern das Verstehen von Abläufen. Solche Anwendungen sind oft multimedial; sie vermitteln mit Texten, Bildern, Geräuschen, Klängen und eventuell Musik und Videoclips vielfältige Sinneseindrücke.
: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?
 
:In dieser Unterrichtssequenz erweitern Sie das zur Verfügung gestellte Beispiel einer interaktiven, multimedialen «Geschichte» mit einer weiteren «Szene». Das Beispiel soll den Nutzer:innen ermöglichen, interessante Örtlichkeiten einer Stadt (St.Gallen) zu entdecken.


<br />
<br />
Zeile 37: Zeile 35:
==='''Sich mit dem Beispielprogramm vertraut machen'''===
==='''Sich mit dem Beispielprogramm vertraut machen'''===


:Die SuS sollen sich zunächst mit dem Projekt «St.Gallen entdecken» aus Nutzersicht 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.


:Das Projekt ist auf der Scratch-Website veröffentlicht und kann von dort auf den eigenen Rechner heruntergeladen werden: https://scratch.mit.edu/projects/694608954
: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.


:Das Projekt ist die Vorlage für eine multimediale, interaktive Entdeckungstour zu Örtlichkeiten in der Stadt St.Gallen. Eine Szene dieser «Geschichte» ist mit Geräuschen unterlegt. Die SuS müssen die Audioausgabe auf ihren Geräten aktiviert haben, um die Geräusche zu hören. Darauf muss man vielleicht hinweisen.
: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».


<br />
<br />


==='''Einzelne Szenen analysieren'''===
==='''Das Blockkonzept zur Gliederung von Programmen'''===


<br />
<br />


:Die SuS sollen anschliessend die Programmiererperspektive einnehmen und die Skripte einzelner Szenen analysieren: Was bewirken die Skripte? Welche Medien werden verwendet? Wie erfolgt der Wechsel zwischen den Szenen?
:Das Skript des Simulationsprogramms ist sehr einfach.


:Die Analyse soll die SuS vor allem ermutigen, Fragen zu stellen. Vielleicht ist es sinnvoll, die Fragen in einem gemeinsamen Online-Pad zu sammeln (z.B. eduPad: https://edupad.ch). Die SuS können sich so gegenseitig unterstützen und die Lehrperson kann nach Bedarf Impulse, Ergänzungen und Präzisierungen einbringen.  
: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.


<br />
<br />


==='''Interaktive Geschichten «erzählen»'''===
==='''Den Algorithmus zur Steuerung des Mähroboters erweitern'''===


<br />
<br />


:Dieses Kapitel erläutert die Vorgehensweise für den Entwurf einer interaktiven Geschichte.  
: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 das vorgeschlagene Vorgehen anwenden, um der Geschichte eine zusätzliche Szene hinzuzufügen. Sie können sich dabei an den Kostümen und Skripten der Vorlage orientieren, um die neue Szene passend zu gestalten.
:Die SuS sollen einen Algorithmus entwerfen, der den Rasenmäher zur Box zurück führt und dazu den Block «returnToBox» definieren.  


:Die SuS erzeugen die neue Szene, idem Sie in der Vorlage eine bestehende Szene (Figur) duplizieren. Beim «Kostüm» müssen die SuS das Bild ändern. Dazu benötigen sie die Datei «Bangor, Talstation der Mühleggbahn in St.Gallen», die sie auf Wikimedia Commons finden können (https://commons.wikimedia.org/wiki/File:%22Bangor%22,_Talstation_der_Mühleggbahn_in_St._Gallen.jpg).
: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.


:Das Gestalten der Szenen einer Geschichte ist eine kreative Aufgabe. Sie bietet den SuS einen relativ grossen Spielraum. Eine «korrekte Lösung» für diese Aufgabe gibt es nicht. Trotzdem sollte die zusätzliche Szene inhaltlich und optisch in die «Geschichte» passen. Das gilt auch für die Anpassung der Abfolge der Szenen. Kollegiales Feedback ist bei dieser Aufgabe eine Alternative, mindestens eine sinnvolle Ergänzung zu einer Beurteilung durch die Lehrperson.
: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?


<br />
:Die grundsätzliche Frage bezüglich der Korrektheit von Programmen wird auf jeden Fall in der abschliesenden Reflexion (noch einmal) aufgeworfen.


==='''Animationen'''===


<br />


:Dieses Kapitel erläutert, wie Animationen entworfen und programmiert werden (können).
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


:Die SuS sollen das vorgeschlagene Vorgehen anwenden, um die Animation zu programmieren, mit der die Route vom Bahnhof zur Mühleggbahn auf der Stadtkarte visualisiert wird.
<br />


:Diese Aufgabe sollte den SuS keine grösseren Schwierigkeiten bereiten. Allerdings könnten vielleicht einige SuS Mühe haben, die Abfolge der Szenen anzupassen. Dies einfach deshalb, weil sie eine zusätzliche Nachricht für das Anstossen der Szene «Mühleggbahn» vorsehen müssen.


:Auch für diese Sequenz des Unterrichts kann ein Online-Pad die SuS unterstützen (Fragen formulieren, Antworten und Skript-»Schnipsel» austauschen).
{{Box|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.


<br />
*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?


{{Box|Reflexion|*Programmieren ist oft eine kreative Tätigkeit. Eine interaktive «Geschichte» zu programmieren ist aber auch anspruchsvoll und unter Umständen aufwändig.
*Sind Ihnen weitere Anwendungsbereiche bekannt, in denen Simulationen nützlich oder sogar nötig sind?


*Es gibt deshalb für die Realisierung digitaler «Geschichten» spezielle Apps (z.B. Actionbound), welche den Autor:innen etliche Schritte des Programmierens ″ersparen″. Diskutieren Sie Vor- und Nachteile solcher Apps für den Einsatz in der Schule.|Hervorhebung1
*Diskutieren Sie mögliche Risiken, die bei der Übertragung von Simulationsergebnissen in die Realität auftreten könnten.|Hervorhebung1
}}
}}


<br />
<br />


 
{{Box|Musterlösung|* https://scratch.mit.edu/projects/696401627|Lösung
{{Box|Musterlösung|* https://scratch.mit.edu/projects/697547410|Lösung
}}
}}


<hr>
<hr />


<br />
<br />


=='''Diskussion (im ZUMpad)'''==
=='''Diskussion (im ZUMpad)'''==
https://zumpad.zum.de/p/ProgrammierenITBO-Teil3
https://zumpad.zum.de/p/ProgrammierenITBO-Teil4


<iframe name="embed_readwrite" src="https://zumpad.zum.de/p/ProgrammierenITBO-Teil3?showControls=true&showChat=true&showLineNumbers=true&useMonospaceFont=false&toc=false" width="100%" height="600" frameborder="0"></iframe>
<iframe name="embed_readwrite" src="https://zumpad.zum.de/p/ProgrammierenITBO-Teil4?showControls=true&showChat=true&showLineNumbers=true&useMonospaceFont=false&toc=false" width="100%" height="600" frameborder="0"></iframe>


__INDEXIEREN__
__INDEXIEREN__

Version vom 7. Oktober 2022, 11:31 Uhr

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