Unterrichtsgespräch, Algorithmus umgangssprachlich formulieren, dann gemeinsam in VS Code eintippen in Python (zuerst Verzeichnis öffnen)
Flussdiagramm: Was ist die Ausgabe des hier verlinkten Flussdiagramms?
Zusatzaufgaben:
1. Installiere Python auf deinem Rechner. Am einfachsten geht dies über den Windows App Store.1) (Man kann die App “Python” starten und dann direkt in der “Python-Shell” Python-Befehle eingeben. Das brauchen wir aber heute nicht.)
2. Versuche, das gemeinsam geschriebene Programm teiler.py
zum Laufen zu bringen (mit dem Shortkey Ctrl+F5
oder über das Menü per Run
→Run without debugging
(oder deutsch Ausführen
→Ausführen ohne Debugging
)).
(eventuell Würfel mitnehmen…)
Das Chaos-Spiel geht wie folgt:
Seien $A$, $B$, $C$ die Ecken eines gleichseitigen Dreiecks auf der Tafel.
Führe nun den folgenden Algorithmus (= Handlungsanweisung) aus:
Wähle zufällig einen weiteren Punkt $P$. Wir lassen diesen Punkt „springen“, indem wir die folgenden Anweisungen unendlich oft wiederholen:
import pygame from random import * breite = 500 hoehe = 433 # ungefähr sqrt(3)/2 * breite; sqrt = square root = Quadratwurzel iterationen = 10000 weiss = (255, 255, 255) # Ein Tupel aus drei Zahlen, kodiert die Farbe Weiss im RGB-Modell, das wir später kennenlernen werden. # Koordinaten des Punkts A xA = 0 yA = hoehe # Koordinaten des Punkts B xB = breite yB = hoehe # Koordinaten des Punkts C xC = int(breite / 2) # Der Befehl "int" macht eine Kommazahl (= reelle Zahl = real number) durch Abschneiden der Nachkommastellen zu einer ganzen Zahl (= integer). yC = 0 pygame.init() pygame.display.set_caption("Das Chaos-Spiel") leinwand = pygame.display.set_mode((breite + 1, hoehe + 1)) pygame.draw.line(leinwand, weiss, (xA, yA), (xB, yB)) pygame.draw.line(leinwand, weiss, (xB, yB), (xC, yC)) pygame.draw.line(leinwand, weiss, (xC, yC), (xA, yA)) pygame.display.update() x = randint(0, breite) y = randint(0, hoehe) i = 0 while i <= iterationen: zufall = randint(1, 3) if zufall == 1: x = x + 0.5 * (xA - x) y = y + 0.5 * (yA - y) if zufall == 2: x = x + 0.5 * (xB - x) y = y + 0.5 * (yB - y) if zufall == 3: x = x + 0.5 * (xC - x) y = y + 0.5 * (yC - y) leinwand.set_at((round(x),round(y)), weiss) # Zeichnet ein Pixel am Punkt (x,y) bzw. genauer an den gerundeten Koordinaten. pygame.display.update((round(x), round(y), 1, 1)) # denn das ist deutlich schneller als # pygame.display.update() pygame.time.delay(1) if i % 1000 == 0: # "Prozent-Division" liefert den Rest der Division. print(i) i = i + 1 print("Fertig! Das Fenster wird in 5 Sekunden geschlossen.") # Ausgabe der Zeichenkette (= string) zwischen den Anführungszeichen. print(f"Insgesamt wurden {iterationen} Punkte gezeichnet.") # f-string = formatted string pygame.time.delay(5000) # Pause in Millisekunden pygame.quit()
1. Speichere das obige Python-Programm chaos-game.py
in deinem Verzeichnis C:\Users\Vorname.Nachname\informatik\python
(durch Anklicken des Programm-Namens über dem obigen Code mit der RECHTEN Maustaste, Save as
/Speichern unter
).
2. Öffne das Programm chaos-game.py
mit VS-Code (etwa über das Menü per File
→Open File
). Versuche, es dort zum Laufen zu bringen (über das Menü per Run
→Run without debugging
(oder deutsch Ausführen
→Ausführen ohne Debugging
) oder schneller mit dem Shortkey Ctrl+F5
). - Vermutlich klappt das nicht: Du musst die Library pygame
installieren wie im folgenden 4. Punkt beschrieben (dies ist eine Bibliothek von Befehlen, die das Programmieren von Spielen erleichtern (pygame = python game library); wir verwenden sie, da sie sich auch gut zum Erstellen von Zeichnungen eignet):
3. Öffne die Anwendung/App “Eingabeaufforderung” (= “command prompt” = “Befehlszeile”, auf manchen Schul-Windows-Rechnern muss man “cmd” suchen). Gib dort den Befehl pip install pygame
ein, gefolgt von Enter
: (pip
ist ein Paketverwaltungsprogramm für Python; pip ist ein Akronym für “pip installs packages”, vgl. https://de.wikipedia.org/wiki/Pip_(Python))
(Falls das Probleme macht, vielleicht klappt das Folgende (nicht getestet): Probiere es mit python -m pip install pygame
.)
4. Nun solltest du das Programm in VS-Code starten können (so wie im Punkt 3 beschrieben).
Die Figur, die das Chaos-Spiel produziert, heisst Sierpiński-Dreieck. Weitere Infos zum Chaos-Spiel findest du unter Wikipedia - Chaos game.
Installiere die beiden Extensions “Python” und “Pylance” in VS Code wie im Folgenden erklärt (eventuell wurde dir dies bereits von VS Code vorgeschlagen und du hast diese Aufgabe bereits erledigt). Sie erleichtern das Programmieren in Python.
Erklärung wichtiger Begriffe: Algorithmus, Implementierung, IDE:
Ctrl+F5
).
Verändere den Programm-Code so, dass 1'000'000 Punkte gezeichnet werden und dass nach dem Zeichnen eines Punktes keine Pause von einer Millisekunde gemacht wird. (Ich habe diese Pause oben eingeführt, damit das Bild nicht “sofort” da ist; lösche den entsprechenden Befehl oder kommentiere ihn mit #
aus.)
Passe das Python-Programm so an, dass einige der Bilder in https://en.wikipedia.org/wiki/Chaos_game#Jumps_other_than_1/2 entstehen. Wenn du zum Beispiel das “Vicsek fractal” zeichnen willst:
2/3
.Du darfst natürlich kreativ sein und andere Punktekonstellationen und Faktoren ausprobieren.