Verschachtelte Schleifen
Bisher hast du gesehen, dass es mit Hilfe von Schleifen möglich ist, bestimmte Befehlsfolgen mehrfach ausführen zu lassen. In einer solchen Befehlsfolge kann sogar selbst wiederum eine Schleife enthalten sein.
Ein typisches Beispiel von zwei ineinander verschachtelten Schleifen lässt die Schildkröte ein zweidimensionales Punktraster zeichnen.
Es gibt eine äußere Schleife for i ...
und eine innere
Schleife for j ...
, wobei die äußere Schleife die innere
Schleife enthält, sowie eine große Schachtel eine kleinere Schachtel
enthalten kann.
In der äußeren Schleife wird die Variable i
von 1 bis 9 hochgezählt. Für jeden
Wert von i
werden 4 Punkte übereinander gezeichnet. Das
übernimmt die innere Schleife mit Variable j
, innerhalb
derer die Schildkröte zum richtigen Ort bewegt und der Punkt
gezeichnet wird. Die Koordinaten des richtigen Ortes werden aus den
Variablen i
und j
berechnet.
Abhängigkeiten der inneren von der äußeren Schleife
Im obigen Beispiel ist das Verhalten der inneren Schleife praktisch bei
jedem Durchlauf der äußeren das gleiche — wenn man einmal von
den unterschiedlichen Koordinaten im Befehl
goto(i*20,j*20)
absieht. Jedes Mal zeichnet die innere
Schleife 5 Punkte.
Beim folgenden Programm hängt die Anzahl der Durchläufe der inneren
Schleife — und damit die Anzahl der gezeichneten Punkte in der
jeweiligen Spalte — vom Wert der Variablen i
ab,
Aufgabe 1: Ausgabe mit print
print(i,j)
jeweils vor goto(...)
ein. Interpretiere die Ergebnisse.
Aufgabe 2: Routine statt Verschachtelung
Andreas mag Programme mit verschachtelten Schleifen nicht; er begründet:
"Die innere Schleife tut ja in der Regel etwas Bestimmtes, dann kann man die Schleife auch in eine Routine auslagern und ihr einen Namen geben, der dem Leser sagt, was die innere Schleife tut. In der äußeren Schleife ruft man dann einfach die Routine auf."
Ändere die beiden Programme oben so ab, dass jeweils die innere Schleife in eine Routine ausgelagert wird. Beschreibe auch, worin sich die beiden Routinen (außer der Befehlsfolge) unterscheiden.
Aufgabe 3: Namensschildern über- und nebeneinander
Aufgabe 4: Variables Raster von Namensschildern
Das Programm aus dre letzten Aufgabe könnte bei langen Namen wie "Klaus Günther Karl Georg" Probleme machen, weil keine drei Namensschilder nebeneinander passen.
Umgekehrt dürfte es beim Namen "Max" ruhig auch mehr Namensschilder nebeneinander geben.
Passe dein Programm so an, dass es die Anzahl der Spalten sinnvoll von der Länge des Namens abhängt.