i

Routinen mit Rückgabewerten (Funktionen)

Bislang haben wir uns Routinen erstellt, die bestimmte komplizierte Abläufe durchführen, z.B. ein Namensschild zeichnen und die dann einen eigenen Namen haben. Manchmal werden solche Routinen, die einfach etwas tun, auch als Prozeduren bezeichnet.

Daneben kann es auch sinnvoll sein, Routinen zu erstellen, die (mehr oder weniger) komplizierte Berechnungen anstellen und einen eigenen Namen haben. Diese Routinen tun nicht einfach nur etwas, sondern müssen den Wert der Berechnung zurückgeben. Das tut sie, indem sie sich letztlich ähnlich wie eine Variable verhält, die ja auch einen Variablen-Wert hat. Eine solche Routine wird als Funktion bezeichnet, den Wert, den sie zurückliefert, als Funktionswert.

Eine in Python bereits eingebaute Funktion hast Du schon kennen gelernt, nämlich die Funktion len(...). Sie hat die Anzahl der Zeichen in einer Zeichenkette berechnet, die zwischen den Klammern eingegeben war.

In unserem Namensschild-Beispiel haben wir eine schon gar nicht mehr so einfache Berechnung, nämlich die Berechnung der Breite eines Textes. Diese musste zunächst die Anzahl der Zeichen bestimmen und dann aus dieser Anzahl der Zeichen die tatsächliche Breite auf der Schildkröten-Zeichenfläche.

Im folgenden Programm wird diese Berechnung in eine selbstgemachte Funktion mit einem eigenen Namen gepackt, nämlich berechnebreite(...). In die Klammern hinter dem Namen wird der Text eingesetzt. Die Funktion liefert einen Wert zurück, der in dem Programm dann der (globalen) Variable breite zugwiesen wird.

In der Funktion berechnebreite(...) findet sich in der letzten Zeile der Befehl return gefolgt von einer mathematischen Formel. Diese Zeile sagt, welchen Wert die Funktion nach dem Ausführen zurückliefern soll. Es ist genau der Wert, den die mathematische Formel annimmt. In unserem Beispiel ist das gerade der Wert 30 zuzüglich dem 18-Fachen der Anzahl der Buchstaben.

Für den Anfang empfiehlt es sich, tatsächlich nur einen einzigen return-Befehl pro Funktion zu verwenden; mehrere davon können leicht zur Verwirrung führen.

Aufgabe 1: Werte zu Testzwecken ausgeben

Erweitere die Funktion berechnebreite(...) so, dass zu Testzwecken sowohl die Anzahl der Buchstaben als auch die berechnete Breite mit print ausgegeben werden.

Aufgabe 2: Funktionen in Informatik und Mathematik

Vielleicht hast du bei dem Namen "Funktion" direkt an den Mathematik-Unterricht gedacht, wo man ja auch den Begriff "Funktion" kennt. Im Mathematik-Unterricht funktionieren Funktionen aber in der Regel nur mit Zahlen (und nicht etwa mit Zeichenketten).

(Bemerkung: Im Mathematikunterricht heißen Funktionen meistens "f", "g", "h" usw. In der Informatik verwendet man meistens längere Namen, aber das ist ein bisschen eine Frage der "Kultur" in der jeweiligen Wissenschaft.)

Solche rein mathematischen Funktionen kann man in Python natürlich auch konstruieren. Angenommen, es gibt die mathematische Funktion \begin{equation} f(x)=3 \cdot x + 5 \end{equation} Erstelle eine Funktion f(x) in Python. Entwirf ein Programm, bei der man den x-Wert eingeben kann und der y-Wert mit print(...) ausgegeben wird.

Aufgabe 3: Breite bei verschiedenen Schriftgrößen

Die Funktion berechnebreite(text) in unserem Namensschild-Beispiel hatte einen einzigen Parameter, nämlich den Text, dessen Breite berechnet werden sollte. Während (zumindest in der Mittelstufe) Funktionen im Mathematikunterricht nur einen Funktionsparameter haben, können Funktionen in der Informatik mehrere Funktionsparameter haben.

Zum Beispiel hängt die Breite eines Textes natürlich nicht nur von der Länge des Textes ab, sondern auch von der Schriftgröße. Erweitere die Funktion berechnebreite, dass sie zwei Parameter hat, nämlich berechnebreite(text,schriftgroesse). Passe die Berechnung in der Funktion an.

Teste diese angepasste Funktion in einem Programm, bei dem der Benutzer die Schriftgröße eingeben kann.

Exkurs: Rückgabe mehrerer Werte

In einem Abschnitt weiter vorne haben wir das folgende Programm betrachtet, das jedoch wegen des Sicherheitsmechanismus nicht funktionierte, der verhindert, dass Routinen globale Variablen ändern.

Bei einem einzelnen Wert haben wir schon gesehen, wie eine Funktion diesen an das Hauptprogramm zurückgeben kann. Mit einem Trick kann man aber auch mehrere Werte gleichzeitig übergeben. Hierfür gibt man quasi ein "Päckchen" mit mehreren Werten zurück, in unserem Fall die vier eingelesenen Werte x1, y1, x2, y2.

Suche

v
100.102.3.4
inf-schule.de/entwuerfe/python_online/eigene_befehle/funktionen_mit_rueckgabe
inf-schule.de/100.102.3.4
inf-schule.de/@/page/bFSUj4XbBzcJTTC7

Rückmeldung geben