Zur Hauptnavigation springen [Alt]+[0] Zum Seiteninhalt springen [Alt]+[1]

Froschhüpfen

Das gesamte Projekt geht über drei Doppelstunden und beinhaltet Teile ohne PC und Teile mit Programmieraufgaben für Scratch oder den MIT-App-Inventor.

Im ersten Teil wird das Variablenkonzept wiederholt und bei der Programmierung werden Zufallszahlen eingesetzt.

Im zweiten Teil wird eine neue Datenstruktur eingeführt und genutzt.

Froschhüpfen – Teil I (Aktion)

Zunächst bekommt jede Schülerin und jeder Schüler einen Papierfrosch1. Die Frösche sind durchnummeriert von eins bis zur Anzahl der Schüler. (Wenn im zweiten Auftrag zwei oder drei Gruppen gebildet werden, weil die Klasse zu groß ist, erfolgt die Nummerierung für jede Gruppe extra, auch wenn die Schülerinnen und Schüler hier noch nicht in Gruppen aufgeteilt sind. Hier bietet es sich an, für jede Gruppe eine andere Farbe der Klebepunkte zu wählen, dass die Zugehörigkeit zur Gruppe klar erkennbar ist.)

In einem ersten Schritt bekommen alle den Auftrag, ihren Frosch soweit wie möglich springen zu lassen und die Sprungweite auf einen kleinen Zettel zu notieren. Es soll das Variablenkonzept aus Klasse 7 wiederholt werden. Deshalb bekommt jeder eine leere Streichholzschachtel mit der Aufschrift „Sprungweite“.

Der Zettel mit der notierten Sprungweite wird in das Schächtelchen gelegt. Jetzt lassen alle ihren Frosch ein weiteres Mal springen und vergleichen die neue Sprungweite mit der bisherigen. Ist die neue Sprungweite größer, so wird der alte Wert auf dem Zettel in der Streichholzschachtel durch den neuen Wert ersetzt. Wenn nicht, wird der Wert der Variable nicht verändert.

Das wird so lange fortgesetzt, bis jeder Frosch 10-mal gesprungen ist.

Die Schülerinnen und Schüler erhalten den Auftrag genau aufzuschreiben, welche Schritte sie in jedem Durchgang gemacht haben und sie tragen ihre Werte im Froschsprungprotokoll (02_alg_frosch_auftrag_1_protokoll) ein. Ein Beispiel für ein ausgefülltes Protokoll finden Sie in den Lösungen (02_alg_frosch_auftrag_1_beispielprotokoll).

Hintergrund

Die Aktion dient auf der einen Seite der Wiederholung des Variablenkonzeptes, auf der anderen Seite ist sie Grundlage für die spätere Einführung einer neuen Datenstruktur.

In der Programmierung bezeichnet man als Variable einen logischen Speicherplatz mit dessen Wert2. Jede Variable besitzt einen Namen, unter dem man sie ansprechen und ihren Wert verändern kann.

Für die Schülerinnen und Schüler bietet sich hier als Veranschaulichung ein Kästchen an. Das Kästchen bekommt einen Namen und steht in der Folge für die Variable.

Bei der Initialisierung wird der Variable das erste Mal ein Wert zugewiesen. In der Schüleraktion entspricht dies dem Einlegen des ersten beschrifteten Zettels in die Streichholzschachtel.

Im Folgenden werden in jedem Schritt (nach jedem Sprung des Frosches) der Wert der Variable erfragt und ggf. verändert. Hierbei nutzen die Schülerinnen und Schüler bei der Umsetzung in der Programmierumgebung eine Verzweigung ohne Alternative: „Falls „die neue Sprungweite“ größer ist als „die Sprungweite (in der Schachtel)“, wird der Wert der neuen Sprungweite in der Variable Sprungweite gespeichert (auf den Zettel in der Schachtel geschrieben).“

Nach den zehn Sprüngen ist bei jedem Frosch die maximale Sprungweite auf dem Zettel in der Schachtel notiert. Dies machen wir uns später bei der Einführung der neuen Datenstruktur zu nutze.

Froschhüpfen – Teil I (Programmierung)

Der nächste Auftrag (02_alg_frosch_auftrag_1) findet am PC statt. Hier wird das Froschhüpfen von vorher programmiert:

  1. Ein Frosch, der ganz links auf der Bühne sitzt, „springt“ beim Anklicken mit der Maus eine zufällige Weite nach rechts.

  2. Das erste Ergebnis wird direkt in einer Variable „Sprungweite“ gespeichert.

  3. Eine weitere Variable „Sprungweite_neu“ erhält nach jedem „Sprung“ die neue Weite als Wert.

  4. Ab dem zweiten Sprung wird überprüft, ob die neue Weite größer ist. Falls ja, wird der Wert der Variable „Sprungweite“ ersetzt, sonst bleibt er gleich.

  5. Zur Übung kann eine weitere Variable als Zähler genutzt werden, um die Sprünge des Frosches mitzuzählen.

