Schleifchenmachen

In der 7. Klasse lernen die Schüler am bayerischen Gymnasium Algorithmik „mit einem Programmiersystem, mit dem sie die Algorithmen intuitiv umsetzen können und bei dem die Einzelschritte des Ablaufs altersgemäß visualisiert werden“ (Lehrplan). Das heißt in der Regel: Robot Karol, das virtuelle Legomännchen. Es kann Ziegelsteine vor sich ablegen und aufnehmen, kann sich nach links und rechts drehen und einen Schritt nach vorne machen. Aus diesen Anweisungen bastelt man sich ein Programm.

Wenn man dabei überlegt vorgeht, schreibt man beispielsweise nicht:

schritt()
linksdrehen()
schritt()
linksdrehen()
schritt()
linksdrehen()

sondern:

wiederhole 3 mal
  schritt()
  linksdrehen()
*wiederhole

weil man erkannt hat, dass da eine gewisse Struktur in der Abfolge von Anweisungen ist.
Am Anfang neigen Schüler allerdings dazu, auf dieses „wiederhole“ zu verzichten und einfach draufloszuschreiben. Deswegen gebe ich bei Aufgaben gerne mal vor, in wieviel Zeilen sie lösbar sind, in der Hoffnung, dass die Schüler versuchenn, meine Vorgabe zu erreichen – oder bei manchen Aufgaben auch schon mal zu unterbieten, wenn ihnen noch ein kürzerer Weg eingefallen ist.

robot_karola_aufgaben

Gestern habe ich ein Übungsprogramm dazu konstruiert, bei dem allerdings gar nichts altersgemäß visualisiert wird. Man gibt ein, welche Anweisungen es geben soll, wie viel Verschachtelungen von Schleifen es maximal geben soll, und dann erzeugt das Programm zum Beispiel:

schritt()
linksdrehen()
schritt()
linksdrehen()
schritt()
linksdrehen()

Selber muss man das dann kürzer fassen, wenn es geht, und vergleicht dann mit der Antwort. Hier als Java-Programm in einer ersten Version:

Your browser is ignoring the <APPLET> tag!

Was noch nicht geht, Teil 1

Eigene Anweisungen eingeben. Auch a) die Koeffizienten, die bestimmen, wie viele Verschachtelungen es wirklich gibt (es wäre ja langweilig, wenn man immer genau die voreingestellte Anzahl kriegte), b) die Auswahl an Anweisungen, die in einer konkreten Schleife auftauchen sollen und c) die Anzahl an Wiederholungen pro Schleife (zur Zeit maximal drei) kann man bisher nur im Code und nicht in der Demo-Benutzeroberfläche einstellen. Aber das sind Kleinigkeiten.

Was noch nicht geht, Teil 2

Schwieriger sind zwei andere Punkte: Erstens wäre es schön, wenn der Schüler sich nicht nur die Lösung zeigen lassen, sondern seinen eigenen Code eingeben und überprüfen lassen könnte. Das wäre allerdings noch ein schönes Stück Arbeit. Und zweitens ist meine Lösung keineswegs immer die optimale Lösung. Ich habe zwar darauf geachtet, dass Schleifen mit einer Wiederholungszahl von 1 nicht als Schleifen, sondern als einfache Sequenz dargestellt werden, und dass Schleifen teilweise zusammengefasst werden, wenn sie den gleichen Inhalt haben (so dass dann auch höhere Wiederholungszahlen als 3 auftauchen können) – aber immer klappt das nicht.

So wird zum Beispiel für die Sequenz:

schritt()
linksDrehen()
rechtsDrehen()
hinlegen()
hinlegen()
hinlegen()
hinlegen()
hinlegen()
hinlegen()

als Lösung vorgeschlagen:

schritt()
linksDrehen()
wiederhole 2 mal
  hinlegen()
  wiederhole 2 mal
    hinlegen()
  *wiederhole
*wiederhole

Und das geht noch drei Zeilen kürzer.

Der Grund ist der, dass ich zuerst die Lösung generiere und dann erst daraus die Aufgabe. Allerdings kann es für eine Aufgabe mehrere Lösungen geben, und meine sind nicht immer optimal, da müsste ich noch mehr bereinigen. Ich sehe das erst mals Vorschlag an. Vielleicht finde ich mal einen Studenten, der das als Programmierprojekt haben will – aber vorher sollte ich das mal an Schülern testen, ob die überhaupt daran interessiert sind. Hm, wenn man Punkte und Medaillen vergibt und Highscores speichert…

Tagged: Tags

2 Thoughts to “Schleifchenmachen

  1. Bei uns an der Schule heißt das Fach „Datenverarbeitung“. Also Excel und Word mit etwas Powerpoint. Leider. Um den Horizont etwas zu erweitern zeige ich den kleinen Klassen dieses Spiel, um ihnen das Konzept „Programmieren“ etwas näher zu bringen.

    Ab einem bestimmten Level „müssen“ „Funktionen“ benutzt werden, die dann „wiederholt“ werden. Nicht die reine Lehre, ich weiß.

    Aber es macht den SuS Spaß und manche wollen dann mehr wissen.

    http://www.kongregate.com/games/Coolio_Niato/light-bot

    (Achtung. Link ist nicht sehr augenfreundlich.)

  2. Ich bin schon froh um echte Informatik. (Warum eigentlich? Ist das so wichtig, dass das Einschränkungen in anderen Fächern wert ist? Glaub schon. Und man hat beim Unterrichten das Gefühl, dass die Schüler etwas lernen.) Lightbot kenne ich, hatte aber noch keine Gelegenheit, das mit Schülern zu testen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.