Wiederholungsanweisungen


Wiederholungsanweisungen mit fester Anzahl

Bei vielen Aufgaben, die mit Computern gelöst werden muss immer wieder "das Gleiche" gemacht werden. Denken wir z.B. an einen Industrieroboter, der von einem bestimmten Werkstück 1000 Stück anfertigen soll. Dabei muss er immer wieder die gleichen Tätigkeiten ausführen. Hier bietet sich als algorithmische Grundstruktur die Wiederholung mit fester Anzahl an. Die Anzahl der Wiederholungen (hier 1000) ist genau bekannt. Mit einem internen Zähler registriert der Roboter, wie viele Werkstücke er schon produziert hat. Hat dieser interne Zähler den Wert 1000 erreicht, hört die Maschine automatisch mit der Wiederholung der Anweisungen auf und setzt mit den nächsten Anweisungen fort.

Die Wiederholung mit fester Anzahl wird verwendet, wenn eine Sequenz mehrfach ausgeführt werden soll und die Anzahl der Wiederholungen bereits vorher feststeht.

for x in range(0,n):
zu wiederholende Anweisungen
...

Die Anweisungsfolge innerhalb der Wiederholungsanweisung wird dann so oft ausgeführt, wie die Zahl n vorgibt. Die Wiederholung mit fester Anzahl wird auch oft als Zählschleife bezeichnet. Beachten Sie, dass die untere Schranke (hier die 0) zum Zahlenbereich dazugehört, die obere (hier n) jedoch nicht.

Der Ausdruck Schleife stammt übrigens noch aus der Anfangszeit der elektronischen Datenverarbeitung, als Programme wie auch Daten über Lochstreifen (siehe Foto aus dem Deutschen Technikmuseum Berlin) eingelesen wurden. Musste eine Wiederholungsanweisung ausgeführt werden, so klebte man einfach die Enden des Lochstreifens zusammen, wodurch die Maschine ständig die gleichen Anweisungen ausführte.

Lochstreifen
Beispiel: Zeichnen eines Quadrates

Um ein Quadrat zu zeichnen, muss die Turtle viermal geradeaus gehen und sich jeweils um 90° nach rechts drehen. Würde man das alles untereinander schreiben, dann würde das Programm ziemlich lang werden (siehe unser Beispiel zu Sequenzen). Kürzer wird es, wenn man dem Computer sagt: Tue 4 mal -> 100 Schritte gerade ausgehen und dann 90° nach rechts drehen.

Konkret sieht die Lösung für unser Beispiel folgendermaßen aus. Achten Sie auf den Doppelpunkt sowie auf das Einrücken der Anweisungen, die im Inneren der Schleife ausgeführt werden sollen.

Erklärvideo - Wiederholungen mit fester Anzahl
Übung 1: Zeichnen eines n-Ecks

Nach Eingabe der Eckenanzahl n sowie der Seitenlänge s soll die Turtle ein regelmässiges n-Eck mit der eingegebenen Seitenlänge zeichnen. Den passenden Drehwinkel soll das Programm berechnen. Überlegen Sie sich dazu zunächst, um welchen Winkel sich die Turtle drehen muss, um die nächste Seite zu zeichnen. Denken Sie dabei an die schon von Ihnen erstellten Programme zum Zeichnen eines 6-Ecks (360° Vollwinkel / 6 = 60°). Entwickeln Sie zunächst ein Struktogramm. Verwenden Sie anschließend bei der Erstellung des Programms eine Wiederholungsanweisung mit fester Anzahl.

Zusatzaufgabe für ambitionierte ProgrammiererInnen: Ändern Sie ihr Programm zum Zeichnen des n-Ecks so ab, dass es modular aufgebaut ist. Schreiben Sie dazu ein Modul n_Eck, in welches Sie das Zeichnen der Figur auslagern.

