Lehrzeit

Schule & Informatik

Autor: Ingo Bartling (Seite 1 von 147)

Programmieraufgabe 96

Processing hat sich in meinen Augen bislang als Erfolg gezeigt. Die Tatsache, dass die Schüler sofort eine sichtbare Reaktion bekommen motiviert sie mehr als vieles, was ich bisher versucht habe. Nachdem sie Processing ein wenig kennengelernt hatten und einen Ball automatisch im Fenster haben rumfliegen lassen war eine leicht fortgeschrittene Aufgabe das Programmieren eines Bildschirmschoners, wie er früher öfter zu sehen war.

Aufgabe

Erstelle mit Hilfe von Processing einen Bildschirmschoner, der wie folgt aussieht:

Der Ehrlichkeit halber muss ich aber dazu sagen, dass die Schüler nur eine dieser Linien selbst programmieren sollten. Ich habe dann das Einführen der zweiten Linie dazu genutzt, um das Definieren von Klassen zu erläutern. Dabei muss man allerdings etwas aufpassen, denn die gewünschte Klasse Linie muss innerhalb der Klasse Bildschirmschoner definiert sein, sonst kann Linie nicht die gewünschten Methoden von Processing direkt nutzen.

Weiter habe ich die Idee hinter diesem Schliereneffekt erklärt, da ich beim Erstellen der Musterlösung auch ein bisschen rumprobieren musste bis es klappte. Und mir kam es für die Schüler in erster Linie auf die if-Abfragen an.

Lösung: Bildschirmschoner

OpenProject

Es gibt wahrscheinlich zwei Gründe, warum man vielleicht Lehrer wird:

  1. Man liebt das Fach
  2. Man „unterrichtet“ gerne

Bei den meisten Lehrern kommt natürlich beides vor. Mal im Verhältnis 60:40, mal 30:70 oder sogar 50:50.

Bei mir hängt es von der Tagesform oder dem Thema ab. In der Regel finde ich die Informatik inhaltlich spannend. Ganz besonders die 12. Klasse mit ihrer Theorie über Sprachen, Automaten und Netzwerken. In der 10. Klasse empfinde ich es als Herausforderung mir einen Zugang zum Programmieren zu überlegen, so dass jeder etwas für sich mitnimmt. Aktuell wäre das der Versuch über Processing. Und das läuft, denke ich, bisher ganz gut an.

Beim zweiten Punkt denke ich vor allem an meine P-Seminare, aber auch an andere und vor allem untere Jahrgangsstufen. Denn für mich geht es beim Unterrichten nicht nur um das Inhaltliche. Je nach Alter versuche ich, dass die Kinder sich in ihrem Charakter Denken Persönlichkeit weiterentwickeln. Das sie sich ausprobieren, an ihre Grenzen, aber auch darüber hinaus kommen. Sie sollen das Gefühl bekommen, dass mehr in ihnen steckt als nur vorgekautes Wissen zu reproduzieren. Das man dabei nicht alle 30 Schülern einer Klasse erreicht, sollte jedem klar sein. Aber das wäre auch der falsche Anspruch.

Aber woher weiß man dann, dass die eigenen Bemühungen vielleicht etwas dazu beigetragen haben, dass die Schüler nach der Schule das tun, was gut für sie ist? Man müsste ja die Schüler NACH der Schulzeit, im Studium oder Beruf erwischen und fragen. Das passiert ja leider zu selten. Manchmal treffe ich zwar einen ehemaligen Schüler im Zug und bin dann ganz erstaunt, wenn der oder diejenige zum Beispiel vom Mathematik-Studium zu einer Ausbildung als Altenpfleger gewechselt ist. Aber in der Regel erfahre ich nichts vom späteren Werdegang.

In meinem aktuellen Fall musste ich mich nun aber gar nicht bemühen und meine ehemaligen Schüler lange suchen, denn sie kommen in diesem Fall wieder von alleine zurück!

OpenProject

Ehemalige Schüler unserer Schule waren es wohl Leid, dass Lehrer nichts im Informatikunterricht unterrichten dürfen, was wirklich Spaß macht:

  • Virtual Reality
  • Spiele programmieren mit Unity
  • Bloggen
  • 3D-Drucken
  • 2D/3D-Design, Animation
  • Hardware (Computer und Netzwerke aufbauen)

