Unterrichtsverlauf
Hintergrund
Ziel dieser Einheit ist es, dass die Schülerinnen und Schülern eine textuelle Programmiersprache erlernen. Dabei werden die in der blockbasierten Programmiersprache eingeführten Konzepte auf die textuelle Programmiersprache übertragen.
Programmiersprache / Programmierumgebung
Grundsätzlich schreibt der Bildungsplan weder eine bestimmte Programmiersprache noch eine bestimmte Programmierumgebung vor. Die Wahl bleibt dem Lehrer überlassen und sollte nach didaktischen Gesichtspunkten gefällt werden:
- Ist ein einfacher Einstieg ohne viel Overhead möglich?
- Wird die Suche nach Fehlern gut durch Anzeige von Syntaxfehlern und einen guten Debugger unterstützt? Wird der Quelltext strukturiert dargestellt?
- Trägt die Programmiersprache/Programmierumgebung langfristig, d.h. kann sie auch in den kommenden Schuljahren eingesetzt werden?
- Gibt es andere didaktische Tools für die eingeführte Programmiersprache, die im weiteren Unterrichtsverlauf hilfreich sein können?
In diesem Unterrichtsvorschlag kommt die Programmiersprache Java zum Einsatz, da die Zahl der didaktischen Hilfsmittel für Java zur Zeit am größten ist. Java kann als objektorientierte Programmiersprache bis zum Abitur fortgeführt werden.
Einen Überblick über die schon bekannten oder jetzt hinzukommenden Kontrollstrukturen in Java im Vergleich zum MIT App Inventor 2 oder zu Scratch bieten die beiden Dokumente im Ordner Hintergrund: 03_alg_vergleich_ai_java.odt bzw. 03_alg_vergleich_scratch_java.odt. Sie sind für Sie als Lehrkraft gedacht, können aber auch am Ende der Einheit den Schülerinnen und Schülern zur Verfügung gestellt werden.
Um den Einstieg zu erleichtern, schlägt dieser Unterrichtsgang vor, graphische Ausgaben (optische Täuschungen und Balken- und XY-Diagramme) zu erzeugen, da man dort die Wirkung der eingesetzten Befehle direkt sieht. Um graphische Ausgaben zu erzeugen, eignet sich die Java-Variante Processing1, die eine Vielzahl von Zeichenbefehlen mitbringt. Ergänzt wird dies durch einfach zu verwendende Bibliotheken für den Zugriff auf CSV- und XML-Dateien. Es ist in Processing ohne Rahmenprogramm, ohne Deklaration von Klassen und ohne aufwändige Definition einer GUI möglich, auf einer Zeichenfläche zu zeichnen. Textergänzungen (Strg+Leerzeichen) lassen sich in den Einstellungen aktivieren. Das Animieren von Algorithmen ist sehr einfach. Der Einstieg fällt den Schülerinnen und Schülern daher sehr leicht2. Leider ist die Unterstützung der Schüler durch Syntaxhervorhebung von Schleifen und Entscheidungen und den einfachen gehaltenen Debugger nicht so effektiv wie bei anderen Programmierumgebungen. GUIs lassen sich zwar mit zusätzlichen Tools erzeugen, sind aber keine vollwertigen Swing oder JavaFX-Oberflächen.
Als zweite Variante ist es möglich, Greenfoot3 einzusetzen. Durch eine spezielle Bibliothek können viele der in Processing zur Verfügung stehenden Befehle auch in Greenfoot eingesetzt werden. Dort wird eine von Actor abgeleitete Zeichenfläche eingesetzt, deren Bild durch die Zeichenbefehle verändert werden kann. Schön ist, dass man durch das Kontextmenü der Zeichenfläche direkt Zeichenbefehle geben und deren Wirkung beobachten kann. So kann man die Befehle direkt ausprobieren. Texteditor und Debugger unterstützen die Schülerinnen und Schüler effektiv bei der Arbeit. Nachteilig ist, dass das Zeichnen sehr langsam ist, da jedes Mal das Bild des Actors verändert werden muss. Dies bremst die Ausführung der Algorithmen bei größeren Datenmengen (ca. 10000 Datensätze beim XY-Diagramm) erheblich aus. Greenfoot bietet keine Möglichkeit, GUIs zu erzeugen, da das dem Konzept von Greenfoot widerspricht. Für die Erzeugung einer graphischen Oberfläche (vgl. IMP Klasse 10) muss daher zu einem anderen Tool gewechselt werden.
Die dritte Möglichkeit ist der Einsatz des Java-Editors4 von Gerhard Röhner. Der Java-Editor bietet eine gute Unterstützung der Schülerinnen und Schüler durch farbliche Hervorhebung von Schleifen und Entscheidungen. Auch der Debugger kann effektiv eingesetzt werden. Mit dem Java-Editor können sehr gut GUIs erzeugt werden (vgl. IMP Klasse 10). Auch die Darstellung von Klassen und Objekten und das direkte Arbeiten in der UML-Darstellung ist überzeugend (ähnlich wie bei BlueJ; vgl. Bildungsplan Kursstufe). Durch eine geeignete Bibliothek stehen auch hier viele der Processing-Befehle zur Verfügung. Der Nachteil ist, dass für die Anzeige eines graphischen Ausgabefensters eine GUI notwendig ist. Diese kann den Schülern zwar vorgegeben werden, so dass sie sie nicht selbst erstellen müssen, erhöht aber die Anzahl an Java-Klassen selbst für ein einfaches Programm. Die Arbeit der Schülerinnen und Schüler beschränkt sich aber auf eine einzige übersichtliche Klasse. Etwas komplizierter ist die Animation von Algorithmen, da hier die Programmierung von Threads notwendig ist, um eine Aktualisierung der Ausgabe während der Ausführung des selbst programmierten Algorithmus zu ermöglichen. Auch dieses muss den Schülerinnen und Schülern vorgegeben werden.
Da keines der drei Tools alle gewünschten Eigenschaften auf sich vereint, bleibt die Wahl Ihnen als Lehrkraft überlassen. Die vorliegenden Materialien sind so gestaltet, dass die Arbeitsblätter für alle drei Programmierumgebungen eingesetzt werden können. Die Vorlagen, mit denen die Schülerinnen und Schüler arbeiten sollen, stehen für alle drei Umgebungen bereit. Die wesentlichen Inhalte der Lösungen unterscheiden sich dabei nicht. Sie müssen den Schülern aber den Umgang mit der Programmierumgebung beibringen. Dies wird nicht auf den Arbeitsblättern erklärt.
Nutzung der Programmierumgebungen
Processing: Hier muss lediglich die entsprechende pde-Datei in Processing geöffnet werden. Globale Variablen/Attribute werden vor allen Methoden deklariert. Die Methode setup() wird automatisch ausgeführt und sollte die Methode zum Zeichnen aufrufen. Alternativ kann die Zeichenmethode aus der vordefinierten Methode draw() aufgerufen werden. Diese wird von Processing in regelmäßigen Abständen ausgeführt (vgl. Animationen).
Schriftarten müssen (vom Lehrer) vorab generiert werden (Menü Tools) und liegen danach als .vlw-Datei in dem Verzeichnis data. Sie werden am sinnvollsten im Setup mit dem Befehl loadFont("KleineSchrift.vlw")
geladen.
Greenfoot: Öffnen Sie das Greenfoot-Projekt. Jede Aufgabe liegt in einem eigenen Verzeichnis. Die Schülerinnen und Schüler müssen jeweils eine Unterklasse von PictureViewer bearbeiten. Globale Variablen/Attribute werden innerhalb der Klasse vor allen Methoden deklariert. Der Konstruktor wird automatisch ausgeführt und ruft die Methode zum Zeichnen auf. Die Welt erzeugt automatisch ein Objekt der jeweiligen Klasse, so dass sofort die Zeichenfläche angezeigt wird.
Die Dokumentation der Klassen Picture, PictureViewer, Table, TableRow, XML erhält man in Greenfoot am einfachsten, indem man den Quelltext öffnet und dann im Editor rechts oben von "Quelltext" auf "Dokumentation" umschaltet. Alternativ steht die Dokumentation im Hintergrund-Ordner als HTML-Dateien bereit.
Java-Editor: Für die Nutzung der Klassen Table, TableRow und XML ist die Bibliothek jdom-1.1.3.jar
erforderlich. Daher muss dem Java-Editor mitgeteilt werden, dass man diese Bibliothek benutzen möchte. Das macht man unter Menü Fenster → Konfiguration → Java → Interpreter: ClassPath-User. Dort wählt man die jdom-Bibliothek als neue Jar-Datei aus.
Danach öffnen Sie die zwei Dateien XYGUI.java und XY.java (XY steht für den Namen der Aufgabe: z.B. Balkendiagramm.java). Die GUI muss geöffnet sein, damit der Java-Editor das Projekt korrekt starten kann. An dieser Datei müssen/dürfen die Schülerinnen und Schüler nichts ändern. Sie bearbeiten lediglich die XY.java, die eine Unterklasse von Picture ist. Globale Variablen/Attribute werden innerhalb der Klasse vor allen Methoden deklariert. Der Konstruktor wird automatisch aufgerufen und ruft die Methode zum Zeichnen auf. Die GUI enthält einen Button mit dem ein Objekt der jeweiligen Klasse erzeugt und im Zeichenfenster angezeigt wird.
Die Dokumentation der Klassen Picture, PictureViewer, Table, TableRow, XML erhält man im Java-Editor, indem man die Quelltexte alle öffnet und dann im Editor Menü Start → JavaDoc wählt. Da die Dateien in UTF-8 Format vorliegen, muss man vorher noch unter Menü Fenster → Konfiguration → Java → Programme die Parameter "-encoding UTF-8 -charset UTF-8 -docencoding UTF-8"
ergänzen. Der Java-Editor erzeugt dann ein Unterverzeichnis "doc", das die Dokumentation enthält. Alternativ steht die Dokumentation im Hintergrund-Ordner schon als HTML-Dateien bereit.
1 Programmierumgebung Processing: https://processing.org/(Stand: 07.02.2019)
2 Processing lässt sich durch einen Android-Modus ergänzen. (Siehe 04_alg_processing_android.odt)
3 Programmierumgebung Greenfoot: https://www.greenfoot.org/door (Stand: 07.02.2019)
4 Programmierumgebung Java-Editor: http://javaeditor.org/doku.php (Stand 07.02.2019)
Hintergrund und Unterrichtsverlauf: Herunterladen [odt][2 MB]
Hintergrund und Unterrichtsverlauf: Herunterladen [pdf][380 KB]
Weiter zu Unterrichtsgang