EINFÜHRUNG |
Oft musst du während der Wiederholung mitzählen lassen. Dazu benötigst du in einem Wiederholblock eine Variable, die sich in jedem Schleifendurchgang um einen bestimmten Wert ändert. Statt einer while-Struktur kannst du dies einfacher mit einer for-Struktur erledigen. Dazu muss du zuerst die range()-Funktion verstehen. Im einfachsten Fall hat range() einen einzigen Parameter (auch Stop-Wert genannt) und liefert eine Folge (Liste) von natürlichen Zahlen, die mit 0 beginnt und bei der letzten Zahl vor dem Stop-Wert endet. Du kannst dies an ein paar Beispielen selbst ausprobieren. Wenn du beispielsweise ein Programm mit der einzigen Anweisung |
LINIENSCHAR |
|
MEMO |
for i in range(n) durchläuft die Zahlen von 0 bis n-1, also insgesamt n Zahlen. Die Verdichtungsstellen der Linien bilden eine quadratische Bézierkurve. |
RANGE() MIT ZWEI PARAMETERN |
from gpanel import * makeGPanel(-20, 20, 0, 40) for i in range(-20, 21): if i < 0: setColor("red") else: setColor("green") line(i, 0, 0, 40) |
MEMO |
Die Schleife for i in range(start, stop) mit ganzzahligem Start- und Stop-Wert beginnt bei i = start und endet bei i = stop - 1, wobei der Schleifenzähler i bei jedem Schleifendurchgang um 1 vergrössert wird. Dabei musst du start kleiner als stop wählen, sonst wird Schleife nie durchlaufen. |
RANGE() MIT DREI PARAMETERN |
from gpanel import * makeGPanel(0, 40, 0, 40) setColor("red") y = 1 for i in range(2, 41, 2): move(20, y) fillRectangle(i, 1.5) y = y + 2 |
MEMO |
Die Schleife for i in range(start, stop, step) beginnt bei i = start und endet bei einem Wert, der kleiner ist als stop. i wird bei jedem Schleifendurchgang um step vergrössert. Für die Werte start, stop und step kannst du auch negativen Zahlen wählen. Bei negativen step wird i bei jedem Durchlauf um step verkleinert; der letzte Wert ist grösser als stop. |
VERSCHACHTELTE FOR-SCHLEIFEN (Moiré) |
from gpanel import * makeGPanel(0, 10, 0, 10) for i in range(11): for k in range(11): line(i, 0, k, 10) delay(50) for i in range(11): for k in range(11): line(0, i, 10, k) delay(50) |
MEMO |
Das Programm ist nicht ganz leicht zu verstehen, aber wichtig. Am besten gehst du davon aus, dass die Schleifenvariable i der äusseren Schleife einen konstanten Wert hat (zuerst 0). Mit diesem Wert wird die innere Schleife durchlaufen, also für die Werte k = 0 bis einschliesslich 10. Danach wird i auf 1 gesetzt und die innere Schleife mit diesem Wert von i erneut durchlaufen usw. Durch den Befehl delay(millisec) wartet das Programm zwischendurch diese Anzahl Millisekunden, so dass du beobachten kannst, wie das Muster entsteht. |
AUFGABEN |
|