Hintergrund

Wenn die Schülerinnen und Schüler in Klasse 7 noch nicht mit Zufallszahlen gearbeitet haben, lernen sie die Nutzung hier kennen. Es ist nicht daran gedacht zu thematisieren, wie der Computer Zufallszahlen erzeugt. Es geht hier lediglich um die Eröffnung neuer Möglichkeiten, die Zufallszahlen bei der Programmierung bieten.

In unserem Fall simulieren wir die Froschsprünge und erhalten Sprungweiten in einem vorgegebenen Bereich.

Um das Ganze anschaulich zu machen, lassen die Schülerinnen und Schüler auf der Bühne in Scratch einen Frosch tatsächlich die zufällige Weite in Pixel nach vorne springen. Um das deutlich sichtbar zu machen, ist es sinnvoll, den Frosch beim Anklicken zunächst wieder an die Ausgangsposition zu setzen, dort kurz warten zu lassen und erst dann den Sprung durchzuführen.

Froschhüpfen – Teil II (Aktion)

Der zweite Auftrag geht an die gesamte Gruppe. Ist die Klasse zu groß, kann man auch in zwei oder drei Untergruppen aufteilen. Jede Gruppe bekommt den Auftrag, die jeweils beste Sprungweite aller Frösche der Gruppe in einer neuen Datenstruktur zu speichern, um die Weiten vergleichen zu können.

Dazu bekommt jede Gruppe zunächst den Auftrag, ihre Schachteln in der Reihenfolge ihrer Froschnummern aneinander zu legen. In Schachtel Nr. 1 liegt also die maximale Sprungweite von Frosch Nr. 1, in Schachtel Nr. 2 die maximale Weite von Frosch Nr. 2, usw.

Die Schülerinnen und Schüler einer Gruppe erhalten dann den Auftrag, in einem ersten Schritt den Frosch mit der größten Weite zu finden, und in einem zweiten Schritt den Mittelwert (arithmetisches Mittel) der Sprungweiten aller Frösche in der Gruppe zu berechnen. Für beide Aufgaben gibt es folgende Vorgaben:

  1. Es darf immer nur eine Schachtel geöffnet sein.

  2. Die Gruppe darf sich zusätzlich zum Wert in der geöffneten Schachtel immer nur einen weiteren Wert „merken“. (Möchte man auch wissen, welcher Frosch die beste Sprungweite hatte, muss man sich dazu auch die jeweilige Position merken.)

Auch hier bekommen die Schülerinnen und Schüler wieder die Aufgabe, ihre Schritte genau aufzuschreiben. (Es macht Sinn, einen Protokollanten oder eine Protokollantin zu bestimmen.) Ein Beispielprotokoll finden Sie in den Lösungen (02_alg_frosch_auftrag_2 _beispielprotokoll).

Im Plenum wird das Vorgehen der einzelnen Gruppen vorgestellt und besprochen.

Im Anschluss daran erhalten die Schülerinnen und Schüler ein Arbeitsblatt zu Listen (02_alg_frosch_auftrag_2_listen), bei dem sie gruppenintern zunächst Aufgaben zur Schreibweise und danach Aufgaben zu Listen in der Programmierumgebung bearbeiten.

Hintergrund

Mehrere Daten des gleichen Typs lassen sich in unterschiedlichen Datenstrukturen speichern. Sowohl in Scratch als auch im MIT-App-Inventor heißt diese Datenstruktur Liste, ist aber eine Mischform aus einem dynamischen Array und einer verketteten Liste.

Bei einem Array (Feld) handelt es sich um eine lineare Anordnung von Daten desselben Grundtyps. Ein Array hat eine feste Größe, die nicht veränderbar ist. Da jedes Element mit einem Index versehen ist, kann direkt auf einzelne Elemente zugegriffen werden.

Eine verkettete Liste dagegen bietet die Möglichkeit, beliebig viele Elemente geordnet in einer Datenstruktur abzulegen, es ist aber nur das erste Element bekannt. Jedes Element kennt seinen Nachfolger. Ein Zugriff direkt auf ein Element ist aber nicht möglich.

Bei doppelt verketteten Listen ist auch das letzte Element bekannt und jedes Element kennt sowohl Vorgänger als auch Nachfolger.