Übung 2: Zeichnen einer Treppe
  1. Zeichnen Sie eine Treppe mit 7 Stufen. Verwenden Sie auch hier wieder eine Wiederholungsanweisung mit fester Anzahl.
  2. Ändern Sie Ihr Programm dahingehend ab, dass die Anzahl der Treppenstufen variabel ist. Die Anzahl der Stufen soll vom Nutzer eingegeben werden.
  3. Variieren Sie nun auch die Länge und die Höhe der Treppenstufen. Auch diese Werte sollen wiederum vom Nutzer eingegeben werden können.
Übung 3: Zeichnen eines einfachen Sterns
Zeichnen Sie einen einfachen Stern wie in der nebenstehenden Abbildung. Mit der Anweisung turtle.back(strecke) geht die Turtle um die angegebene Strecke zu ihrem Ausgangspunkt zurück.
Übung 4: Berechnen der Summe der ersten n natürlichen Zahlen

Diese Aufgabe besitzt einen erhöhten Schwierigkeitsgrad.

Berechnen Sie mit einem Programm die Summe der ersten n natürlichen Zahlen. Die Zahl n soll dabei variabel eingegeben werden. Beachten Sie, dass die Summe zunächst auf einen Startwert initialisiert werden muss. Die Summe soll wiederum mit einer Wiederholungsanweisung mit fester Anzahl berechnet werden. Die Summe wird somit Schritt für Schritt bis zum Endergebnis aufgebaut.
Zum Testen des Programms können Sie z.B. die Summe der ersten 100 natürlichen Zahlen berechnen. Das Ergebnis ist 5050. Zu dieser Aufgabe gibt es übrigens eine berühmte Anekdote.

Geschachtelte Wiederholungsanweisungen

Wiederholungsanweisungen mit fester Anzahl lassen sich auch verschachteln. Dabei läuft die innere Schleife vollständig innerhalb der äußeren Schleife ab. Wichtig ist dabei auf eine korrekte Einrückung der jeweiligen Sequenzen zu achten.

Übung 1: Zeichnen eines Vogels

Zeichnen Sie einen Vogel wie in der nebenstehenden Abbildung. Einen Bogen erhalten Sie, indem Sie die Anweisungen
turtle.forward(2)
turtle.right(3)
mehrfach wiederholen.

Verwenden Sie eine zweite Zählschleife für die Anzahl der Bögen. Achten Sie darauf, dass die innere Schleife (Zeichnen eines Bogens) komplett innerhalb der äußeren Schleife (Anzahl der Bögen) verläuft.

Wiederholungen mit Bedingungen

Die Zählschleife stellt einen Sonderfall der Wiederholungsanweisungen dar. Sie ist nur dann einsetzbar, wenn die Anzahl der Wiederholungen schon vor dem Starten des Programms ganz genau bekannt ist. Das ist jedoch oft nicht der Fall. Meist ist die Anzahl der Wiederholungen nicht vor dem Progammstart bekannt, sondern sie ergibt sich erst während der Abarbeitung des Programms. Dann muss die nochmalige Wiederholung der Anweisungen an eine Bedingung geknüpft werden. Vor dem Wiederholen der Anweisungen im Inneren der Schleife wird jeweils immer erst die Gültigkeit der Bedingung überprüft. Solange die Bedingung wahr ist, werden Anweisungen noch einmal wiederholt. Wenn die Bedingung nicht mehr zutrifft, wird die Wiederholung abgebrochen.

Die Wiederholungsanweisung mit zu überprüfender Bedingung stellt somit den allgemeinen Fall einer Schleife dar. Sie ist universell einsetzbar und nicht nur dann, wenn die Anzahl der Wiederholungen bekannt ist.

Die Wiederholung mit Bedingung wird verwendet, wenn eine Sequenz mehrfach ausgeführt werden soll. Die Überprüfung der Bedingung muss wahr ergeben, damit die Anweisungen wiederholt werden. Im Unterschied zur Zählschleife muss hier eine Zählvariable eingeführt werden. Sie wird zunächst auf einen Startwert gesetzt (initialisiert) und dann nach jedem Schleifendurchlauf verändert.

