DU LERNST HIER... |
wie eine Funktion mit dem Schlüsselwort return Informationen zurückgeben kann. Auch einige Turtlebefehle sind Funktionen, die Werte zurückgeben, wie beispielsweise die Funktion getX(), welche die aktuelle x-Koordinate der Turtle zurück liefert. |
MUSTERBEISPIEL |
from gturtle import * from math import sqrt def onMousePressed(x,y): global x0, y0 x0 = x y0 = y setPos(x0, y0) dot(8) def onMouseReleased(x,y): global x1, y1 x1 = x y1 = y setPos(x1, y1) dot(8) drawHouse() def getDimension(): base = x1 - x0 height = y1 - y0 roof = base / sqrt(2) return base, height, roof def drawHouse(): b, h, r = getDimension() setPos(x0, y0) repeat 2: forward(h) right(90) forward(b) right(90) forward(h) right(45) forward(r) right(90) forward(r) n = 0 heading(0) makeTurtle(mousePressed = onMousePressed, mouseReleased = onMouseReleased) hideTurtle() n = 0 |
MERKE DIR... |
Eine Funktion kann einen oder mehrere Werte zurückgeben. Dabei ist die Reihenfolge in der return Anweisung wichtig. Genau in dieser Reihenfolge holst du die Werte mit b, h, r = getDimension() zurück. Für die Berechnung der Dachlänge nach dem Satz von Pythagoras brauchst du die Wurzel aus 2. Dazu verwendest du die Funktion sqrt() aus dem Modul math. Damit die Werte x0, y0, x1, y1 in den Calbackfunktionen onMousePressed() und onMouseReleased() geändert werden können, müssen sie als global definiert sein. |
ZUM SELBST LÖSEN |
1. |
|
||||||||||
2. |
|
Diese Vorstellung entspricht dem Begriff der Funktion y = f(x) aus der Mathematik, wo zu jedem Eingabewert (Abszisse, x-Wert) ein eindeutiger Ausgabewert y (Ordinate, y-Wert) gehört. Hier spricht man allerdings nicht von "abgeben".
In diesem Zusammenhang können auch fächerverbindende Aspekte zwischen Mathematik und Informatik gepfleg werden, wie die nachfolgende Flächenberechnung mit der Formel von Heron zeigt.
Begriffe wie
gehören zwar zu den Grundkonzepten der Informatik, werden aber in diesem Einführungslehrgang ausgeklammert.
Für die Schreibweise von algebraischen Ausdrücken ist Folgendes zu beachten:
( a / b + c | als | a / (b + c) |
Das Programm sollte noch "robust" gemacht werden, d.h. unsinnige Eingaben, die zu einem Programmabbruch führen, sollten mit einer Fehlermeldung zurückgewiesen werden, beispielsweise falls a grösser als c gewählt wird. Da if-Bedingungen noch nicht behandelt sind, wird diese Verbesserung auf später verschoben.
Eigentlich wird auch in Python nur ein Funktionswert zurückgegeben, und zwar ein Tupel. Mit der Kommaschreibweise return a, b in der Funktion f() werden a und b automatisch in ein Tupel verpackt und bei der Zuweisung x, y = f() automatisch wieder ausgepackt.