Der große Vorteil von Arrays ist es, dass man direkt auf ein Element durch seinen Index zugreifen kann, der Nachteil ist die feste Größe. Hier bietet sich die Struktur des dynamischen Arrays an, bei dem die Größe des Feldes verändert werden kann.

Wie oben schon erwähnt, bieten beide Programmierumgebungen eine elegante Mischform an. Es können sowohl beliebig viele Elemente angehängt werden, ohne die Größe verändern zu müssen (wie bei verketteten Listen), man kann auch direkt auf ein Element zugreifen (wie bei Arrays).

Bei einem Array bleiben Positionen, deren Element gelöscht ist, unbesetzt. Da es eine feste Größe besitzt, wird der Wert des gelöschten Elementes auf „null“ gesetzt. Wird dagegen ein Element aus einer Liste gelöscht, wird der Nachfolger des gelöschten Elementes an dessen Vorgänger angehängt. Diese Vorgehensweise der Liste wird auch hier in beiden Umgebungen genutzt.

Zur Darstellung von Listen werden in den meisten Programmiersprachen eckige Klammern verwendet.

Beispiele:

[23, 14, 56, 70, 50, 23] – Liste von Sprungweiten eines Frosches

[ ] - leere Liste

[‘Simon‘, ‘Susi‘, ‘Hans‘, ‘Elke‘, ‘Micha‘] – Liste der Gruppenteilnehmer

Alle Elemente einer Liste sind durchnummeriert. In den gängigen Programmiersprachen startet die Zählung bei 0. In Scratch und dem MIT-App-Inventor startet sie – was für die jüngeren Schülerinnen und Schüler intuitiver ist – mit 1. Die Nummer eines Elementes wird Index genannt.

Beispiel:

S = [23, 14, 56, 70, 50, 23]

Die Liste S hat 6 Elemente. Dabei beschreibt S[ i ] das i-te Listenelement.

S[ 1 ] ist 23, S[ 2 ] ist 14, usw.

Den Umgang mit Listen in Scratch und dem MIT-App-Inventor finden Sie auf dem jeweiligen Arbeitsblatt für die Schülerinnen und Schüler (02_alg_frosch_auftrag_2_listen).

Froschhüpfen – Teil II (Programmierung)

Die Schülerinnen und Schüler versuchen jetzt, ihre Entdeckungen und ihr neu erworbenes Wissen über Listen auch in der Programmierumgebung umzusetzen. Die Aufträge zur Umsetzung mit Hilfestellungen für Scratch (oder den AI2) finden Sie im Material (02_alg_frosch_auftrag_2).

Zunächst wird eine neue Liste erzeugt, die maximalen Sprungweiten der Frösche aus der Gruppe dort eingegeben und es werden zwei Tastaturereignisse programmiert, die das Maximum bzw. den Mittelwert der Listenelemente bestimmen sollen.

Im Anschluss daran können die beiden Aspekte verknüpft werden. Jede zufällige Sprungweite des Frosches auf der Bühne wird in die Liste eingetragen. Dann können Maximum und Mittelwert der Elemente der Liste bestimmt und ausgegeben werden.

Als Differenzierungsmöglichkeit können schnelle Schülerinnen und Schüler sich überlegen, wie die Einträge der Liste sortiert werden können. Für die Programmierung eines Spiels mit Highscore-Liste ist das zum Beispiel eine gute Vorarbeit.

Grundsätzlich ist die Sortierung noch nicht in Klasse 8 im IMP-Bildungsplan.

In der Erprobung haben die Schülerinnen und Schüler, die ihre Listen sortieren wollten, die Suche nach dem Maximum genutzt. Sie haben zwei weitere Listen definiert. Eine neue, leere Liste und eine Hilfsliste, die anfangs ihrer Liste der Sprungweiten entspricht. Sie haben dann in der ursprünglichen Liste nach dem Maximum gesucht und dieses an die neue leere Liste angehängt. Anschließend wurde aus der Hilfsliste das Element mit dem größten Wert gelöscht. In den nächsten Schritten wurde dies so fortgesetzt und das jeweils das neue Maximum an den Beginn der Liste gesetzt.

 


1 URL: http://www.mittags-pause.de/origami-frosch-falten-anleitung-zum-basteln/ (abgerufen am 19.04.2018); Alternativ können Kunststoff-Chips des sog. Floh-Spiels verwendet werden.

2 Schülerduden Informatik, 4. Auflage, 2003, S. 527, Begriff: Variable

 

Unterrichtsverlauf: Herunterladen [odt][102 KB]

Unterrichtsverlauf: Herunterladen [pdf][160 KB]

 

Weiter zu Einarmiger Bandit