EINFÜHRUNG |
Du hast bereits den Befehl repeat kennengelernt, mit dem du einen Programmblock mehrmals wiederholen kannst. repeat kannst du so allerdings nur im TigerJython verwenden. Die while-Struktur ist aber überall einsetzbar. Die while-Schleife wird mit dem Schlüsselwort while eingeleitet, gefolgt von einer Schleifenbedingung. Die Anweisungen im Schleifenblock werden wiederholt, so lange die Bedingung erfüllt ist. Nach Ende der Wiederholungen wird das Programm mit der nächsten Anweisung nach dem Schleifenblock fortgesetzt. |
SPINNENNETZ |
from gturtle import * makeTurtle("sprites/spider.png") a = 5 while a < 200: forward(a) right(90) a = a + 2
|
MEMO |
Eine while-Schleife dient zur Wiederholung eines Programmblocks. Die Bedingung muss wahr sein, damit der Programmblock ausgeführt wird. Darum spricht man auch von einer "Ausführungsbedingung" oder "Laufbedingung". Fehlt im Schleifenblock die Wertänderung, bleibt die Laufbedingung immer wahr und das Programm bleibt endlos in der Schleife "hängen". In unserer Lernumgebung kannst du ein hängendes Programm mit dem Stoppknopf oder mit Schliessen des Turtlefensters abbrechen. Im allgemeinen sind endlose Schleifen ohne Abbruch-Möglichkeit aber gefährlich, da im Extremfall ein Neustart des Computers nötig ist. |
BEDINGUNGEN MIT OR VERKNÜPFEN |
from gturtle import * def triangle(): repeat 3: forward(100) right(120) makeTurtle() i = 0 while i < 6: if i == 0 or i == 2 or i == 4: setPenColor("red") else: setPenColor("green") fillToPoint(0, 0) triangle() right(60) i = i + 1 |
MEMO |
Bei Verwendung von mehreren Programmstrukturen musst du auf die korrekte Einrückung der einzelnen Schleifenblöcke achten. Wie du siehst, kannst du zwei oder mehr Bedingungen mit or verknüpfen. Eine so verknüpfte Bedingung ist dann wahr, wenn die eine oder auch die andere Bedingung erfüllt ist (also auch, wenn beide Bedingungen erfüllt sind). Mit dem Befehl fillToPoint(x, y) kannst du Figuren mit der Stiftfarbe während des Zeichnens füllen, im Gegensatz zum Befehl fill(), mit dem du bereits gezeichnete geschlossene Figuren füllen kannst. |
BEDINGUNGEN MIT AND VERKNÜPFEN |
from gturtle import * makeTurtle() setPos(-200, 30) right(30) fillToHorizontal(0) setPenColor("sienna") nr = 1 while nr <= 10: if nr > 3 and nr < 8: forward(60) right(120) forward(60) left(120) else: forward(30) right(120) forward(30) left(120) nr += 1 |
MEMO |
Zwei Bedingungen kannst du mit and verknüpfen. Eine solche Verknüpfung ist nur dann wahr, wenn beide Bedingungen erfüllt sind. Mit dem Befehl fillToHorizontal(y) kannst du Figuren mit der Stiftfarbe während des Zeichnens füllen. Gefüllt wird die Fläche zwischen der gezeichneten Figur und der horizontalen Linie durch y. nr += 1 kannst du lesen als: nr wird erhöht um 1. Es ist eine abgekürzte Scheibweise für die Zuweisung nr = nr + 1. |
SCHLEIFEN MIT BREAK VERLASSEN |
from gturtle import * def square(sidelength): repeat 4: forward(sidelength) left(90) makeTurtle() hideTurtle() i = 0 while True: if i > 120: break square(i) right(6) i += 2 print("i =", i) |
MEMO |
Mit einer while True Schleife kann ein Programmblock so lange wiederholt, bis das Programm durch Schliessen des Turtle-Fensters abgebrochen wird. Die Schleife wird in Zweierschritten durchlaufen. Statt i = i + 2 verwendest du die abgekürzte Schreibweise i += 2 (i wird erhöht um 2). Mit dem print-Befehl kannst du etwas in die TigerJython-Konsole im unteren Bereich des Editors schreiben. Für Text verwendest du Anführungszeichen und trennst Zahlen mit einem Komma ab. Es wird automatisch ein Leerzeichen zwischen dem Text und der Zahl eingefügt. Verstehst du, warum i = 122 ausgegeben wird? Selten gebraucht wird das Schlüsselwort continue, das bewirkt, dass der restliche Teil des Schleifenkörpers übersprungen wird, die Schleife danach aber weitergeführt wird. |
EINGABE-VALIDIERUNG |
Gibst du dem Benutzer die Möglichkeit mit einem Eingabedialog einen Wert in einem bestimmten Bereich einzugeben, so kannst du dich nicht darauf verlassen, dass er sich an deine Vorgaben hält. Ein "robustes" Programm überprüft die Eingabe und fängt eine fehlerhafte Eingabe mit einer Rückmeldung ab. Diese Eingabeprüfung kannst du am besten mit einer while-Schleife durchführen, die solange durchlaufen wird, bis sich der Eingabewert an die Vorgaben hält. In deinem Programm wählt der Benutzer mit den Zahlen 1, 2, oder 3 die Farben rot, grün oder gelb des gezeichneten Kreises aus. from gturtle import * makeTurtle() n = 0 while n < 1 or n > 3: n = inputInt("Enter 1, 2 or 3") if n == 1: setPenColor("red") elif n == 2: setPenColor("green") else: setPenColor("yellow") dot(200) |
AUFGABEN |
|