Wiederholung mit repeat- und while-Schleife


Wiederholte Ausführung einer Folge von Anweisungen (Iteration) gehört zu den Grundstrukturen jeder Programmiersprache. repeat ist die einfachste Wiedeholstruktur. Sie wurde im TigerJython für Programmiereinsteiger eingeführt, da sie einfach zum Verwenden ist und keine Variablen braucht. Im Standard-Python und praktisch allen höheren Programmiersprachen werden while- Schleifen verwendet, die etwas kompliziertere Syntax haben, sich aber für jede Art von Wiederholaufgaben eignen.

 

  repeat-Schleife


Beispiel 1: Quadrat zeichnen
Um ein Quadrat zu zeichnen, musst man nicht viermal die Befehle forward(100) und left(90) eingeben, es genügt der Turtle zu befehlen diese zwei Anweisungen viermal zu wiederholen. Mit der Anweisung repeat 4: werden die eingerückten Zeilen (Programmblock) vier mal wiederholt.
  • Achtung: Den Doppelpunkt darf man nicht vergessen
  • Die gleiche Einrückung der Zeilen, die wiederholt werden sollen, ist wichtig. In der Regel erfolgt die Einrückung mit 4 Leerschlägen
# Tu2.py

from gturtle import *

makeTurtle()

repeat 4:
    forward(100)
    right(90)
Programmcode markieren (Ctrl+C kopieren, Ctrl+V einfügen)
 

Erklärungen zum Programmcode:

repeat 4 : Das nachfolgende Programmblock wird 4 mal wiederholt. In einigen Programmiersprachen werden Programmblöcke mit Geschweiften Klammern markiert. In Python sind diese nicht notwendig. Die Programmblöcke werden mit Einrückung festgelegt.

 

Beispiel 2: Mir repeat-Schleife Punkte zeichnen
Die Turtle bewegt sich 80 Schritte vorwärts und zeichnet einen Punkt. Danach bewegt sie sich 80 Schritte Rückwärts und dreht 60° nach links. Diese Schritte wiederholt sie 6 mal.

# Tu2a.py

from gturtle import *

makeTurtle()

repeat 6:
    forward(80)
    dot(20)
    back(80)
    left(60)
Programmcode markieren (Ctrl+C kopieren, Ctrl+V einfügen)
 


Erklärungen zum Programmcode:

back(80) : Die Turtle bewegt sich 80 Schritte rückwärts


  while-Schleife


Beispiel 3: Mit while-Schleife ein Quadrat zeichnen
Eine while-Schleife wird mit dem Schlüsselwort while, einer Schleifenbedingung und einem Doppelpunkt eingeleitet. So lange die Bedingung erfüllt ist, werden die eingerückten Zeilen wiederholt. Um die Schleifenbedingung zu definieren und die Anzahlt Wiederholungen zu zählen braucht man hier eine Variable i.

Im nachfolgenden Programm wird das gleiche Quadrat, wie im Beispiel 1 mit einer while-Schleife gezeichnet. Die Variable i hat zu Beginn den Wert i = 0 . Dieser wird bei jedem Schleifendurchlauf um 1 erhöht. Bei i = 4 wird der Programmblock nicht mehr ausgeführt.


 
# Tu2b.py

from gturtle import *

makeTurtle()

i = 0
while i < 4:
    forward(100)
    right(90)
    i = i + 1 
Programmcode markieren (Ctrl+C kopieren, Ctrl+V einfügen)

 

Erklärungen zum Programmcode:

Die Anweisung i = 0 wird auch als Startwert bezeichnet und muss vor der while-Schleife definiert werden
while i < 4 : Die Variable i nimmt die Werte 0, 1, 2 und 3 an. Die Schleife wird also 4 mal wiederholt.
In der Schleifenbedingung werden üblicherweise die Vergleichsoperatoren >, >= , < , <= , == , != verwendet. Der Doppelpunkt darf nicht fehlen
i = i + 1 Das Gleichheitszeichen hat in Computerprogrammen nicht dieselbe Bedeutung wie in der Mathematik. Es ist eine Zuweisung und nicht eine Gleichung. In Python kann man diese Werterhöhung auch mit i += 1 abkürzen

 

Beispiel 4: Treppe bis zum Rand des Turtlefensters zeichnen
Im Unterschied zu repeat, kann while-Schleife auch dann verwendet werden, wenn man die Anzahl der Wiederholungen nicht kennt. Hier zeichnet die Turtle so lange Stufen, bis sie am oberen Rand des Fensters ankommt. Das Turtlefenster ist 600 Pixel hoch. Da die Turtle in der Mitte startet, ist die Gesamthöhe der Treppe höchstens 300. Die aktuelle Höhe der Treppe y wird nach jeder Stufe um 20 grösser.

#Tu2c.py
from gturtle import *

makeTurtle()
y = 0
while y < 300:
    forward(20)
    right(90)
    forward(20)
    left(90)
    y = y + 20
hideTurtle()    
Programmcode markieren (Ctrl+C kopieren, Ctrl+V einfügen)
 


Erklärungen zum Programmcode:

while y < 300: So lange die Bedingung y < 300 stimmt, wird der eingerückte Programmblock wiederholt
y = y + 20 : y ist zu Beginn 0. Nach jeder gezeichneten Stufe wird y durch eine um 20 grössere Zahl ersetzt
hideTurtle() : versteckt die Turtle. Diese Zeile ist nicht mehr eingerückt, wird daher ausgeführt erst nach dem die Wiederholung abgeschlossen ist


  Endlose while- und repeat-Schleife


Beispiel 3: Die Turtle bewegt "endlos" auf einer Kreisbahn
Mit while True: oder repeat: (ohnen Anzahl Wiederholungen) wird ein Programmblock endlos wiederholt. Die Anweisungen werden so lange wiederholt, bis das Programm durch Klick auf den roten Stop-Button oder mit Schliessen des Turtlefensters abgebrochen wird.

 




"Endlose" while-Schleife   "Endlose" repeat-Schleife
# Tu2d.py

from gturtle import *

makeTurtle()
speed(-1)

while True:
    forward(4)
    left(3)
Programmcode markieren
 
# Tu2e.py

from gturtle import *

makeTurtle()
speed(-1)

repeat:
    forward(4)
    left(3)
Programmcode markieren

 

Erklärungen zum Programmcode:

while True: Endlose while-Schleife
repeat: Endlose repeat-Schleife

speed(-1): Die Turtle zeichnet schneller

 

 


Aufgaben: Serie 2

  Verwenden eine repeat- oder while-Schleife um folgende Figuren zu zeichnen:

1)
2)
3)
4)



5)

Verwende eine while-Schleife, um die nebenstehende Figur zu zeichnen. Die Turtle dreht nach jedem gezeichneten Element um 12° nach links, so lange bis die gesamte Drehung 360° beträgt.


6)

Verwende eine repeat- oder while-Schleife, um eine Perlenkette zu zeichnen. Die Anzahl Perlen kannst du beliebig wählen.


7)

Die Turtle bewegt sich 100 Schritte vorwärts, zeichnet einen Punkt, bewegt sich 100 Schritte rückwärts und dreht 90° nach links. Diese Anweisungen wieder holt sie "endlos".