Skip to content

Unterprogramme

Programmieren

Durch das Definieren von Unterprogrammen (auch Funktionen genannt) und dem mehrmaligen Aufruf dieser, vermeidet man, dass Code doppelt geschrieben werden muss.

Hinweis: Analogon

Ein kleiner Schritt, den wir immer wieder machen… z.B. das Handy entsperren – das machen wir zwischendurch immer wieder und ist somit sozusagen «automatisiert»

Definition

Zeile 1
Eine Unterprogramm beginnt mit dem Schlüsselwort def (für definition)
Anschliessend folgt der Name für das Unterprogramm. Dieser kann wie bei den Variablennamen mehr oder weniger frei gewählt werden
Dann kommen die Argumente in einer runden Klammer
Die Definition wird mit einem Doppelpunkt abgeschlossen
python
def name(args, kwargs):
    do1
    do2
    ...
    return x
Zeilen 2-4
Der Inhalt des Unterprogramms
Hier ist beliebiger Code möglich
alles was zum Unterprogramm gehört, muss um eine Ebene (3 Leerzeichen oder 1 Tab) eingerückt werden
Letzte Zeile
Das Unterprogramm wird mit der return-Anweisung abgeschlossen und kann einen Wert zurückgeben

Aufruf

Ein Unterprogramm rufen wir mit dessen Namen und einer runden Klammer auf. In die runde Klammer kommen die Argumente. Wenn es keine Argumente hat, steht dort eine leere runde Klammer.

python
z = name(args, kwargs)

Der Aufruf eines Unterprogramms wird wie ein Ausdruck ausgewertet. Das Ergebnis (der Rückgabewert) kann wie bei einem Ausdruck einer Variablen zugewiesen oder direkt in einem Ausdruck weiterverwendet werden.

Argumente

args
Einem Unterprogramm können Argumente (arguments) übergeben werden. Dadurch kann ein Unterprogramm mit variablen Eingaben eine Klasse von Problemen lösen.
kwargs
Eine Spezialität von Python sind sogenannte keyword arguments. Es handelt sich um benannte Argumente. Der Vorteil: Weil sie benannt sind, können sie in beliebiger Reihenfolge stehen. Zudem können sie einen Default-Wert haben und sind dann optional.

Rückgabewerte

Das Unterprogramm kann mit dem Schlüsselwort return einen sogenannten Rückgabewert liefern. return stellt das Ende des Unterprogramms dar. Der Rückgabewert kann von einem beliebigen Datentyp sein.

Beispiel

Von Pythagoras kennen wir die Formel

a2+b2=c2

Dabei stehen a und b für die Längen der Katheten und c für die Länge der Hypotenuse eines rechtwinkligen Dreiecks:

Wir können also bei gegebenen Längen der Katheten die Hypotenuse berechnen:

python
import math

def hypotenuse(a, b):
    c = math.sqrt(a**2 + b**2)
    return c

print(hypotenuse(3,4))

Wenn wir aber die Hypotenuse und eine Kathete kennen, so müssten wir ein neues Unterprogramm schreiben.

Alternativ lässt sich aber dank den keyword arguments ein universelles Unterprogramm schreiben. Dieses liefert immer die Seitenlänge, wenn man ihm die zwei anderen Längen liefert.

python
import math

def pythagoras(a=0, b=0, c=0):
    if c==0:
        return math.sqrt(a**2 + b**2)
    elif a==0:
        return math.sqrt(c**2 - b**2)
    elif b==0:
        return math.sqrt(c**2 - a**2)
    else:
        return "Error: a, b oder c muss leer gelassen werden"

print(pythagoras(a=3,b=4))
print(pythagoras(c=5,b=4))
print(pythagoras(a=3,c=5))
print(pythagoras(a=3,b=4,c=5))

Aufgabe

Aufgabe: «Quadratische Gleichung»

Programmiere ein Unterprogramm das eine Quadratische Gleichung löst. Das Programm soll wie folgt aufgerufen werden

ax2+bx+c=0x1,2=b±b24ac2a
python
quadr(a, b, c)

Gib die Lösungen mit print aus.

Gymnasium Kirchenfeld, fts & lem