2.5 PARAMETER

 

 

EINFÜHRUNG

 

Beim Befehl forward() gibst du in Klammern an, um welche Strecke die Turtle vorwärts gehen soll. Dieser Wert in den Klammern gibt an, wie weit vorwärts gegangen wird. Er präzisiert den Befehl und heisst ein Parameter: Hier ist es eine Zahl, die bei jeder Verwendung von forward() anders sein kann. Im vorhergehenden Kapitel hast du einen eigenen Befehl quadrat() definiert. Im Unterschied zu forward() ist die Seitenlänge dieses Quadrats aber immer 100 Pixel. Dabei wäre es doch in vielen Fällen praktisch, die Seitenlänge des Quadrats anpassen zu können. Wie geht das?

PROGRAMMIERKONZEPTE: Parameter, Parameterübergabe

 

 

BEFEHLE MIT PARAMETER

 

Auch in diesem Programm definieren wir ein Quadrat. An Stelle der leeren Parameterklammer bei der Definition der Funktion square(), setzen wir den Parameternamen sidelength ein und verwenden diesen beim Aufruf von forward(sidelength).

Du kannst dadurch square mehrmals verwenden und bei jeder Verwendung eine Zahl für sidelength angeben.

Mit square(80) zeichnet die Turtle ein Quadrat mit der Seitenlänge von 80 Pixeln, mit square(50) eines mit der Seitenlänge von 50 Pixeln.
 


from gturtle import *

def square(sidelength):    
    repeat 4: 
        forward(sidelength) 
        left(90)
      
makeTurtle()
setPenColor("red")
square(80)
left(180)
setPenColor("green")
square(50)
Programmcode markieren (Ctrl+C kopieren, Ctrl+V einfügen)

 

 

MEMO

 
Parameter sind Platzhalter für Werte, die jedes Mal anders sein können. Du gibst den Parameter bei der Definition eines Befehls hinter den Befehlsnamen in einem Klammerpaar an.
def befehlsname(parameter):
    Anweisungen, die
    parameter verwenden
Der Parametername ist frei wählbar, sollte aber seine Bedeutung wiederspiegeln. Bei der Verwendung des Befehls gibst du wieder in Klammern den Wert an, den der Parameter haben soll.
befehlsname(123)
Hier wird der Parameter im ganzen Befehl durch 123 ersetzt.

 

 

MEHRERE PARAMETER

 

Befehle können mehrere Parameter besitzen. Beim Quadrat kannst du mit def square(sidelength, color) als Parameter seite und farbe wählen.

Du kannst dann square viel flexibler verwenden.Mit square(100, "red") zeichnet die Turtle ein rotes Quadrat mit der Seitenlänge von 100 Pixeln, mit square(80, "green") ein grünes mit der Seitenlänge von 80 Pixeln.

 


from gturtle import *

def square(sidelength, color):
    setPenColor(color)    
    repeat 4: 
        forward(sidelength) 
        left(90)
      
makeTurtle()
square(100, "red")
left(120)
square(80, "green")
left(120)
square(60, "violet")
Programmcode markieren (Ctrl+C kopieren, Ctrl+V einfügen)

 

 

MEMO

 
Befehle können mehrere Parameter besitzen. Diese werden in der Parameterklammer getrennt mit Komma eingegeben.
def befehlsname(parameter1, parameter2....):
   Anweisungen, die parameter1 
   und parameter2 verwenden
Die Reihenfolge der Parameter in der Parameterklammer bei der Definition des Befehls muss mit der Reihenfolge der Werte beim Aufruf des Befehls übereinstimmen.

 

 

AUFGABEN

 

1.

Definiere einen Befehl dreieck(farbe), mit welchem die Turtle farbige Dreiecke zeichnen kann. Zeichne 4 Dreiecke in den Farben red, green, blue und violet

 

 

2.

Definiere einen Befehl colorCircle(radius, color), mit welchem die Turtle einen farbigen Kreis zeichnet. Du kannst dabei den Befehl rightArc(radius, angle) verwenden. Zeichne die nebenstehende Figur.

 

 

3.


Das folgende Programm zeichnet leider 3 gleich grosse Fünfecke, aber nicht wie gewünscht verschieden grosse. Warum nicht? Korrigiere es.

from gturtle import * 

def pentagon(sidelength, color): 
   setPenColor(color) 
   repeat 5: 
      forward(90) 
      left(72)

makeTurtle() 
pentagon(100, "red") 
left(120) 
pentagon(80, "green") 
left(120) 
pentagon(60, "violet")
Programmcode markieren (Ctrl+C kopieren, Ctrl+V einfügen)

4.

Du sagst der Turtle mit dem Befehl segment(), sich um eine bestimmte Strecke s vorwärts zu bewegen und  sich um einen bestimmten Winkel w nach rechts zu drehen:

def segment(s, w):
   forward(s)
   right(w) 
              
Schreibe ein Programm, das diesen Befehl 92 mal mit s = 300 und w = 151 ausführt. Mit setPos(x, y) kannst du die Turtle zu Beginn geeignet im Fenster positionieren.

5*.

Die Turtle soll zwei, drei oder vier segment-Bewegungen ausführen. Schau dir die schönen Grafiken in folgenden Fällen an:

Anzahl Segmente
Werte
Anzahl Wiederholungen
2
forward(77)
right(140.86)
forward(310)
right(112)
37
3
forward(15.4)
right(140.86)
forward(62)
right(112)
forwad(57.2)
.right(130)
46
4
forward(31)
right(141)
forward(112)
right(87.19)
forward(115.2)
right(130)
forward(186)
right(121.43)
68