Kontrollstrukturen - solange-Schleife

Beim Zeichnen der Spiralen ist es oft nicht einfach herauszufinden, wie oft die Vorwärts- und die Drehe-Anweisungen wiederholt werden sollen. Die nebenstehende Spirale hat eine Anfangslänge von 500 Einheiten. Bei jedem Schleifendurchlauf wird die Variable laenge um 5 vermindert. Da nach 100 Schleifendurchläufen laenge den Wert 0 hat, macht es dann keinen Sinn mehr weiter zu zeichnen.
Wir verwenden daher eine Solange-Schleife. Diese wird solange durchlaufen, wie eine bestimmte Bedingung erfüllt ist. Bei der abgebildenten Spirale wird die Schleife solange durchlaufen, wie laenge größer als 0 ist. In das Eingabefeld des Solange-Blocks, der im Menü Schleifen enthalten ist, muss eine Bedingung gezogen werden. Diese findet man im Menü Abfragen. Die Bedingung vergleicht zwei Werte und liefert als Ergebnis wahr, wenn die Bedingung erfüllt ist oder falsch, wenn sie nicht erfüllt ist. Beim ersten Schleifendurchlauf hat laenge den Wert 500. Die Bedingung ist also erfüllt, weil 500 größer als 0 ist. Erst, wenn laenge den Wert 0 hat, ist die Bedingung nicht mehr erfüllt und die Schleife wird beendet.
| Menü | Block | Beschreibung |
|---|---|---|
| Schleifen | ![]() |
In das Eingabefeld des Blocks muss eine Bedingung gezogen werden. Die Anweisungen innerhalb des solange-Blocks werden solange ausgeführt, wie die Bedingung erfüllt ist. Die Bedingung sollte innerhalb des solange-Blocks so verändert werden, dass die Bedingung irgendwann nicht mehr erfüllt ist. Wenn das nicht der Fall ist, wird die Schleife und damit auch das Programm niemals beendet. |
| Abfragen | ![]() |
Mit diesem Block kann ein Vergleich zwischen zwei Werten ermittelt werden. Das Ergebnis ist wahr oder falsch. In die Eingabefelder des Blocks muss entweder eine Variable, ein Block aus dem Menü Arithmetik oder die Turtle-Befehle, die Werte liefern (gibXPosition, gibYPosition, gibRichtung) gezogen werden. Als Vergleichsoperatoren können über den Abwärtspfeil =, ≠, <, ≤, > oder ≥ ausgewählt werden. |
| Abfragen | Dieser Block verneint eine Bedingung, d.h. wahr wird zu falsch und falsch wird zu wahr. | |
| Turtle-Abfragen | Liefert die aktuelle X-Position der Turtle. | |
| Turtle-Abfragen | Liefert die aktuelle Y-Position der Turtle. | |
| Turtle-Abfragen | Liefert die aktuelle Richtung der Turtle. |
Beispiele
| Programm | Bild | Erläuterung |
|---|---|---|
![]() |
![]() |
Die Turtle beginnt im Ursprung mit der Richtung 0° zu zeichnen, bei jedem Schleifendurchlauf bewegt sie sich um 5 Einheiten vorwärts und dreht sich dann um 3° nach rechts. Damit wird die Richtung bei jedem Schleifendurchlauf um 3° erhöht. Die Schleife wird solange durchlaufen, wie die Richtung kleiner als 90° ist. |
![]() |
![]() |
Die Turtle beginnt im Ursprung mit der Richtung 0° zu zeichnen. Bei diesem Beispiel wurde gegenüber Beispiel 1 lediglich, die Abbruchbedingung der Solange-Schleife geändert. Diese wird hier beendet, solange die y-Position gößer oder gleich 0 ist. Daher wird ein Halbkreis gezeichnet. Wenn der Vergleichsoperator ">" wäre, würde die Schleife nicht durchlaufen und die Turtle daher nicht zeichnen, da die Turtle zu Beginn die Position 0 hat. |
![]() |
![]() |
Dieses Programm zeichnet dasselbe Bild wie in Beispiel 2. Die Bedingung der Solange-Schleife wurde um einen Nicht-Block erweitert. Der Vergleichsoperator ≥ muss dann durch dessen Verneinung < ersetzt werden. |
![]() |
![]() |
Dies ist ein etwas komplexeres Beispiel. Das in der Schleife gezeichnete Grundmuster besteht eus einer vertikalen geraden Linie der Länge 20 und einem am Ende eingesetzten Winkel von 300 mit dem Wert der Variablen blattlaenge als Länge. Bei jedem Schleifendurchlauf wird die blattlaenge um 5 Einheiten vermindert. Die Schleife wird solange durchlaufen, wie der Wert der Variablen größer als 0 ist. |








