TigerJython | xx für Gymnasien |
Mit Hilfe von Wiederholschleifen können bestimmte Programmteile mehrmals ausgeführt werden. Die einfachste Wiederholschleife ist die repeat-Schleife. Python verfügt auch über while- und for--Schleifen, die aber den Variablenbegriff voraussetzen und deshalb später eingeführt werden.
Beispiel 1: Blinklicht
Ähnlich wie ein Blinklicht, soll ein roter Kreis 10-mal nacheinander angezeigt und gelöscht werden. Dazu wird zuerst einen rot gefüllter Kreis gezeichnet und während 400 Millisekunden angezeigt. Dann wird der Kreis mit einem weissen Kreis übermalt (und damit eigentlich gelöscht) und das Programm während 400 Millisekunden angehalten. Um diesen Vorgang 10-mal zu wiederholen, verwendet man den Befehl repeat 10: (der Doppelpunkt ist wichtig). Die Anweisungen, die wiederholt werden, bilden einen Schleifenblock und müssen alle gleichweit einrückt sein. Man verwendet dazu vier Leerschläge oder die Tabulator-Taste.
# Gp3a.py from gpanel import * makeGPanel(-10, 10, -10, 10) repeat 10: setColor("red") fillCircle(3) delay(400) setColor("white") fillCircle(3) delay(400) |
Erklärungen zum Programmcode:
delay(time): das laufende Programm wird um die Zeit time (Millisekunden) angehalten. Dadurch bleibt der bestehende Zustand länger sichtbar. |
Beispiel 2: Kreise an zufällig gewählten Positionen zeichnen
Zufallszahlen bilden die Basis vieler Simulationen. Sie werden mit einem Zufallsalgorithmus erzeugt, der in Python im Modul random enthalten ist.
Der Befehl randint(a, b) liefert eine ganzzahlige Zufallszahl im Bereich a bis b (beide Grenzen eingeschlossen). Beispielsweise erhält man zufällige Würfelzahlen mit randint(1, 6). Mit dem Befehl random() werden Zufallszahlen zwischen 0 (eingeschlossen) und 1 (ausgeschlossen) mit 10 Dezimalstellen erzeugt (z.B. 0.69880747453)
Im Beispiel sollen 100 kleine rote Kreise zufällig auf die Fläche des Grafikfensters verteilt werden. Zuerst wird die Position des Kreises mit zwei Zufallszahlen im Bereich 0 bis 100 festgelegt und ein Kreis gezeichnet. Mit repeat 100: wird dieser Vorgang 100-mal wiederholt.
# Gp3b.py from gpanel import * from random import randint makeGPanel(0, 100, 0, 100) setColor("red") repeat 100: pos(randint(0, 100), randint(0, 100)) fillCircle(2) |
Erklärungen zum Programmcode:
from random import randint importiert die Funktion randint() aus dem Modul random |
Aufgaben: Serie 3 |
1) |
Programmiere eine Blinkanlage, die nacheinander die Farben rot, gelb und grün wechselt und diesen Vorgang 10-mal wiederholt. Wähle eine Anzeigeperiode von 400 ms. Wenn du im repeat-Befehl die Anzahl der Wiederholungen weglässt, blinkt die Anlage so lange bis das Grafikfenster geschlossen wird. |
2) |
|
3) |
Für die Erzeugung der Farben verwendest du den Befehl |