DU LERNST HIER... |
wie du die Wiederholstrukturen mit den Keywords while und for verwendest. Es handelt sich um die wichtigsten Programmstrukturen überhaupt. Sie sind allgemeiner anwendbar ale die repeat-Schleife, die du bereits kennst. |
MUSTERBEISPIELE ZUR WHILE-SCHLEIFE |
|
MERKE DIR... |
Der Schleifenvariablen a wird zuerst ein Startwert zugewiesen. Die Bedingung nach while nennt man auch Laufbedingung, da sie wahr sein muss, damit der Block durchlaufen wird. Der Wert der Schleifenvariablen wird nach jedem Schleifendurchlauf verändert. |
ZUM SELBST LÖSEN |
1. |
|
2. | Die Turtle bewegt sich a = 10 Schritte vorwärts, zeichnet einen Punkt, bewegt sich um die gleiche Strecke zurück und dreht 10 Grad nach rechts. Dann vergrössert sie die Streckenlänge a um 10. Diese Bewegung wierderholt sie so lange die Streckenlänge a kleiner als 300 ist |
3. | Die Turtle soll wiederholt 100 Schritte vorwärts gehen und 122 Grad links drehen. Nach 30 Sekunden soll sie sich zur Ruhe setzen. Anleitung: Mit time.time() liefert dir das System die aktuelle Uhrzeit in Sekunden. Dazu musst du mit import time das Modul time importieren. Willst du ein Zeitintervall bestimmen, so musst du die Anfangszeit in einer Variablen startTime speichern und die Differenz time.time() - startTime bilden. |
MUSTERBEISPIELE ZUR FOR-SCHLEIFE |
Für Aufgaben mit ganzahligen Schleifenvariablen kann anstelle einer while-Schleife eine for-Schleife verwendet werden. Die Schleifedefinition benötigt nur eine Programmzeile.
from gturtle import * def line(x1, y1, x2, y2): setPos(x1, y1) moveTo(x2, y2) makeTurtle() hideTurtle() for i in range(31): line(10 * i, 0, 300, 10 * i) delay(100)
from gturtle import * makeTurtle() for i in range(-240, 250 , 20): setPos(i, i) dot(15) Du kannst die Aufgabe auch mit einer repeat-Schleife lösen. Allerdings musst du vorher ausrechnen, wie viele Punkte du zeichnen musst. from gturtle import * makeTurtle() i = -240 repeat 25: setPos(i, i) dot(15) i = i + 20 |
GESCHACHTELTE FOR-SCHLEIFEN |
from gturtle import * def field(x, y): setPos(x, y) startPath() repeat 4: forward(30) left(90) fillPath() makeTurtle() hideTurtle() for i in range(8): for k in range(8): if (i + k) % 2 == 0: field(30 * i, 30 * k) |
MERKE DIR... |
for i in range(20): durchläuft die Zahlen 0, 1, 2,..19.
Eine for-Schleife kann auch 2 oder 3 Parameter haben. for i in range(5, 20): durchläuft die Zahlen 5, 6, 7, 8.....19. (step = 1). for i in range(5, 20, 3): durchläuft die Zahlen 5, 8, 11, 14, 17. |
ZUM SELBST LÖSEN |
4. |
|
5. |
|
6. | Zeichne die nebenstehende Figur mit Hilfe von zwei for-Schleifen. |
While-Schleifen sind dann interessant, wenn die Anzahl Durchläufe einer Wiederholschleife nicht zum vornherein feststeht. Umgekehrt kannst du jede Aufgabe, die du mit repeat lösen kannst, auch mit einer while-Schleife lösen:
Lösung mit repeat | Lösung mit while | |
from gturtle import * makeTurtle() repeat 6: forward(80) right(60) |
from gturtle import * makeTurtle() a = 0 while a < 6: forward(80) right(60) a = a + 1 |
Anders als in der Mathematik ist a = a + 5 nicht eine Gleichung, sondern eine Zuweisung. Dem aktuellen Wert der Variablen a wird der Wert a + 5 zugewiesen.
Anstelle a = a + 5 kann kurz a += 5 geschrieben werden.
In der Informatik beginnt eine Aufzählung mittels eines Index immer mit 0, d.h. das erste Element hat den Index 0, das zweite den Index 1, usw. Dieser Unterschied zum täglichen Leben, wo man üblicherweise bei einer Zählung mit 1 beginnt.
Man merke sich: n-Elemente haben immer die Indizes 0 bis n-1.
Zeilen- und Spaltenindizes beim Zeichnen von Schachbrett