Aussehen
Funktionen
Dein Slalom-Programm enthält vermutlich vier- oder fünfmal fast dieselben Zeilen — einmal für jeden Baum. Das funktioniert, aber es ist unangenehm: Wenn du einen Fehler findest, musst du ihn an fünf Stellen reparieren, und beim vierten Mal vergisst du eine.
Programmiererinnen haben dafür einen Grundsatz: Schreib nichts zweimal. Das Mittel dagegen ist die Funktion.
python
def halbkreis():
turnLeft()
move()
turnRight()
move()
turnRight()
move()
turnLeft()def gibt einem Block Zeilen einen Namen. Ausgeführt wird dabei noch nichts — die Funktion liegt nur bereit. Erst wenn irgendwo halbkreis() steht, läuft sie ab.
Funktion
Eine Funktion fasst Anweisungen unter einem Namen zusammen. Sie wird einmal mit def beschrieben und danach beliebig oft aufgerufen. Der gute Name ist dabei kein Beiwerk: Er macht aus sieben Zeilen einen Gedanken.
Aufgabe
Dein Programm sollte danach deutlich kürzer sein als vorher.
Aufgabe
Es soll hinterher genau dasselbe tun. Der Unterschied ist nur, dass man es dann versteht.
Funktionen mit Werten
Eine Funktion, die immer haargenau dasselbe tut, hilft nur begrenzt. Richtig nützlich wird sie, wenn du ihr beim Aufruf etwas mitgibst:
python
def vieleck(ecken, laenge):
for i in range(ecken):
forward(laenge)
right(360 / ecken)
vieleck(3, 100)
vieleck(8, 40)Die Namen in den Klammern hinter def heißen Parameter. Innerhalb der Funktion sind sie ganz normale Variablen — sie bekommen ihren Wert erst beim Aufruf. Eine Funktion, zwei Aufrufe, zwei ganz verschiedene Figuren.
Aufgabe
Funktionen, die antworten
Bisher haben Funktionen etwas getan. Sie können stattdessen auch etwas ausrechnen und zurückgeben — mit return:
python
def winkel(ecken):
return 360 / eckenreturn beendet die Funktion sofort und liefert den Wert an die Stelle zurück, an der sie aufgerufen wurde. winkel(6) ist danach genauso gut eine Zahl wie 60, und du kannst damit rechnen oder sie an right() weitergeben.
Karas Sensoren sind übrigens genau solche Funktionen: onBerry() tut nichts, es antwortet — mit True oder False. Und eigene kannst du auch schreiben.
Aufgabe
Aufgabe
Schreib dabei jede Form, die mehr als einmal vorkommt, als Funktion. Am Ende soll man am Hauptteil deines Programms ablesen können, was entsteht.
Noch mehr üben
Aufgabe
Aufgabe