zaehlvariable initialisieren
while bedingung:
zu wiederholende Anweisungen
zaehlvariable verändern
...

Achten Sie auch hier wieder auf das Einrücken der Anweisungen, die im Inneren der Schleife (Schleifenkörper) ausgeführt werden sollen.

Beispiel: gedrehte Quadrate

Die Turtle soll 12 Quadrate zeichnen, wobei jedes nachfolgende Quadrat gegenüber seinem Vorgänger um 30° weiter nach rechts gedreht sein soll (siehe Abbildung). Dazu wird zunächst eine Funktion Quadrat zum Zeichnen eines einzelnen Quadrats definiert. Das Zeichnen der 12 Quadrate wird mit einer Wiederholungsanweisung mit Bedingung realisiert. Mit einer Variable anzahl wird die Anzahl der gezeichneten Quadrate mitgezählt. Dazu muss diese Variable vor dem Zeichnen des ersten Quadrates zunächst mit dem Wert 0 initialisiert werden. Vor dem Zeichnen eines Quadrates muss überprüft werden, ob die maximale Anzahl der zu zeichnenden Quadrate schon erreicht wurde. Nach jedem gezeichneten Quadrat dreht sich die Turtle um 30° weiter nach rechts und abschließend wird die Zählvariable um den Wert 1 hochgezählt.

Entwickeln Sie zunächst ein Struktogramm für den zu erstellenden Algorithmus und programmieren Sie anschließend das Vorgehen der Turtle.

Erklärvideo - Wiederholungen mit Bedingungen
Übung 1: rechteckige Spirale

Mit Hilfe einer while-Schleife soll die Turtle eine rechteckige Spirale zeichnen. Dazu verwenden wir eine Variable a, die den Startwert 5 erhält und bei jedem Schleifendurchlauf um 2 vergrössert wird. Nach jedem Schritt dreht sich die Turtle nach rechts um 90°. Solange die Bedingung a < 200 wahr ist, werden die Anweisungen im Schleifenkörper ausgeführt.

Hinweis: Mit der Anweisung turtle.speed() kann die Geschwindigkeit des Zeichnens mit der Turtle verändert werden. Die Geschwindigkeit in der Klammer kann zwischen 0 und 10 variiert werden. So zeichnet z.B. mit der Anweisung turtle.speed(10) die Turtle die Spirale wesentlich schneller.

Übung 2: noch eine Spirale
  1. Die Turtle bewegt sich um eine Strecke 5 vorwärts, dreht sich um 70° nach rechts und vergrössert die Streckenlänge um 0.5. Diese Schritte wiederholt sie, solange die Streckenlänge kleiner als 150 ist.
  2. Verwenden Sie anschließend statt 70° einen Drehwinkel von 89°.
Übung 3: noch ein Stern
Zeichnen Sie einen Stern wie in der nebenstehenden Abbildung. Eine Zacke erhalten Sie, indem Sie die Drehwinkel 140° und 80° verwenden. Verwenden Sie für Ihr Programm eine Wiederholungsanweisung mit Bedingung.
Übung 4: Der schlaue Hufschmied

Diese Aufgabe besitzt einen erhöhten Schwierigkeitsgrad.

Ein Hufschmied beschlägt ein Pferd mit vier Hufeisen zu je sechs Nägeln. Als es ans Bezahlen geht, fragt er den Reiter: "Wie willst du bezahlen? Entweder den Pauschalpreis von 200 Euro oder für den ersten Nagel 1 Cent, für den zweiten Nagel 2 Cent, für den dritten Nagel 4 Cent und so fort?" Der Reiter neigt zum Bezahlen mit den Cent. Seine Tochter jedoch hat ein Notebook dabei und bittet um 10 Minuten Geduld. Wie muss sie den Computer programmieren und welchen Rat gibt sie dem Reitersmann?

Hinweise:


zuletzt geändert am:
Eine Seite von Mirko Hans