PARKETTIERUNGEN - Algorithmisches Denken
←
→
Transkription von Seiteninhalten
Wenn Ihr Browser die Seite nicht korrekt rendert, bitte, lesen Sie den Inhalt der Seite unten
PARKETTIERUNGEN ALGORITHMISCHES DENKEN IN DER PRIMARSCHULE Enthaltene Aspekte des Algorithmischen Denkens Abstraktion Algorithmendesign Evaluation Generalisierung Informationsdarstellung Iterative Verbesserung Präzise Kommunikation Problemzerlegung Fachbereiche: Mathematik · Medien und Informatik Zeitaufwand: ca. 3 Lektionen Version: 18. Oktober 2021 Zusammenfassung In dieser Unterrichtseinheit wird die Programmierung mit Logo unter Verwendung bekannter Konzepte vertieft, um eine wichtige mathematische Einsicht zu erlangen, die besagt, dass die 2-dimensionale Ebene nur mit regelmässigen Dreiecken, Quadraten und Sechsecken lückenlos parkettiert werden kann und mit keinen anderen regelmässigen Vielecken. Wir setzen hierbei voraus, dass die Studierenden das Konzept der Schleife kennen und bereits wissen, wie sie eigene Befehle mit Parametern definieren können. Generell werden Vorkenntnisse in der Programmiersprache Logo erwartet. Hinweise zur Literatur über die Grundlagen finden sich in den Quellenangaben. Wir beginnen mit den in diesem Zusammenhang am leichtesten zugänglichen Vielecken, den Quadraten, und erhöhen die Komplexität dann schrittweise. Nachdem die Ebene mit Dreiecken und Sechsecken parkettiert wurde, werden theoretische Überlegungen darüber angestellt, warum dies beispielsweise nicht mit Fünfecken möglich ist. Beispielsequenz Wir haben bereits gelernt, wie wir regelmässige Vielecke mit der Turtle zeichnen können. Hierbei laufen wir eine fixe Seitenlänge vorwärts und drehen uns dann um einen fixen Winkel, wobei sich die Turtle insgesamt um 360 Grad dreht. Diese Drehung wird gleichmässig auf alle Ecken verteilt. Zunächst wird also eine Seitenlänge und die Anzahl der Ecken n festgelegt. Aus n kann zum einen direkt die Anzahl der Drehungen und zum anderen der Drehwinkel α = 360/n berechnet werden. Dem Algorithmus wird die Eckenanzahl n als Parameter übergeben. Für die Seitenlänge 80 führt dies somit zum folgenden Algorithmus. 1
to vieleck : n repeat : n [ fd 80 rt 360/: n ] end Falls die Seitenlänge ebenfalls beliebig angegeben werden soll, kann hierzu ein weiterer Parameter :laenge verwendet werden. Jetzt soll die Ebene, auf der sich die Turtle bewegt, mit Quadraten parkettiert werden. Aufgabe 1. Überlegen Sie, wie Sie 5 Quadrate lückenlos nebeneinander zeichnen können wie in der folgenden Abbildung dargestellt. Nach jeder Ausführung muss die Turtle neu positioniert werden. Überlegen Sie deshalb genau, wie die Befehlssequenz hierzu aussehen soll. Aufgabe 2. Schreiben Sie nun einen Algorithmus viereckreihe, der einen Parameter :anzahl erhält und :anzahl viele Quadrate mit Seitenlänge 100 ähnlich wie in Aufgabe 1 lückenlos nebeneinander malt. Aufgabe 3. Erweitern Sie vieleck um einen zweiten Parameter :laenge, der die Seitenlänge des gezeichneten Vielecks angibt. Erweitern Sie anschliessend ebenfalls viereckreihe um einen Parameter :laenge und passen Sie die entsprechenden Teile im Algorithmus an, damit vieleck innerhalb korrekt verwendet wird. Aufgabe 4. Schreiben Sie einen Algorithmus viereckparkett, der auch einen Parameter :laenge erhält, mit dem die Seitenlänge der gezeichneten Quadrate angeben wird. Innerhalb wird der Algorithmus viereckreihe verwendet, um mehrere Reihen von Quadraten zu zeichnen. Ein mögliches ist in der folgenden Abbildung dargestellt. 2
Dem Algorithmus viereckparkett werden hierbei zwei Parameter, zum Beispiel :anzahlZeilen und :anzahlSpalten übergeben, um die Länge und Anzahl der Zeilen und Spalten angeben zu können. Insgesamt hat der Algorithmus die folgende Form. to viereckparket : laenge : anzahlZeilen : anzahlSpalten cs repeat : anzahlZeilen [ ... ] ... end Wie wir sehen, füllen wir die Ebene in der Tat lückenlos aus, das heisst die Quadrate liegen sowohl ohne Überlappung als auch ohne Zwischenräume nebeneinander. Mit Dreiecken kann etwas Ähnliches erreicht werden. Allerdings müssen wir hierbei ein bisschen mehr aufpassen, da nicht alle Dreiecke gleich ausgerichtet sind, wie in Abbildung 1 gezeigt. Abbildung 1. Parkettierung mit Dreiecken Aufgabe 5. Erstellen Sie Algorithmen dreickreihe und dreieckparkett, die vieleck verwenden, um die Ebene mit Dreiecken statt Quadraten zu parkettieren. Zeichnen Sie in dreieckparkett immer zwei Reihen auf einmal. 3
Aufgabe 6. Ebenfalls kann mit Sechsecken eine Parkettierung vorgenommen werden. Überlegen Sie genau, warum dies möglich ist, indem Sie drei Sechsecke in einem Punkt aneinanderlegen. Betrachten Sie die Innenwinkel des Sechsecks, die Sie aus dem Drehwinkel der Turtle berechnen können. Was fällt Ihnen auf? Aufgabe 7. Erstellen Sie Algorithmen sechseckreihe und sechseckparkett, die auch wieder den Algorithmus vieleck verwenden, um die Ebene mit Sechsecken statt Quadraten zu parkettieren. Zeichnen Sie auch hier wieder zwei Reihen auf einmal. Aufgabe 8. Es ist vielleicht zunächst überraschend, aber mit anderen Vielecken können keine derartigen Par- kettierungen vorgenommen werden. Mir «derartig» meinen wir hier konkret, dass sich die Vielecke nicht überlappen dürfen, auf der anderen Seite aber die gesamte Fläche mit ihnen bedeckt sein soll. Argumentieren Sie, wieso dies der Fall ist. Lösungen zu den Aufgaben Aufgabe 1 Nach jeder Ausführung von vieleck 80 muss die Turtle neu ausgerichtet werden, indem sie sich beispielsweise um 90 Grad nach rechts dreht, sich :laenge Schritte nach vorne bewegt und dann 90 Grad nach links dreht. Aufgabe 2 Die Überlegungen aus der Lösung von Aufgabe 1 führen zu dem folgenden Algorithmus viereckreihe, der eine Reihe mit :anzahl vielen Quadraten der Länge 100 zeichnet. to vieleck : n repeat : n [ fd 100 rt 360/: n ] end to viereckreihe : anzahl repeat : anzahl [ vieleck 4 rt 90 fd 100 lt 90] end Aufgabe 3 Die Erweiterung führt zu den folgenden zwei Algorithmen. 4
to vieleck : laenge : n repeat : n [ fd : laenge rt 360/: n ] end to viereckreihe : laenge : anzahl repeat : anzahl [ vieleck : laenge 4 rt 90 fd : laenge lt 90] end Aufgabe 4 Hier muss darauf geachtet werden, dass die Turtle nach dem Zeichnen einer Reihe, also nach der Ausführung von viereckreihe, so positioniert wird, dass sie die nächste Reihe von der korrekten Startposition aus zeichnet. to viereckparkett : laenge : anzahlZeilen : anzahlSpalten cs repeat : anzahlZeilen [ viereckreihe : laenge : anzahlSpalten lt 90 fd : anzahlSpalten *: laenge rt 90 fd : laenge ] end Aufgabe 5 In der folgenden Lösung wird wieder der Algorithmus vieleck verwendet. Die Schwierigkeit ist auch hier, die Turtle am Anfang in die richtige Position zu bringen. to dreieckreihe : laenge : anzahl rt 30 repeat : anzahl [ vieleck : laenge 3 rt 60 fd : laenge lt 60] end to dreieckparkett : laenge : anzahlZeilen : anzahlSpalten cs repeat : anzahlZeilen [ dreieckreihe : laenge : anzahlSpalten lt 60 fd : laenge lt 150 dreieckreihe : laenge : anzahlSpalten rt 150 ] end Aufgabe 6 Die Studierenden stellen fest, dass die Drehwinkel eines Sechsecks 360/6 = 60 Grad betragen, was direkt aus den Bewegungen der Turtle geschlussfolgert werden kann. Daraus ergeben sich Innenwinkel zu 180 − 60 = 120 Grad. 5
Abbildung 2. Drei lückenlose Sechsecke Wie in Abbildung 2 gezeigt, können deswegen drei Sechsecke in einem Punkt zusammengelegt und jeweils um 120 Grad gedreht werden. Da 3 · 120 = 360 ergibt, ensteht somit keine Lücke. Aufgabe 7 Die Lösung für Sechsecke kann wie folgt aussehen, wobei hier die Befehle pu und pd zum Heben und Senken des Stiftes Verwendung finden. Das Erstellen dieser Lösung bedeutet einen starken Komplexitätsanstieg gegenüber den vorherigen Aufgaben. to sechseckreihe : laenge : anzahl repeat : anzahl [ vieleck : laenge 6 repeat 4 [ fd : laenge rt 60] rt 120 ] end to sechseckparkett : laenge : anzahlZeilen : anzahlSpalten cs repeat : anzahlZeilen [ sechseckreihe : laenge : anzahlSpalten repeat 2 [ fd : laenge lt 60] lt 60 bk : laenge sechseckreihe : laenge : anzahlSpalten pu rt 180 lt 60 fd : laenge rt 60 pd ] end 6
Beachten Sie, dass durch das in der Aufgabenstellung erwähnte gleichzeitige Zeichnen von zwei Reihen die Anzahl der Reihen immer doppelt so gross ist wie der angegebene Parameterwert. Aufgabe 8 Bei Fünf- oder Siebenecken wird es immer Lücken zwischen den Vielecken geben oder sie überlappen sich. Dies folgt aus den Innenwinkeln, die eine Parkettierung unmöglich machen. Beim Fünfeck betragen die Innenwinkel beispielsweise 108 Grad. Wenn drei von ihnen in einer Ecke aneinander gelegt werden, ergeben sich somit 324 Grad, sodass eine Lücke bleibt. Es kann offensichtlich kein viertes Fünfeck verwendet werden, um diese zu schliessen. Bei Siebenecken beträgt der Innenwinkel ca. 128 Grad, was dazu führt, dass sich drei von ihnen, die an einer Ecke aneinander gelegt werden, überlappen. Da sich die Innenwinkel vergrössern, wenn die Anzahl der Ecken steigt, gibt es keine weiteren Parkettierungen. Didaktischer Kommentar Diese Unterrichtseinheit stellt einen Bezug zwischen Mathematik und Informatik her. Hier wird vor- ausgesetzt, dass die Studierenden bereits Erfahrungen mit der Programmiersprache Logo gesammelt haben und insbesondere schon mit dem Prinzip des Parameters vertraut sind, was frühestens für die sechste Klasse vorgesehen ist. Eine Einführung finden Sie bei den Quellenangaben. Die Besonderheit, hier Logo bzw. Turtlegrafik zu verwenden, liegt darin, dass die Studierenden sich auf eine «lokale» Weise mit den Vielecken auseinandersetzen, wenn sie sie nicht einfach «global» (also von aussen) in einem Koordinatensystem betrachten, sondern selber mit der Turtle konstruieren. Hierdurch werden die Zusammenhänge sehr viel plastischer und Drehwinkel können direkt mit Hilfe der Turtle argumentiert werden. Die acht Aufgaben bauen aufeinander auf, wobei es zunächst eine kleine Repetition gibt. Aufgabe 8 dient der Differenzierung und ist nur für sehr starke Studierende vorgesehen. Mit dieser Unterrichtseinheit kann ein Bogen zur Unterrichtseinheit «Bienentanz» geschlagen werden, da Bienenwaben Sechsecken entsprechen, die lückenlos aneinander gebaut werden. Die Unterrichtseinheit enthält die folgenden Aspekte des algorithmischen Denkens. • Algorithmendesign. In dieser Unterrichtseinheit werden diverse Programmierkonzepte vertieft, vor allem das Ver- wenden von Unterprogrammen und die Verwendung mehrerer Parameter. Da die Parkettieralgo- rithmen recht komplex werden, ist es wichtig, den Code übersichtlich und gut strukturiert zu halten. • Problemzerlegung. Die Aufgaben bauen aufeinander auf und erlauben es, das Endresultat modular zu konstruieren. Beispielsweise werden bei Aufgaben 2 bis 4 zunächst ein Quadrat, dann eine Reihe von Quadraten und schliesslich eine Fläche von Quadraten gezeichnet. Letzteres ist das gegebene Problem (viereckparkett), das in Teilprobleme (viereckreihe) zerlegt wird, die wiederum zerlegt werden (viereck). 7
• Evaluation. Das Ziel dieser Unterrichtseinheit ist es, die erstellten Algorithmen zu reflektieren und insbe- sondere ihre Grenzen zu verstehen. So kann, wie in Aufgabe 8 diskutiert, beispielsweise keine weitere Verallgemeinerung stattfinden, die dazu führt, dass beliebige Vielecke zur Parkettierung herangezogen werden können. Quellenangaben und Weiterführende Literatur 1. Heidi Gebauer, Juraj Hromkovič, Lucia Keller, Ivana Kosírová, Giovanni Serafini und Björn Steffen. Programmieren mit Logo. https://www.abz.inf.ethz.ch/primarschulen-stufe-sek-1/ unterrichtsmaterialien/; zuletzt abgerufen am 02.10.2021. 2. Parkettierungen: https://de.wikipedia.org/wiki/Parkettierung; zuletzt abgerufen am 02.10.2021. 3. XLogoOnline: https://xlogo.inf.ethz.ch; zuletzt abgerufen am 02.10.2021. 8
Sie können auch lesen