10.3.3 Wiederholungsschleife


Bei manchen Vorgängen wird eine Anweisung eine bestimmte Anzahl oft wiederholt.

Beispiel: Schraube anziehen

Damit die Schraube fest sitzt, muss Sie genau 6 Mal eine halbe Umdrehung im Uhrzeigersinn gedreht werden:

  • Drehe den Schraubenzieher eine halbe Umdrehung im Uhrzeigersinn
  • Drehe den Schraubenzieher eine halbe Umdrehung im Uhrzeigersinn
  • Drehe den Schraubenzieher eine halbe Umdrehung im Uhrzeigersinn
  • Drehe den Schraubenzieher eine halbe Umdrehung im Uhrzeigersinn
  • Drehe den Schraubenzieher eine halbe Umdrehung im Uhrzeigersinn
  • Drehe den Schraubenzieher eine halbe Umdrehung im Uhrzeigersinn

Diese Art der Anweisungs-Sequenz ist unübersichtlich. Eleganter kann man die Sequenz mit Hilfe einer Wiederholungs-Schleife zusammenfassen:

  • Wiederhole folgende Anweisung 6 Mal:
    • Drehe den Schraubenzieher eine halbe Umdrehung im Uhrzeigersinn

In der Programmierung gibt es dafür einen Wiederholungs-Block, mit welchem man festlegen kann, wie oft eine Anweisung wiederholt werden soll.

Beispielsweise wird mit den folgenden beiden Blöcken festgelegt, dass die Anweisung "Bewege dich um 100 Pixel" vorwärts, genau 4 mal wiederholt wird:

Neben einfachen Anweisungen können auch Sequenzen oder Wiederholungsschleifen in einer Wiederholungsschleife wiederholt werden.

Beispiel: 5 Pfannkuchen ausbacken

  • Rühre nach einem Rezept den Pfannkuchenteig zusammen
  • Nimm eine Pfanne und erhitze diese auf Stufe 6
  • Schütte etwas Backfett in die Pfanne
  • Gib eine Kelle Teig in die Pfanne
  • Wende den Pfannkuchen, wenn der Teig durchgebacken ist
  • Nimm nach 2 min den Pfannkuchen aus der Pfanne
  • Schütte etwas Backfett in die Pfanne
  • Gib eine Kelle Teig in die Pfanne
  • Wende den Pfannkuchen, wenn der Teig durchgebacken ist
  • Nimm nach 2 min den Pfannkuchen aus der Pfanne
  • Schütte etwas Backfett in die Pfanne
  • Gib eine Kelle Teig in die Pfanne
  • Wende den Pfannkuchen, wenn der Teig durchgebacken ist
  • Nimm nach 2 min den Pfannkuchen aus der Pfanne
  • ...

Das ist unübersichtlich. Eleganter kann man es mit Hilfe einer Wiederholungs-Schleife formulieren:

  • Rühre nach einem Rezept den Pfannkuchenteig zusammen
  • Nimm eine Pfanne und erhitze diese auf Stufe 6
  • Wiederhole folgende Anweisungen 5 Mal:
    • Schütte etwas Backfett in die Pfanne
    • Gib eine Kelle Teig in die Pfanne
    • Wende den Pfannkuchen, wenn der Teig durchgebacken ist
    • Nimm nach 2 min den Pfannkuchen aus der Pfanne

Eine Schleife ist ein Block, der weitere Blöcke enthält, die wiederholt ausgeführt werden. Beispiel:

Wenn man mehrere gleiche Objekte zeichnen möchte, kann man zusammengesetzte Blöcke mehrfach hintereinander ausführen lassen. Dazu baut man eine geschachtelte Schleife, so dass eine Wiederholungs-Schleife in eine Wiederholungs-Schleife eingebaut wird:

Auf diese Weise wurden 4 gleiche Quadrate, anstelle nur eines Quadrats gezeichnet.

Löse die Level 3-5.

In einem neuen Fenster starten: Labyrinth

Eine Wiederholungsschleife in welcher eine Wiederholungsschleife enthalten ist, nennt man eine geschachtelte Wiederholungsschleife.

Löse die Level 1-9.

In einem neuen Fenster starten: Schildkröte


Variablen in Wiederholungsschleifen

Eine Wiederholungsschleife ist ein Block, in welchen andere Blöcke eingesetzt und dann wiederholt ausgeführt werden.

Mit Hilfe einer Wiederholungsschleife kann der Wert einer Variablen mehrfach verändert werden. Es gibt einfache Wiederholungsschleifen, Wiederholungsschleifen mit Abbruchbedingung und Wiederholungsschleifen mit einer Zählvariable:


Einfache Wiederholungsschleife
  • Öffne folgenden Link: Blockly-Trace-Editor

  • Stelle folgendes Programm zusammen, mit welchem eine Variable schrittweise von 0 bis 5 erhöht wird und führe den Algorithmus schrittweise aus, indem du wiederholt auf die Schaltfläche 'Schrittweise' klickst.

In diesem Algorithmus gibt es viele gleiche Anweisungen. Um Schreibarbeit zu sparen können diese gleichen Anweisungen mit Hilfe einer Wiederholungsschleife wesentlich kürzer notiert werden.

  • Stelle folgendes Programm zusammen und führe den Algorithmus schrittweise aus. Den Wiederholungsblock findest du in 'Schleifen'.