Nachdem sie wohl schon seit Jahren zusammen programmieren und auch während ihres Studiums sich noch regelmäßig treffen, kamen sie auf die Idee, ihr Wissen an interessierte Schüler ihrer ehemaligen Schule weiterzugeben. Hierzu gründeten sie die Gruppe Open Project und bieten nun mehr oder weniger regelmäßig, das wird sich noch zeigen, Veranstaltungen zu den oben genannten Themen an. Die Gruppe besteht dabei nicht nur aus InformatikstudentInnen. Auch angehende DesignstudentInnne oder FilmemacherInnen sind mit dabei.

Die Ehemaligen brauchten nur das Okay meines Chefs und natürlich einen Lehrer, der sie dabei unterstützt in dem Räume aufgesperrt werden, mal spontan Software installiert wird oder ein fehlendes Kabel geholt wird. Letzteres ist nun meine Aufgabe. Und ich mache sie gerne (siehe Punkt 2 oben).

Ein wirklich tolles Projekt und ich hoffe, dass es sich zu einer regelmäßigen Veranstaltung entwickelt. Dazu müssen dann natürlich spätere weitere Schüler hinzukommen oder vielleicht findet sich ja der ein oder andere Elternteil, der auch mal was von seinem Wissen und seiner Begeisterung weitergeben möchte. Natürlich nur nach Rücksprache mit den Gründungsmitgliedern der Gruppe OpenProject.

Java Syntax-Diagramm

Ich halte Syntaxdiagramme für die beste Art und Weise die Struktur von Java zu verdeutlichen, weil sie so schön betonen, wie starr Programmiersprachen im Vergleich zu natürlichen Sprachen sind. Ein Methodenkopf hat immer die gleiche Struktur, eine bedingte Verzweigung hat immer die gleiche Struktur, meine so „geliebte“ for-Schleife hat immer die gleiche Struktur. Nur bestimmte Teile müssen an die jeweilige Situation angepasst werden.

Leider habe ich jetzt auf die schnelle kein Syntax-Diagramm gefunden, was zu meinem aktuellen Unterricht passt, daher habe ich mir mit Hilfe meiner eigenen Internetseite und dem weiter unten folgenden EBNF-Code eines erzeugen lassen:

Dieses Syntax-Diagramm deckt jetzt aber nur meinen aktuellen Bereich ab. Wer etwas anderes haben möchte, der passt sich die folgende EBNF-Vorlage an und gibt es auf meiner Seite wieder ein.

Methode = Methodenkopf "{" ( Funktionsrumpf | Prozedurrumpf ) "}".
Funktionsrumpf = Methodenrumpf "return-Statement" .
Prozedurrumpf = Methodenrumpf .

Methodenkopf = Sichtbarkeit Rueckgabewert "Name" "(" Parameterliste ")".
Methodenrumpf = { Anweisung | Kontrollstruktur } .

Parameterliste = [ Datentyp "Parametername" {"," Datentyp "Parametername"} ].
Sichtbarkeit = "public" | "private" | "protected".
Rueckgabewert = "void" | Datentyp.
Datentyp = "int" | "double" | "float" | "boolean" | "String" | "Klassenname".
Anweisung = {"Manipulation von Variablen" | "Methodenaufruf"} .
Kontrollstruktur = "if-Abfrage" | "for-Schleife" | "while-Schleife".

Mir ist zum Beispiel die Unterscheidung zwischen Methodenkopf und -rumpf wichtig, da ich das gerne in Aufgabenstellungen brauche. Auch der Rückgabetyp „void“ ist mir wichtig, da ich inzwischen eine betontere Verknüpfung zwischen dem Funktionalen Programmieren in der 9. JgSt und dem Programmieren in Java mache. Ich mache in der 9. Klasse nämlich bewusst keine Excel-Produktschulung, sondern lege Wert auf „das Verknüpfen von Maschinen“. So ist in meiner aktuellen 10. Klasse am Ende dieses Bild an der Tafel entstanden. (Okay, ich habs nachgezeichnet, weil ich vergessen hatte es zu fotografieren) :

(Fehlerkorrektur: Die letzte Klammer fehlt.)

In der 9. Klasse benutze ich auch möglichst wenig Excel oder Calc oder ähnliches, sondern Orinoco.  Ein Programm, dass ich jedem Lehrer für den Unterricht in der 9. Jahrgangsstufe beim Thema Funktionales Programmieren nur wärmstens ans Herz legen kann. Schade, dass es nicht weiterentwickelt wird oder, das ist immer meine Lieblingsvariante, eine Online-Variante davon gibt.

Ältere Beiträge

© 2017 Lehrzeit

Theme von Anders NorénHoch ↑