Die Python-Anwendung auf dem fx-CG50
Mit dem Grafikrechner fx-CG50 und der Programmiersprache Python können Schülerinnen und Schüler in die Welt des Programmierens eintauchen: Wie mathematische Zusammenhänge in Algorithmen überführt werden können, zeigt das Beispiel der Fibonacci-Folge.
Digitale Anwendungen nutzen Algorithmen, um sehr große Datenmengen effizienter zu untersuchen und um Prozesse zu optimieren. Doch wie „denkt“ ein Algorithmus? Wie geht ein Algorithmus bei der Ermittlung von Werten vor und was macht ihn so effizient? Zum Beispiel eine Arbeitsweise mithilfe sich wiederholender Muster, sogenannten Schleifen. Bei Schleifen werden Vorgänge so oft wiederholt, bis ein gewünschtes Ergebnis/Zustand erreicht wird. Durch das Beispiel des Pizzaessens wird deutlich, wie beliebige Vorgänge in einzelne Aufgaben zerlegt werden können:
(1) Schneide ein Stück von der Pizza ab
(2) Iss das Stück, dass du gerade abgeschnitten hast
(3) Schneide ein neues Stück ab
(4) Iss das Stück, dass du gerade abgeschnitten hast
....
(n-4) Du kannst kein Stück mehr abschneiden
(n-3) Prüfe ob der Teller leer ist
(n-2) Ja, der Teller ist leer
(n-1) Du hast die Pizza aufgegessen
(n) Ende Pizzaessen
Durch diese Darstellung wird ersichtlich, dass einige Schritte trivial sind, da sie sich so oft wiederholen, bis ein neuer Zustand erreicht wird. Mit Hilfe von Schleifen lassen sich Teil-Prozesse, wie der des Pizzaessens, effizienter darstellen:
Dieser Algorithmus lässt sich in verschiedenen Programmiersprachen umsetzen – je nach Sprache etwas anders formuliert, aber immer nach demselben Grundprinzip. Für Schülerinnen und Schüler ist die Beschäftigung mit Programmiersprachen aus zwei Gründen sinnvoll. Zum einen, weil sie dadurch diese grundlegende Funktionsweise von Algorithmen kennenlernen und verstehen, wie Mensch und Maschine miteinander kommunizieren können. Zum anderen erfahren sie, wie wichtig es ist, Programmiersprachen einheitlich und korrekt zu verwenden – anders als bei menschlichen Sprachen kann die Kommunikation schon durch kleine Grammatikfehler scheitern.
Die Programmiersprache Python ist besonders gut für den Einstieg geeignet. Sie ist aufgrund ihrer einfachen Syntax leicht zu erlernen. Hinzu kommt, dass Python unübersichtliche „Spaghetti-Codes“ nahezu unmöglich macht, da die Blöcke in den Kontrollstrukturen Schleifen, Verzweigungen und Funktionen durch Einrückung statt durch zusätzliche Klammern gekennzeichnet werden.
Die Python-Anwendung auf dem fx-CG50 ermöglicht einen einfachen Einstieg in die Welt des Programmierens. Und obwohl es sich hierbei um eine vereinfachte Version von Python handelt, lassen sich doch alle Vorteile der Sprache nutzen.
Die Fibonacci-Folge in Python
Um den Schülerinnen und Schülern zu zeigen, wie durch Algorithmen mathematische Herausforderungen schnell und einfach beantwortet werden können, lohnt sich ein Blick auf die Fibonacci-Folge: Ihre ersten beiden Glieder haben jeweils den Wert 1, alle weiteren ergeben sich aus der Summe der beiden Vorgänger. Auf diese Weise ergibt sich folgende Zahlfolge: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, …
Die Definition der Folge ist rekursiv. Das bedeutet, dass sich die Funktion so oft selbst aufruft, bis ein entsprechender Zielwert erreicht oder ein bestimmter Grenzwert überschritten wird.
Wie aber lässt sich berechnen, welche Zahl an einer bestimmten Stelle der Folge erscheint? Die Antwort gibt die Formel von Moivre-Binet. Sie liefert damit zugleich eine Basis, um mithilfe von Python selbst einen Algorithmus für die Fibonacci-Folge zu ermitteln. Unter Hinzunahme der Moivre-Binet-Formel ergeben sich drei verschiedene Lösungsansätze:
- Die direkte Berechnung einer Stelle a der Folge mittels Moivre-Binet-Formel
- Die iterative Berechnung einer Stelle a entsprechend der rekursiven Definition
- Die Berechnung der Stelle a mittels einer rekursiven Funktion
Wie diese verschiedenen Lösungswege innerhalb der Python-Anwendung umgesetzt werden können und wie diese Lösungswege dabei helfen können, die verschiedenen Vorgehensweisen eines Algorithmus nachvollziehen zu können, zeigt Dr. Wolfgang Ludwicki Im CASIO forum.