Funktionen mit Parametern
Deine Funktion baum zeichnet bisher immer genau denselben Baum. Schöner wäre es, wenn man beim Aufruf sagen könnte, wie hoch er sein soll.
Genau das leisten Parameter.
Aufgabe 1: Der Baum bekommt eine Höhe
a) Analysiere zunächst das folgende Beispiel und erläutere die Neuerungen gegenüber der letzten Lektion.
b) Modifiziere das Beispiel so, dass auch die anderen Funktionen – einschließlich deiner eigenen – jeweils einen Parameter verwenden.
- Ein Parameter ist eine Variable, die beim Aufruf einen Wert bekommt:
def baum(hoehe): - Der Wert, den du beim Aufruf einsetzt, heißt Argument:
baum(120) - Innerhalb der Funktion verwendest du den Parameter wie jede andere Variable.
- Eine Funktion kann mehrere Parameter haben. Sie werden durch Kommas getrennt:
def baum(hoehe, farbe): - Beim Aufruf zählt die Reihenfolge: Das erste Argument landet im ersten Parameter.
Tipp zu b): Was bietet sich an?
Sinnvolle Parameter wären:
haus(breite)– ein Haus in wählbarer Größe,abstand(weite)– ein wählbarer Abstand,wolke(groesse)– eine wählbare Wolkengröße.
Achte bei haus darauf, dass die schrägen Strecken mitwachsen müssen. Für die Diagonale gilt etwa breite * 1.41, für die Dachschenkel breite * 0.71.
Aufgabe 2: Mehrere Parameter
Erweitere die Funktion baum so, dass man zwei Dinge angeben kann: die Höhe des Stamms und die Farbe der Krone.
Zeichne damit eine Baumreihe aus mindestens fünf verschiedenen Bäumen.
from turtle import *
shape("turtle")
screensize(800, 400)
speed(0)
def baum(hoehe, kronenfarbe):
pensize(30)
pencolor("brown")
pendown()
forward(hoehe)
pencolor(kronenfarbe)
dot(70)
penup()
backward(hoehe)
def abstand(weite):
right(90)
forward(weite)
left(90)
# Hauptprogramm
penup()
goto(-330, -150)
left(90)
baum(60, "green")
abstand(130)
baum(120, "darkgreen")
abstand(130)
baum(90, "orange")
abstand(130)
baum(140, "green")
abstand(130)
baum(70, "red")
Aufgabe 3: Bekannte Funktionen einordnen
Ohne die Fachbegriffe zu verwenden, hast du längst Funktionen mit und ohne Parameter benutzt.
Nenne für beides jeweils mindestens drei Beispiele aus den bisherigen Lektionen.
Auflösung
Mit Parameter: forward(100), right(90), dot(20), pencolor("red"), pensize(10), goto(0, 0), print(x), range(4)
Ohne Parameter: penup(), pendown(), begin_fill(), end_fill(), home(), hideturtle()
Bei goto(0, 0) sind es sogar zwei Parameter, bei screensize(400, 300) ebenfalls.
Aufgabe 4: Ein Vieleck als Funktion
Schreibe eine Funktion vieleck(ecken, seite), die ein regelmäßiges Vieleck mit der angegebenen Eckenzahl und Seitenlänge zeichnet.
Zeichne damit anschließend ein Dreieck, ein Sechseck und ein Zwölfeck an verschiedenen Stellen.
Tipp
Den Kern kennst du schon aus Kapitel 1 – jetzt stehen statt fester Zahlen die Parameter darin:
def vieleck(ecken, seite):
winkel = 360 / ecken
for i in range(ecken):
forward(seite)
left(winkel)
from turtle import *
shape("turtle")
screensize(600, 400)
speed(0)
def vieleck(ecken, seite):
winkel = 360 / ecken
for i in range(ecken):
forward(seite)
left(winkel)
# Hauptprogramm
penup()
goto(-220, -50)
pendown()
vieleck(3, 60)
penup()
goto(-40, -50)
pendown()
vieleck(6, 50)
penup()
goto(140, -50)
pendown()
vieleck(12, 30)