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: Eine Häuserzeile nachbauen
Das Hauptprogramm unten ist schon fertig. Es ruft haus(60), haus(100) und haus(140) auf – aber die Funktion haus kennt noch keinen Parameter.
Ändere nur die Funktion haus so, dass dein Bild mit dem Zielbild übereinstimmt.
So arbeitest du mit dem Zielbild. Nach jedem fehlerfreien Lauf vergleicht die Zeichenfläche dein Bild mit dem Zielbild:
- Links von der Trennlinie siehst du dein Bild, rechts das Ziel. Die Trennlinie kannst du verschieben.
- Überlagern legt das Ziel halb durchsichtig über dein Bild, Unterschiede markiert, wo es noch nicht passt.
- Die Prozentzahl zeigt, wie gut dein Bild passt. Ab 95 % ist die Aufgabe gelöst, und das Bild bekommt einen grünen Rahmen.
Tipp 1: Was bedeutet die Fehlermeldung?
Solange haus keinen Parameter hat, meldet Python beim Aufruf haus(60), dass die Funktion kein Argument erwartet. Ergänze im Kopf der Funktion einen Parameter: def haus(breite):
Tipp 2: Welche Zahlen müssen weg?
Jede 100 im Rumpf ist eine Seite des Hauses und wird zu breite. Die schrägen Strecken müssen mitwachsen: Aus 141 wird breite * 1.41, aus 71 wird breite * 0.71.
Aufgabe 3: 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.
Aufgabe 4: 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 5: 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 so wie im Zielbild drei Vielecke nebeneinander:
| Vieleck | Startpunkt | Seitenlänge |
|---|---|---|
| Dreieck | (-220, -50) |
60 |
| Sechseck | (-40, -50) |
50 |
| Zwölfeck | (140, -50) |
30 |
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)