Nachdem ich in den letzten Wochen viel um die Ohren hatte und abschließend auch noch Mittelohrentzündung – gemerkt ? – hatte, kann ich mich mal wieder etwas mehr unterrichtlichen Neuorientierungen widmen. In diesem Fall wäre das die Informatik in der 9. Klasse.
In Bayern wird in der neunten Jahrgangsstufe im ersten Halbjahr i.a. Funktionale Programmierung mit Hilfe von Excel oder Calc unterrichtet. Im zweiten Halbjahr folgt dann der Themenkomplex Datenbanken.
Die Funktionale Programmierung in Excel findet ich dabei wirklich verwirrend. Wie bitte schön, solch ich Funktionale Programmierung in Excel unterrichten ohne das es eine reine Anwenderschulung von Excel wird? Ich weiß es nicht. Bislang habe ich eine erweiterte Anwenderschulung gemacht, habe schrittweise immer komplexere Funktionen erklärt und eingeführt und diese dann mit Hilfe von Datenflussdiagrammen umsetzen lassen.
In der Praxis sieht das dann beispielsweise so aus:
Meine Schüler benötigen dabei 40 Minuten für das Zeichnen des Datenflusses und maximal 5 Minuten um den Inhalt zu verstehen. Das steht, finde ich, in keinem Verhältnis. Vor allem dann nicht, wenn man merkt, das in der zehnten Jahrgangstufe eigentlich viel zu wenig Zeit für das Programmieren in Java zur Verfügung steht. Dort bräuchte ich viel mehr Zeit. Der Gedanke liegt also nah, beide Themen miteinander zu verbinden.
Ich lasse die Schüler die Flussdiagramme mit der Hand zeichnen, oder kennt jemand eine gute Internetanwendung (ähnlich wie websequencediagrams.com für Sequenzdiagramme) mit der diese Diagramme erstellt werden können, und lasse das Diagramm dann in Java erstellen. Das würde im obigen Fall dann hierzu führen:
Das dies keine einfache Sache sein wird, ist wohl offensichtlich. Denn ich muss einiges meinen Schülern erklären, ganz besonders diese static-Sache.
Mehr zum Thema Funktionale Programmierung mit Java habe ich noch bei auf dem Blog n log n gefunden. Diese Gedanken werden auch noch einfließen. Dabei ganz besonders der erste Block:
- Das Programm besteht nur aus einer Klasse, keine Klassen-/Instanzvariablen.
- Nur primitive Datentypen und Strings sind erlaubt.
- Alle Methoden sind statisch (ab hier sind wir mehr oder weniger imperativ) und liefern stets einen Wert zurück, d.h. der Rückgabetyp einer Methode ist nicht void — Ausnahme ist main. Damit muss kein Objekt für die Klassen erzeugt werden.
- Es kommen keine For-, While-Schleifen, continue, break und goto vor.
- Es kommt kein switch-Block vor.
- Lokale Variablen werden bei ihrer Deklaration auch definiert. Außer bei ihrer Deklaration und gleichzeitiger Definition darf keine Variable auf der linken Seite einer Zuweisung stehen.
- Die Zuweisung kommt außer bei Variablendeklaration und gleichzeitiger Definition sowieso nicht vor. Das ist im übrigen auch der Grund, warum wir keine sinnvolle Iteration haben können.
- main ist die einzige Methode, die System.out.println(…); enthält.
Durch diesen Ansatz erhoffe ich mir in erster Linie etwas Zeit in der zehnten Klasse zu erkaufen, das Verständnis für Methodenaufrufe zu erhöhen, was in der elften Klasse bei den rekursiven Datenstrukturen immer wieder massiv Probleme macht und abschließend natürlich auch die Motivation in der neunten Klasse dadurch zu erhöhen, dass das Niveau erhöht wird und die Schüler nicht nur am Malen sind.
Ob das alles so gelingen wird – wir werden sehen.





