Informatik · Klasse 7–10 · aktualisiert
Funktionen programmieren: Aufbau und Anwendung
Du lernst, wie man Funktionen in Python definiert und aufruft, was Parameter und return tun und was es heißt, eine Funktion als Wert zu übergeben.
0 von 11 Aufgaben gelöst
Kurz gesagt
Eine Funktion ist ein benannter Teil eines Programms, den du mit einem Aufruf benutzt. Sie kann Parameter bekommen und gibt mit return einen Wert zurück, den du direkt weiterverwenden kannst. Ausgaben und Nebeneffekte sind etwas anderes als dieser Rückgabewert.
Stell dir vor, du müsstest denselben Programmteil zehnmal abtippen. Mit einer Funktion schreibst du ihn nur einmal und rufst ihn danach so oft auf, wie du willst. Das spart Zeit und macht dein Programm übersichtlicher. Hier lernst du, wie Funktionen aufgebaut sind und was sie leisten.
Deine Lernziele
Hake ab, was du schon kannst. Löst du alle Aufgaben eines Abschnitts, hakt Mela das Ziel für dich ab.
5 Abschnitte
Eine Funktion ist ein Teil eines Programms, den du mit einem Namen ansprechen kannst. In Python beginnt die Definition mit dem Schlüsselwort def. Danach folgt der Funktionsname. Die Anweisungen der Funktion stehen darunter als Block. Python erkennt den Block an der Einrückung, nicht an geschweiften Klammern.
Die Definition legt also fest, was die Funktion tut. Ausgeführt wird sie durch einen Aufruf. Dafür schreibst du den Namen mit Klammern, zum Beispiel HalloWelt(). Danach geht es im Programm an der Stelle weiter, an der du aufgerufen hast. Du kannst dieselbe Funktion mehrmals aufrufen.
Definition
Aufruf
Ein Aufruf führt eine Funktion aus. Danach springt das Programm wieder an die aufrufende Stelle zurück.
Beispiel: HalloWelt definieren und zweimal aufrufen
- 1def HalloWelt():
- 2 print("Hallo, Welt!")
- 3HalloWelt()
- 4HalloWelt()
- 5Die ersten zwei Zeilen sind die Definition.
- 6Die letzten zwei Zeilen sind zwei Aufrufe. Der Text „Hallo, Welt!“ erscheint deshalb zweimal.
Teste dich
Schau dir die Funktion summe im Beispiel an. Ihr Name steht hinter def: summe. Danach folgen in Klammern die Parameter a, b und c. Parameter sind Variablen, durch die man eine Funktion auf bestimmte Werte „einstellen“ kann. Der Rückgabewert wird mit der Anweisung return bestimmt. Hier ist es der Wert der Variablen wert.
Beim Aufruf summe(1, 7, 3) gibst du die Werte 1, 7 und 3 mit. Diese Werte heißen Argumente oder tatsächliche Parameter. Die Parameter a, b und c in der Definition heißen formale Parameter. Der Aufruf liefert 1 + 7 + 3 = 11 zurück.
Die Vorbedingung legt fest, unter welchen Voraussetzungen das Verhalten einer Funktion definiert ist. Ein Beispiel: Die Funktion ringarea berechnet die Fläche zwischen zwei Kreisen mit gemeinsamem Mittelpunkt. Ihre Radien heißen r1 und r2. Dabei wird vorausgesetzt, dass r1 größer oder gleich r2 ist. Wenn die Vorbedingung gilt, müssen nach der Ausführung alle Nachbedingungen erfüllt sein. Das sind Bedingungen, die nach der Ausführung gelten müssen. Sonst ist das Programm nicht korrekt.
Beispiel: Die Funktion summe
- 1def summe(a, b, c):
- 2 wert = a + b + c
- 3 return wert
- 4print(summe(1, 7, 3))
- 5Die Ausgabe ist 11.
| Teil | Bei summe | Bedeutung |
|---|---|---|
| Name | summe | steht hinter def |
| Parameter | a, b, c | Variablen in der Definition |
| Rückgabewert | wert | wird mit return bestimmt |
| Argumente | 1, 7, 3 | Werte beim Aufruf |
Definition
Vorbedingung
Die Vorbedingung gibt an, unter welchen Voraussetzungen das Verhalten der Funktion definiert ist.
Teste dich
Ein Unterprogramm ist ein Teil eines Programms, der eine bestimmte Funktionalität bereitstellt. Andere Programmteile können es aufrufen. Funktionen sind solche Teile.
Die beiden wichtigsten Vorteile sind die Wiederverwendbarkeit von Programmteilen und die bessere Verständlichkeit und Wartbarkeit des Programmtexts. Wiederverwendbar heißt: Du schreibst einen Teil einmal und rufst ihn an mehreren Stellen auf, so wie HalloWelt() zweimal. Verständlicher heißt: Funktionen gliedern den Programmtext und gestalten den Code übersichtlich. Wartbar heißt: Man kann den Programmtext leichter pflegen.
Funktionen ersparen dem Programmierer außerdem wertvolle Entwicklungszeit. Sie helfen auch dabei, im Team gemeinsam an Aufgaben zu arbeiten.
Definition
Unterprogramm
Ein Unterprogramm ist ein Teil eines Programms, der in der Regel einen Namen hat. Es kann aufgerufen werden, um eine Aufgabe zu übernehmen.
Merke: Mit Funktionen wird ein Programm in wiederverwendbare Teile gegliedert. Dadurch wird es verständlicher und leichter wartbar.
Teste dich
Rückgabewert: Eine Funktion gibt einen Wert zurück, den man direkt verwenden kann, zum Beispiel in einer Rechnung. Das unterscheidet sie von einer Prozedur, also einem Unterprogramm ohne Rückgabewert. Der Rückgabewert wird mit return bestimmt.
Ausgabe: Die Funktion hello(message) gibt mit print den Text auf dem Bildschirm aus, liefert aber keinen Wert zurück. In Programmiersprachen wie Python oder Java wird trotzdem jedes Unterprogramm Funktion genannt. In anderen Sprachen wie Pascal oder BASIC heißen nur die Unterprogramme so, die einen Wert zurückliefern.
Nebeneffekt: Eine globale Variable ist eine Variable, die außerhalb der Funktion festgelegt wurde. Ändert eine Funktion eine solche Variable, wird das häufig Nebeneffekt genannt. Manchmal sagt man auch Seiteneffekt. Hat eine Funktion in Python eine lokale Variable mit dem gleichen Namen wie eine äußere Variable, bleibt die äußere Variable unberührt. Möchte man es anders haben, muss man mit dem Schlüsselwort global den Zugriff auf die äußere Variable ausdrücklich anfordern. Zugriffe auf globale Variablen vermindern die Lesbarkeit des Codes.
Zur Einordnung: Zu den Funktionen mit unspezifizierten Wirkungen gehören in der Regel alle, die mit der Ein- oder Ausgabe von Daten zu tun haben. Solche Wirkungen liegen außerhalb der Betrachtung des Systems. Dazu kann je nach Definition auch die Bildschirmausgabe gehören. Wirkungsfrei sind in Hochsprachen etwa mathematische Funktionen wie Sinus, Kosinus oder Quadratwurzel.
| Begriff | Was passiert? | Beispiel |
|---|---|---|
| Rückgabewert | Die Funktion liefert einen Wert, der direkt verwendbar ist | summe(1, 7, 3) liefert 11 |
| Ausgabe | Text erscheint auf dem Bildschirm | hello(message) mit print liefert keinen Wert |
| Nebeneffekt | Eine globale Variable wird verändert (häufig so genannt) | wertetest() setzt wert auf 12 |
Beispiel: Eine globale Variable ändern
- 1wert = 42
- 2print(wert) → 42
- 3def wertetest():
- 4 global wert
- 5 wert = 12
- 6 print(wert)
- 7wertetest() → 12
- 8print(wert) → 12
- 9Das Wort global sorgt dafür, dass die Variable außerhalb der Funktion geändert wird. Darum steht am Ende 12.
Merke: Ein Rückgabewert kommt mit return zurück. Eine Ausgabe zeigt etwas an. Änderungen an globalen Variablen heißen häufig Nebeneffekt.
Teste dich
In funktionalen Programmiersprachen sind Funktionen Werte, mit denen man wie mit Zahlen oder Listen arbeiten kann. (Funktionale Programmiersprachen sind Sprachen, in denen das so ist.) Eine Funktion kann dort Argument oder Ergebnis einer anderen Funktion sein. Auch in Python dürfen Funktionen als Argumente auftreten.
Eine Funktion, die eine andere Funktion als Argument erwartet, nennt man Funktion höherer Ordnung. Ein Standardbeispiel der funktionalen Programmierung ist map. Sie erhält eine Funktion f und eine Liste l und gibt die modifizierte Liste zurück, die entsteht, wenn f auf jedes Element von l angewendet wird. Wie genau map in neueren Python-Versionen sein Ergebnis liefert, behandeln wir hier nicht.
Im Beispiel übergibst du den Namen quadriere. Du gibst also die Funktion selbst mit und rufst sie nicht selbst auf. map wendet sie dann auf jedes Element der Liste an.
Definition
Funktion höherer Ordnung
Eine Funktion höherer Ordnung erhält Funktionen als Argumente und/oder liefert Funktionen als Ergebnis.
Beispiel: map mit der Funktion quadriere
- 1def quadriere(x):
- 2 return x * x
- 3quadratzahlen = map(quadriere, [1, 2, 3, 4, 5, 6])
- 4map wendet quadriere auf jedes Element der Liste an.
- 5Die Ergebnisse sind die Quadratzahlen 1, 4, 9, 16, 25, 36.
Teste dich
Alles auf einen Blick
Funktion (Programmierung)
Definition und Aufruf
Mit def legst du eine Funktion fest, der Aufruf führt sie aus.
Parameter
Formale Parameter stehen in der Definition, Argumente sind die Werte beim Aufruf.
Rückgabewert
return bestimmt ihn, und man kann ihn direkt weiterverwenden.
Vorteile
Funktionen machen Programme wiederverwendbar, verständlicher und leichter wartbar.
Wirkungen
Ausgabe und Nebeneffekt sind nicht dasselbe wie ein Rückgabewert.
Höhere Ordnung
Eine Funktion kann als Argument an eine andere gehen, zum Beispiel bei map.
Musteraufgabe · Schritt für Schritt
mal_drei aufrufen und mit map übergeben (ausgedachtes Beispiel)
- 1Ausgedachte Aufgabe: Die Funktion mal_drei soll eine Zahl verdreifachen.
- 2def mal_drei(x):
- 3 return x * 3
- 4Name: mal_drei · Parameter: x · Rückgabewert: x * 3
- 5Aufruf mit dem Argument 4: mal_drei(4) liefert 4 * 3 = 12.
- 6Weil ein Wert zurückkommt, kannst du ihn direkt verwenden: mal_drei(4) + 1 ergibt 12 + 1 = 13.
- 7Als Wert übergeben: map(mal_drei, [1, 2, 3]) wendet mal_drei auf jedes Element an. Das ergibt 3, 6, 9.
Fehler finden
Prüfe die Aussagen zu Rückgabe und Ausgabe (ausgedachtes Beispiel) In einer Zeile steckt ein Fehler. Tippe sie an.
Fehler in Zeile 4Eine Ausgabe ist kein Rückgabewert. Richtig: zeige(5) gibt nur aus und liefert keinen Wert zurück. Einen Rückgabewert bestimmt eine return-Anweisung.
Lückentext
Wähl in jeder Lücke das passende Wort und prüf dann deine Antworten.
In Python erkennt man den Block einer Funktion an der . Den Rückgabewert bestimmt die Anweisung . Die Werte, die du erst beim Aufruf mitgibst, heißen .
Karteikasten
Erst selbst überlegen, dann umdrehen.
Übung mit Feedback