Bei der schrittweisen Ausführung des Algorithmus kann man beobachten, dass die gleiche Trace-Tabelle erzeugt wird. Die Anweisungen, welche im Block 'wiederhole 5 mal:' stehen, werden 5 mal ausgeführt.

Mit Hilfe einer Wiederholungsschleife kann in einem Algorithmus viel Schreibarbeit gespart werden.

  • Stelle folgendes Programm zusammen.
    • Den Wiederholungsblock findet man in 'Schleifen'.
    • Den Block 'erstelle Text aus' findet man in 'Text'.

Hinweis: Wenn man einer Variablen die Variable selbst und weitere Werte zuordnet, dann wird der alte Inhalt der Variable genommen und zusammen mit dem neuen Inhalt in der Variable als neuer Wert gespeichert.

Der große Vorteil einer Wiederholungsschleife wird klar, wenn man sehr viele Wiederholungen ausführen lässt und damit eine Unmenge an Tipparbeit ersetzt.

  • Stelle folgendes Programm zusammen und ersetze die Zahl im Block 'wiederhole x mal:' mit sehr großen Zahlen.

  • Klicke auf die Schaltfläche 'Füllen', damit die Trace-Tabelle automatisch ausgefüllt wird.

So kann man auch Lachwörter mit tausenden von 'hi' erzeugen, ohne dass man diese einzeln eintippen müsste.

Hinweis: Bei ungemein sehr großen Zahlen reagiert das Programm eine lange Zeit nicht mehr, da das Bauen des Lachwortes dann doch sehr lange dauert.

Baut man eine Wiederholungsschleife mit zu vielen Wiederholungen, kann der Algorithmus scheinbar stehen bleiben oder das ganze Programm kann abstürzen. In einem solchen Fall kann man den Tabulator mit dem Block-Editor schließen und dann wieder neu starten.

Wichtig: Bevor man ein solches Programm testet, sollte man das Programm speichern, denn wenn man den Tabulator schließt geht das zusammengestellte Programm verloren.


Wiederholungsschleifen mit Zählvariable
  • Öffne folgenden Link: Blockly-Trace-Editor

  • Stelle folgendes Programm zusammen. Den Block 'für i=0 bis i<10 in Schritten von 1' findet man unter 'Schleifen'.

In dieser Wiederholungsschleife wird automatisch eine Zählvariable angelegt, deren Wert bei jedem Durchlauf geändert wird.

  • Stelle folgendes Programm zusammen.

Der Startwert und der Endwert der Zählvariable kann frei festgelegt werden, genauso die Schrittweite.

Die Zählvariable kann genutzt werden, während der Algorithmus die Wiederholungsschleife durchläuft. Im folgenden Beispiel werden die ersten 20 Zweierpotenzen ausgerechnet.

  • Stelle folgendes Programm zusammen.

Der Startwert und der Endwert der Zählvariable kann frei festgelegt werden, genauso die Schrittweite.

  • Stelle einen Algorithmus zusammen, bei welchem in der Tracetabelle die Summe aller aufeinanderfolgenden Zahlen von 1 bis zu einem gegebenen Wert ausgegeben wird:

Beispiel:

Der gegebene Wert ist 5. Also ist die Summe aller aufeinanderfolgenden Zahlen 1 + 2 + 3 + 4 + 5 = 15.


Wiederholungsschleifen mit Abbruchbedingung

In einer Wiederholungsschleife mit einer Abbruchbedingung steuert man die Schleife mit Hilfe einer logischen Bedingung.

Beispiel:

Eine Schleife soll eine Variable 'zahl1' beginnend bei 20 solange um 2 verkleinern, bis die Zahl kleiner als 5 geworden ist.

Man zieht also von der Variablen 'zahl1' die Zahl 2 ab und prüft bei jedem Durchlauf durch die Wiederholungsschleife, ob es immer noch wahr ist, dass 'zahl1' > 5. Wenn die Bedingung nicht mehr erfüllt ist, soll der Algorithmus beendet werden.

  • Öffne folgenden Link: Blockly-Trace-Editor

  • Stelle folgendes Programm zusammen und führe es Schritt für Schritt aus.

Die Abbruchbedingung kann auch so gewählt werden, dass geprüft wird, ob eine bestimmte Bedingung erreicht wurde. Das letzte Beispiel kann also umgeschrieben werden:

Beispiel: Eine Schleife soll eine Variable 'zahl1' beginnend bei 20 solange um 2 verkleinern, bis die Zahl kleiner als 5 geworden ist.

Man zieht also von der Variablen 'zahl1' die Zahl 2 ab und prüft bei jedem Durchlauf durch die Wiederholungsschleife, ob 'zahl1' < 5 ist. Wenn diese Bedingung erfüllt ist, soll der Algorithmus beendet werden.

  • Ändere das Programm und führe es Schritt für Schritt aus.

  • Klicke dazu im Block 'wiederhole solange' auf 'solange' und wähle 'bis' aus.

Trotz der geänderten Steuerungslogik der Wiederholungsschleife hat sich die Trace-Tabelle nicht geändert.

Stelle einen Algorithmus zusammen:

  • Der Variablen 'zahl1' soll ein zufälliger Wert zwischen 0 und 1 zugeordnet werden (den Block 'Zufallszahl (0.0 bis 1.0)' findet man unter 'Mathematik').

  • Der Zufallswert soll in der Trace-Tabelle angezeigt werden.

  • Der Algorithmus soll abbrechen, sobald der Zufallswert größer als 0.8 ist.