Aus Das deutschsprachige Scratch-Wiki
(Weitergeleitet von Artikel:Hennecke2011 - Spieleprogrammierung mit Scratch und BYOB.pdf)
<html>
<a href="http://scratch-dach.info/w/images/pdfartikel/Hennecke2011%20-%20Seminararbeit%20Didaktik%20der%20Informatik%20-%20Spieleprogrammierung%20mit%20Scratch%20und%20BYOB.pdf">Originalversion</a> | Michael Heinelt | Wintersemester 2011/12 - Universität Würzburg |
</html>
|
Status: 15 Seiten von 33 sind bereits "wikisiert"
Spieleprogrammierung mit Scratch und BYOB
Viele Jugendliche wollten schon gerne einmal ein Spiel programmieren. Sie haben große Vorstellungen und Ideen bezüglich des Spiels, jedoch wenig, wenn nicht gar keine Programmiererfahrung. Sobald sie dann versuchen, ein Spiel mittels einer Programmiersprache umzusetzen, resignieren bald viele, da sie merken, wie schwer es ist, einen Ansatzpunkt zu finden und wie viel theoretisches Vorwissen man dazu braucht. Sie kennen zu viele Konzepte nicht und sind mit der abstrakten Denkweise schnell überfordert.
Ein Schüler muss sich mit dem Lehrstoff befassen, ob er nun ein persönliches Interesse daran hat oder nicht. So kann das Unterrichtsthema bei fehlendem Interesse schnell demotivierend wirken. Auf den Informatikunterricht trifft dies gleichermaßen zu. Daher ist es nicht verwunderlich , dass es schon viele Versuche gab, bei Jugendlichen das Interesse an der Programmierung zu wecken und den Einstieg in das Thema zu erleichtern.
”Seit Seymour Papert schon in den Sechzigerjahren LOGO als Programmiersprache für Kinder entwickelte, reißen die Bemühungen nicht ab, Kindern einen leichten Einstieg in die Welt der Programmierung zu ermöglichen.“(Romeike, Wollenweber, 2009, S. 4). Seitdem wurden Programme entwickelt wie RobotKarol 1 oder JavaKarol, welche auch im Unterricht an bayerischen Gymnasien verwendet werden. Jedoch kommen mit der Zeit auch noch andere neue Programme als Hilfestellung bei der Programmierung hinzu, welche Beachtung finden. ”Selten hat jedoch ein Werkzeug eine so schnelle und weltweite Verbreitung gefunden wie Scratch, das im Mai 2007 vom MIT Media Lab herausgegeben wurde“(ebd.). So wurde ”in jahrelangen Untersuchungen erforscht, welche Konzepte von Programmieranfängern intuitiv aufgenommen werden können.“(ebd.)
Zusätzlich gibt es eine inoffizielle Weiterentwicklung namens Build Your Own Blocks, welche im nachfolgenen Text mit BYOB abgekürzt wird. Diese Weiterentwicklung ist graphisch sehr ähnlich zu Scratch aufgebaut, bietet aber mehr Funktionalitäten. Jedes Scratch-Programm lässt sich ohne Schwierigkeiten mit BYOB öffnen. Mit einer solchen Starthilfe sollen Jugendliche einen Einstieg in die Programmierung finden, welcher leicht verständlich und vor allem spielerisch möglich ist. Allerdings finden Scratch und BYOB in Bayern kaum eine Verbreitung. Hier haben sich RobotKarol und JavaKarol im Unterricht durchgesetzt. Daher soll in dieser Arbeit erörtert werden, welche didaktischen Aspekte Scratch und BYOB bieten, ob sie mit dem bayerischen Lehrplan vereinbar und damit im Unterricht einsetzbar sind und es soll aufgezeigt werden, wie viel Aufwand nötig ist, um ansprechende Spiele realisieren zu können.
Didaktische Aspekte
Anwendung von Scratch und BYOB
”Der Umgang mit Scratch wird [...] recht schnell erfasst - auf Intuitivität wird bei der Entwicklung besonders geachtet“(Romeike, 2010, S. 44). Ohne großen Aufwand sollen also Erfolge erzielt werden, so dass die Schülerinnen und Schüler schnell motiviert werden und ihr Interesse an der Informatik geweckt wird. Im Folgendem wird geprüft, ob die Entwickler diesem Anspruch gerecht geworden sind.
Dazu ist es nötig, sich die Oberfläche von Scratch, welche in Abb. 1 gezeigt ist, näher anzusehen. Im Objektbereich werden alle Objekte, die im Programm vorkommen und die Bühne verwaltet. Über neues Objekt malen lässt sich eine Oberfläche zum Malen öffnen, welche über Werkzeuge verfügt, wie sie aus einfachen Malprogrammen bekannt sind. Über neues Objekt aus Datei laden lassen sich weitere Objekte erstellen, welche der Benutzer aus einer großen Vorlagensammlung auswählen kann.
Sobald der Benutzer ein Objekt angeklickt hat, werden seine schon programmierten Methoden in den Programmbereich geladen. Unter dem Reiter Kostüme kann das Aussehen, wie Form, Farbe oder Größe, mittels des Malprogramms bearbeitet werden und weitere Darstellungen des Objekts in Form von mehreren Kostümen angelegt werden. So kann das Objekt während der Programmausführung auf Befehl sein Aussehen verändern, indem es das Kostüm wechselt. Dadurch lässt sich z.B. leicht eine Animation erstellen. Der Benutzer kann bestimmte Befehlsgruppen wie Bewegung oder Steuerung auswählen und zieht die gewünschten Blöcke in den Programmbereich, welche einen sogenannten Stapel bilden. Sobald man auf den Startbutton (grüne Flagge) klickt, wird das Programm auf der Bühne gestartet und läuft solange, bis es entweder durch das Skript oder durch Klicken auf den roten Stopbutton beendet wird. Die Bühne verfügt über ein kartesisches Koordinatensystem, bei welchem der Koordinatenursprung genau im Mittelpunkt der Bühne liegt. Die Abszissenachse reicht von -240 bis +240 und die Ordinatenachse von -180 bis 180.
So bestätigt Baumann (2009, S. 55) das Anliegen der Entwickler, dass das Programm so intuitiv wie möglich bedienbar ist:
- Fast ohne Anleitung verstanden die Schüler sofort die Einteilung der Benutzungsoberfläche in Programmierwerkzeuge (Kacheln), Programmbereich, Bühne und Objektbereich. Sie konnten ohne weiteres Objekte erstellen (malen und importieren), ihr Aussehen variieren, sie zu gegebenen Punkten gleiten lassen, Klänge beifügen usw.
Visuelle Programmierung
Wie in Abbildung 2 zu sehen ist, gibt es 8 verschiedene, inhaltlich getrennte Befehlsgruppen, aus denen man auswählen kann. Jede Befehlsgruppe hat ihre eigene Farbe und die dazugehörigen Blöcke sind in der gleichen Farbe gefärbt. Programmiert wird nun, indem man einen Block anklickt und mit gedrückter Maustaste in den Programmbereich zieht. Jeder Block hat eine bestimmte Form wie bei einem Puzzle und kann nur an oder in andere Blöcke gesetzt werden, wenn die Form es erlaubt. Insgesamt gibt es 3 Arten von Blöcken in Scratch. Zu einem sind das stapelbare Blöcke. Diese sind in Abb. 3 S.7 an den Zapfen an der Unterseite bzw. an der Ausbuchtung der Oberseite zu erkennen. Es können beliebig viele solcher Blöcke aneinander gesetzt werden. Weiterhin gibt es sogenannte Hüte. Diese sind dafür verwantwortlich, dass einzelne Stapel im Programmbereich ausgef ¨ uhrt werden. Ein solcher Hut ist in Abb. 3 Wenn grüne Fahne angeklickt. Zuletzt gibt es die Reporter, welche entweder runde oder eckige Enden haben und nur in andere Blöcke passen. Reporter mit runden Enden liefern z.B. einen Variablenwert wie x-Position zurück, wohingehen Reporter mit eckigen Enden einen boolean Wert, wie bei Abb. 3 wird Rand berührt zurückgeben (vgl. Scratch Reference Guide, 2012, S. 10).
Um einen Anfang für das Programm zu setzen, wird aus der Befehlsgruppe Steuerung ein Hut mit der grünen Flagge in den Programmbereich gezogen. Anschließend wird eine Endlos-Schleife, die genau an die Form des Hutes passt, angehängt. Von der Schleife wird der restliche Code umschlossen. Wie man sehr schön sehen kann, passt in das Steuerungselement falls nur bestimmte Elemente, die eine rautenähnliche Form haben. Durch diese Art zu programmieren, wird ein wesentlicher Punkt erreicht: Die Schülerinnen und Schüler können sich gut auf die Semantik des Programms konzentrieren, da die Syntax durch die Art der visuellen Darstellung auf das Wesentlichste reduziert werden konnte. Nun könnte man bemängeln, dass die Syntax einfach übergangen wird. Jedoch meint Romeike (2010, S. 45) dazu, dass ”mit Scratch zwar keine Syntaxfehler entstehen können, die Syntax einer Programmiersprache erschließt sich aber nicht durch das Beheben fehlender Kommata, sondern durch das Erfassen von Strukturen, die in Scratch extra hervorgehoben sind!“
Weiterhin ist auch der Unterricht an sich mit einer visuellen Programmiersprache wie Scratch sehr viel angenehmer zu gestalten, da die Lehrerin oder Lehrer direkt vor der Klasse am Whiteboard programmieren kann, anstatt immer zwischen Computer und Klasse wechseln zu müssen.
Verbreitung in der Online Community
”imagine, program, share“(Website Scratch) - Dieser Ausspruch findet sich direkt unter dem Logo der Website, der offiziellen Website von Scratch und verdeutlicht die Denkweise der Entwickler und der Online-Community. So entstand ”the YouTube of interactive media“(Resnick et al., 2009 onl.). Junge Entwickler, welche in der Regel zwischen 8 und 16 Jahren alt sind, können durch einen einzigen Klick in der Scratch-Umgebung ihr Projekt auf der Website hochladen und bewerten lassen (vgl. Monroy-Hernández, Hill, 2010 onl.). Und dies ist auch der zusätzliche Reiz, in Scratch Programme zu schreiben:
- The Scratch Online Community makes programming more engaging by turning it into a social activity. Hobbit, a 14-year-old member of the community explains:
- ’When I think about it, recognition for my work is what really drew me into Scratch. Other things played a part, but the feeling that my work would be seen is what really motivated me.’ (Monroy-Hern´andez, Resnick, 2008 onl.)
Hochgeladene Projekte stehen nun allen anderen Usern zur Verfügung und können heruntergeladen und gegebenfalls weiterentwickelt werden. Dieser Vorgang wird als Remixing bezeichnet, welches jedoch stark umstritten war. Viele User beschwerten sich, dass ihre Projekte ohne Nennung ihrer Namen als ursprüngliche Entwickler nur leicht verändert und von anderen Usern als ihr selbst geschriebenes Programm dargestellt wurden. Allerdings muss man bemerken, dass es durchaus positive Rückmeldung gab, wenn der ursprüngliche Programmierer bei einer Weiterentwicklung genannt wurde (vgl. ebd.). Daher wurden Gegenmaßnahmen ergriffen:
- Administrators implemented a mechanism that automatically gave attribution by displaying a link to antecedent projects on every remix along with the user name of any antecedent project’s creator. (Monroy-Hernández, Hill, 2010 onl.)
Nun lässt sich durch eine grafische Visualisierung auf der Website die Fortentwicklung eines Projekts durch verschiedene Entwickler bis zu dem ursprünglichen Programmierer nachvollziehen. Obwohl das Remixing zu diesem Zeitpunkt schon mehr akzeptiert war, führten die Administratoren nach ungefähr einem Jahr eine zweite Neuerung ein:
- The intervention consisted in the creation of a new section of the front page of the website that lists the three projects remixed most often recently. It is important to note that for the members of the community, having ones project included on the front page is very highly regarded. (ebd.)
So wurde das Remixing weitgehend akzeptiert und auch als positiv bewertet. Weiterhin gibt es auf der Scratch Website ein großes Forum, in welchem sich User bei Fragen und Problemen gegenseitig helfen. Dieses ist jedoch auf Englisch, was für die meisten Schüler in dem betreffenden Alter durchaus ein Hinterungsgrund sein kann, in diesem Forum nach Hilfe zu suchen. In höheren Jahrgangsstufen kann dies natürlich auch einen fächerübergreifenden Anreiz bieten. Allerdings gibt es auch ein deutsches Forum, welches jedoch wesentlich kleiner ist, aber den Anforderungen vor allem am Anfang beim Einstieg in die Scratch Programmierung genügen sollte.
Umsetzung von objektorientierter Programmierung
Scratch und BYOB fallen in die Reihe der objektorientierten Sprachen. Da BYOB deutlich mehr objektorientierte Konzepte beinhaltet als Scratch, soll hier die Objektorientierung anhand von BYOB erläutert werden. BYOB besitzt eine prototypenbasierte Objektorientierung. Jedoch schreibt der bayerische Lehrplan eine klassenbasierende objektorientierte Programmierung vor. Daher soll nun kurz der Ansatz einer klassenbasierten Objektorientierung aufgezeigt und anschließend auf Elemente von BYOB eingegangen werden, welche klassenbasiert sind, da dies für die späteren Abschnitte von Relevanz sein wird.
Ein Objekt besitzt immer Attribute und kann mit der Umwelt mittels seiner Methoden kommunizieren. Nun sind viele Objekte, von ihren Eigenschaften und Methoden gleich und unterscheiden sich nur in denWerten ihrer Attribute. Wenn z.B. ein Porsche als Objekt modelliert werden soll, werden bei einer klassenbasierten Objektorientierung zuerst in der dazugehörigen Klasse Auto alle Eigenschaften in Form von Attributen definiert. Diese könnten Farbe, PS, Kennzeichen usw. sein. An dieser Stelle wird den Attributen noch keinen konkreten Wert zugewiesen. Zusätzlich sollen alle Objekte der Klasse Auto bestimmte Fähigkeiten haben wie beschleunige() oder biege links ab(), welche durch Methoden realisiert werden. Erst jetzt können Objekte wie Porsche oder VW mittels eines Konstruktors mit konkreten Werten instanziert werden.
Im Grunde bietet BYOB 2 Klassen an. Diese wären zu einem die Klasse Stage und zum anderen die Klasse Sprite. Aus der Klasse Stage wird direkt ein einziges Objekt instanziert, nämlich die Bühne und aus der Klasse Sprite, welche in Abb. 4 dargestellt ist, können beliebig viele Objekte erzeugt werden, welche im Objektbereich zu finden sind.
Diese Objekte haben nun Attribute wie X-Position, Y-Position oder Richtung. Im Programmbereich können durch aneinandersetzen von Blöcken beliebig viele Stapel erstellt werden. Ein Block selbst bildet im Grunde auch schon eine eigenständige Methode.
Allerdings hat BYOB eine prototypenbasierte Objektorientierung und keine klassenbasierte. Um also mehrere gleiche Objekte zu erhalten, kann man sich diese nicht wie bei einer klassenbasierten Objektorientierung mehrmals instanzieren, sondern muss einen anderen Weg wählen.
Am Anfang wird ein konkretes Objekt erstellt, welches bestimmte Methoden und Variablen hat. Falls von diesen Objektmehrere Kopien erwünscht sind, nimmt man dieses Objekt als Prototype und klont daraus weitere Objekte (vgl. Harvey,Mönig, 2011, S. 25 , onl.). In Bezug auf das obige Beispiel wird das Objekt Porsche konkret erstellt und von diesem dann das Objekt VW geklont und durch Änderung der Attributwerte dementsprechend angepasst. Der Prototype ist dann der parent der geklonten Objekten bzw. diese seine children. Sobald beim Prototype eine Änderung einer Eigenschaft erfolgt, wird dies automatisch auf die children übertragen. Wird beim child etwas geändert, ist dies nur für das child gültig. In der Praxis war es nicht möglich, eine Übertragung der Änderung vom Prototyp auf die children festzustellen, obwohl dies laut Referenzhandbuch von BYOB möglich ist.
- Prototyping is also a better fit with the Scratch design principle that everything in a project should be concrete and visible on the stage; in class/instance OOP the programming process begins with an abstract, invisible entity, the class, that must be designed before any concrete objects can be made (ebd.).
Mit der Vererbung verhält es sich ähnlich. Man nehme an, dass es Objekte gibt, die sehr ähnlich sind zu anderen Objekten, aber noch zusätzliche Attribute und Methoden haben. Bei einer klassenbasierten Objektorientierung könnte bei dem obigen Beispiel der Fall sein, dass ein Rennauto zwar alle Attribute und Methoden der Klasse Auto beinhaltet, aber noch viele weitere besitzt. Dann würde die Klasse Rennauto alle Attribute und Methoden von der Klasse Auto erben und diese teilweise überschreiben oder erweitern. Bei BYOB kann dies bestenfalls umgesetzt werden, dass children teilweise verändert werden und dann selbst wiederum als Prototyp für weitere Objekte benutzt werden.
Weiterhin ist es auch in BYOB möglich, eigene Attribute, sogenannte Variablen zu erstellen, mit der Wahl, ob diese für alle bestehenden Objekte oder nur für das eigene gültig sind. Dementsprechend kann man sich auch selbst Blöcke zusammenbauen. Dazu klickt man in der Befehlsgruppe auf Variablen und wählt neuer Block. Hier kann ausgewählt werden, welcher Befehlsgruppe der zu erstellende Block angehören soll. Weiterhin kann die Art des Blocks festgelegt werden. In Abbildung 5 ist es in diesem Falle ein Befehls-Block. Diesem können nun beliebig viele Parameter übergeben werden. Anschließend gelangt man, wie in Abbildung 6 zu sehen ist, in den Blockeditor und kann sich seinen eigenen Block bauen. Sinnvollerweise wurden auch Skriptvariablen implementiert, so dass diese nur für diesen einen Block gültig sind.
Bei späteren Darstellungen vom Bauen von Blöcken wird aus Platzgründen der Rahmen des Editors weggelassen.
Objekte können miteinander über sogenannte Nachrichten kommunizieren, wodurch eine Datenkapselung erreicht wird, welches eines der großen Prinzipien der objektorientierten Programmierung ist. Dabei kann ein Objekt den Block sende [Nachricht] an alle ausführen. Der Hut Wenn ich [Nachricht] empfange kann dann auf diese Nachricht reagieren und den dazugehörigen Stapel ausführen. Es gibt noch eine 2. Möglichkeit, Objekte miteinander kommunizieren zu lassen, wie in Abbildung 7 zu sehen ist.
Objekt1 steuert in diesem Stapel Objekt2, indem es auf die Methoden von Objekt2 zugreifen und dadurch seine Attributwerte ändern kann.
Scratch hingegen besitzt in Hinsicht auf Objektorientierung nur den Gedanken, dass ein Objekt aus Attributen und Methoden besteht und über die Möglichkeit, mittels Nachrichten zu kommunizieren.
Scratch und BYOB im bayerischen Curriculum
In den folgenden Abschnitten soll nun die Einsatzmöglichkeit von Scratch und BYOB im bayerischen Curriculum erörtert werden und eventuelle Grenzen ausgelotet werden.
7. Klasse
In der 7. Klasse besuchen die Schülerinen und Schüler an bayerischen Gymnasien den Unterricht Natur und Technik. In diesem Unterricht kommt auch der Schwerpunkt Informatik vor, welcher aus Vernetzte Informationsstrukturen - Internet, Austausch von Information – E-Mail und Beschreibung von Abläufen durch Algorithmen besteht (vgl. Lehrplan Bayern Jgst 7, S. 35f). Hier bietet sich nur für Beschreibung von Abläufen durch Algorithmen an, Scratch in den Unterricht mit einzubinden. Natürllich könnte BYOB auch verwendet werden, aber da die Schüler noch relativ wenig Erfahrung in diesem Fach besitzen, wird Scratch für diese Jahrgangsstufe auf jeden Fall ausreichen. Die Schüler sollen ”lernen, dass sich ganz allgemein mit Algorithmen Abläufe präzise und verständlich beschreiben lassen und üben an konkreten Sachverhalten [...] Vorgänge aus einfachen Bausteinen aufzubauen“(ebd.). Diese Bausteine sind dann beispielsweise Anweisung, Sequenz, Bedingte Anweisung, Wiederholung (ebd.). Nach dem Erlernen der einzelnen Bausteine ist anschließend das Programmieren eines einfachen Informatiksystems unter Verwendung dieser Bausteine erforderlich (vgl. ebd.).
Es ist gängige Praxis, dieses Thema mit Hilfe des Programms RobotKarol einzuführen. In RobotKarol befindet sich ein Roboter in einer begrenzten Welt. Der Roboter kann nun kachelweiße in dieser Welt mit Hilfe einer Subsprache umherlaufen, Markierungen oder Ziegeln setzen und diese wieder beseitigen. Variablen oder deren Übergabe an Methoden sieht diese Sprache nicht vor. RobotKarol besitzt 2 Klassen. Zum einem die Klasse Roboter, welche z.B. die Koordinaten und die Richtung als Attribute besitzt und mehrere Methoden (als Beispiel siehe Abb. 8). Zum anderen gibt es die Klasse Welt, welche mit Höhe, Breite und Länge festgelegt ist. Zusätzlich hat sie noch Möglichkeiten, den Standort von Markierungen und Ziegeln zu speichern.
8. Klasse
In der 8. Klasse kommt kein Informatikunterricht an bayerischen Gymnasien vor. Dies ist leider sehr unvorteilhaft, da dadurch viel Inhalt bei den Schülerinnen und Schüler vergessen wird. Aus diesem Grund wäre es sehr gut, ein Wahlkurs Informatik für interessierte Schülerinnen und Schüler anzubieten.
Der Unterricht könnte von der Lehrkraft sehr frei gestaltet werden, da es keinen Lehrplan gibt, an den er sich halten muss. Da die Schülerinnen und Schüler zu diesem Zeitpunkt noch eher wenige tiefergehende informatische Konzepte kennen, ist die mögliche Aufgabenvielfalt jedoch eingeschränkt. Allerdings bietet Scratch unter diesem Aspekt noch viele Möglichkeiten an. Eine dieser Möglichkeiten wäre es, einen kleinen Animationsfilm zu erstellen. Jeder Schüler könnte sich eine eigene Story überlegen und diese in Scratch umsetzen. Eine weitere Möglichkeit wäre es, Objekte auf dem Bildschirm auf Befehl tanzen oder das Kostüm wechseln zu lassen. Dabei wird weiterhin das Verständnis für Objekte gefördert, da der Schüler sich über deren Attribute Gedanken machen muss, beispielsweise welches Kostum sie tragen oder an welcher Stelle sie sich befinden sollen und natürlich auch über deren Methoden, die Attribute zu verändern. Weiterhin kann das message passing eingeführt werden, damit Objekte miteinander kommunizieren können. Es besteht auch die Möglichkeit, auf scratch.mit.edu Ideenanregungen für den Unterricht zu finden. Es gibt hier also viele Möglichkeiten, Informatik den Schülern näher zu bringen und es sind kaum Grenzen gesetzt außer der eigenen Kreativität.
10. Klasse
In der 10. Klasse ändert sich in der gängigen Praxis der Informatikunterricht dahingehend, dass alles aufeinander aufbaut und Schüler schnell den Anschluss verlieren können. Es wird nun in der Regel mit einem Editor programmiert und die Schülerinnen und Schüler müssen sehr viele Informationen verarbeiten. Sie sollen die Syntax verstehen und viel wichtiger die Semantik.
Das erste große Thema in der 10. Klasse ist Objekte und Abläufe. Dieses beginnt mit der Zusammenfassung und Festigung der bisher erlernten objektorientierten Konzepte (vgl. Lehrplan Bayern Jgst. 10, S. 59f). Die Schüler wiederholen die Begriffe Objekt, Methode, Attribut und Klasse (vgl. ebd.), so wie sie es aus dem früheren Informatikunterricht kennen. Hierfür ist BYOB sehr gut geeignet, da man z.B. die Klasse Sprite aufstellen kann und auch ein Objektdiagramm dazu zeichnen kann wie in Abb. 4 S. 10 gezeigt ist. So lernen sie, dass ein Objekt eine Kombination aus Attributen und Methoden (vgl. ebd.) ist. Auch die konkrete Einführung von Methoden kann mit Hilfe von BYOB erfolgen. Methoden können in Form von Blöcken mit Eingangsparametern gebaut werden, welche optional einen Rückgabewert haben.