2.3 WIEDERHOLUNG

 

 

EINFÜHRUNG

 

Computer sind besonders gut darin, die gleichen Anweisungen (also auch Turtle-Befehle) immer wieder zu wiederholen. Um ein Quadrat zu zeichnen, musst du also nicht viermal die Befehle forward(100) und left(90) eingeben. Es genügt auch, der Turtle zu sagen, sie soll diese zwei Anweisungen viermal wiederholen.

Mit der Anweisung repeat sagst du der Turtle, sie soll einige Befehle eine bestimmte Anzahl Mal wiederholen. Damit der Computer weiss, dass diese Befehle zusammengehören (einen Programmblock bilden), müssen diese gleich weit eingerückt sein. Wir verwenden für Einrückungen grundsätzlich vier Leerschläge.

PROGRAMMIERKONZEPTE: Einfache Wiederholstruktur statt Codeduplikation

 

 

REPEAT - STRUKTUR

 

Um ein Quadrat zu zeichnen, muss die Turtle vier mal geradeaus gehen und sich je um 90° drehen. Würdest du das alles untereinander schreiben, dann würde das Programm ziemlich lange.

Mit der Anweisung repeat 4: sagst du der Turtle, sie soll die eingerückten Zeilen viermal wiederholen. Achtung: Vergiss den Doppelpunkt nicht!


 

from gturtle import *

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

 

 

MEMO

 
Mit repeat Anzahl: sagst du dem Computer, er soll eine oder mehrere Anweisungen »Anzahl« Mal wiederholen, bevor er weitere Anweisungen ausführt. Alles, was wiederholt werden soll, muss unter repeat stehen und eingerückt sein.
repeat anzahl:
    Anweisungen, die
    wiederholt werden
    sollen

 

 

TÖNE WIEDERHOLEN

 

Ein typisches Beispiel für eine Wiederholung ist das Dah-Dih-Dah-Dih eines Feuerwehr-Autos. Mit der Turtle kannst du eine solche Tonfolge leicht erzeugen und gleichzeitig spasseshalber die Turtle eine Zickzack-Kurve zeichnen lassen. Einen reinen Ton erzeugst du mit playTone(), wobei du die Tönhöhe als Frequenzangabe (in Hertz) und die Dauer des Tons (in Millisekunden) angibst.


 

from gturtle import *

makeTurtle()

setPos(-200, 0)
right(45)

repeat 5:
    playTone(392, 400)   
    forward(50)    
    right(90)
    playTone(523, 400)
    forward(50)  
    left(90)
Programmcode markieren (Ctrl+C kopieren, Ctrl+V einfügen)

 

 

MEMO

 

Mit setPos(x, y) kannst du die Turtle auf eine bestimmte Position im Turtlefenster setzen, ohne dass sie dabei eine Spur zeichnet. Die beiden Zahlen x und y sind die Koordinaten, wobei der Nullpunkt in der Mitte des Fensters liegt. (Der Koordinatenbereich hängt von der Grösse des Fensters ab.)

Du kannst bei playTone() die Tonhöhen auch mit einem Buchstaben gemäss der Notenskala angeben, also mit c, d, usw. oder in der eingestrichenen Oktave mit c', d', usw. (oder mit zwei oder drei Apostrophen). Du muss die Tonhöhen aber in Anführungszeichen setzen. Wenn du willst, kannst du auch noch eine Angabe des zu verwendenden Musikinstruments machen (vorhanden sind: piano, guitar, harp, trumpet, xylophone, organ, violin, panflute, bird, seashore). Versuch es mal mit

Unterer Ton: playTone("g'", 400, instrument = "trumpet")
Oberer Ton: playTone("c''", 400, instrument = "trumpet")

 

 

VERSCHACHTELTES REPEAT

 

Ein Quadrat gelingt einfach mit einer vierfachen Wiederholung. Nun sollst du 20 Quadrate zeichnen und die Quadrate etwas gegeneinander verdrehen. Dazu musst du zwei repeat-Anweisungen ineinander schachteln. Im inneren Programmblock zeichnet die Turtle ein Quadrat und dreht anschliessend um 18 Grad nach rechts. Die äussere repeat-Anweisung wiederholt dies 20 mal. Beachte dabei die korrekte Einrückung bei den Anweisungen, die wiederholt werden sollen.

Falls du die Turtle mit hideTurtle() versteckst, erfolgt das Zeichnen schneller.

 

 
from gturtle import *

makeTurtle()

# hideTurtle()
repeat 20:
    repeat 4:
        forward(80) 
        left(90)
    right(18)      
Programmcode markieren (Ctrl+C kopieren, Ctrl+V einfügen)

 

 

MEMO

 
Die repeat-Befehle lassen sich verschachteln. Eine korrekte Einrückung bei den Anweisungen, die wiederholt werden sollen, ist wichtig.

 

 

AUFGABEN


  1. Zeichne eine Treppe mit 7 Stufen.  

  2. Zeichne einen Stern. Verwende dabei den Befehl back().  

  3. Einen "richtigen" Stern kannst du mit den Drehwinkeln 140° und 80° zeichnen.  

  4. Zeichne folgende Figur mit zwei verschachtelten repeat-Anweisungen. Im inneren repeat-Block wird ein Quadrat gezeichnet.  

  5.

Zeichne eine Perlenkette, die aus 18 Perlen (dots) besteht

 

  6. Zeichne einen Vogel. Einen Bogen erhältst du, indem du die Befehle
forward(2)
right(3)
mehrmals wiederholst.