At My Fingertips

Documentation

Funktionen: Theorie am Kreis

Bisher haben wir Code verfasst, den wir, einmal geschrieben, nur noch auf mühsame und fehleranfällige Weise wiederverwenden konnten. Die Wiederverwendung von Code ist aber etwas, das Programmierer*innen immer und immer wieder machen. Wir sind eigentlich Profi-Copy-Paster. Und wir als Profi-Copy-Paster haben deshalb auch effizientere Möglichkeiten entwickelt, Code wiederzuverwenden.

Eine Möglichkeit dazu sind Funktionen. Sie kennen Funktionen bereits: show_graphic(rectangle(100, 200, red)) besteht gleich aus zwei Funktionsaufrufen: show_graphic(...) und rectangle(...). Die Funktionsdefinition, also der Code, der beschreibt, was passieren soll, wenn man diese Funktionen aufruft, haben wir noch nicht betrachtet. Wir können aber selbst einmal eine solche Funktionsdefinition verfassen.

Funktionsbeispiel

In dieser Codezelle (unten) sehen Sie eine Funktionsdefinition, die eine spezielle Ellipse definiert: den Kreis.

Führen Sie diese Codezelle aus.

Loading...

Wie Sie sehen, passiert noch nichts. Der Compiler hat sich den Code unter dem Namen circle nur gemerkt, aber noch nicht ausgeführt, da er noch nicht aufgerufen wurde.

Wenn Sie die nächste Codezelle aufrufen, wird der Code in der obigen Zelle mit den Argumenten 200 und rgb_color(0, 127, 255) aufgerufen und ausgeführt.

Loading...

Code wiederverwenden

Einmal definierten Code wie Funktionen und Variablen wiederverwenden. Auf dieser Website geht das, indem wir Funktionen in die Toolbox speichern (davon später mehr) oder indem wir auf der gleichen Webseite Code (weiter unten) wieder verwenden.

Die Folgende Codezelle definiert eine neue Funktion, die eine Zielscheibe erstellt und dazu auf die Funktion circle(...) zurückgreift:

Loading...
Loading...

Begriffserklärung zu Funktionen

Definition und Aufrufer

Eine Funktion ist eigentlich die Definition der Funktion (Funktionsdefinition):

slide1

Eine Definition darf bestehen, ohne je aufgerufen zu werden; der Code kann also kompilieren (durchlaufen werden), ohne dass es zu Fehlermeldungen kommt. Nicht verwendete Funktionen sind jedoch recht sinnlos und gute Programmierumgebungen weisen darauf hin.

Eine Funktion wird verwendet, indem sie vom Aufrufer (Caller) aufgerufen (call) wird, vgl. Bild oben. Wenn jedoch eine Funktion aufgerufen wird, ohne dass sie definiert wurde, gibt der Compiler sofort eine Fehlermeldung aus.

Einzelteile einer Definition

slide2

Die Schlüsselwörter lassen den Compiler wissen, dass einerseits eine Funktionsdefinition jetzt beginnt (def), und andererseits, dass sie jetzt endet (return) und den Rückgabewert zurückgibt.

Nach dem Schlüsselwort def folgt immer der Definitionsname, der aus den gleichen Zeichen bestehen darf wie Variablennamen.

In den Klammern darauf kommt irgendeine Anzahl von Parametern. Das Klammerpaar darf also leer sein oder eine unendliche grosse Anzahl Parameter beinhalten. Für uns werden es meist 1-4 Parameter sein.

Am Schluss muss der Doppelpunkt : folgen. Er signalisiert das Ende des Definitionskopfes (erste Zeile). Alles, was zur Definition gehört, ist (um 4 Leerzeichen) eingerückt, auf Englisch indent. Sobald die Einrückung kleiner ist, zählt es nicht mehr dazu (in Python). Eine Funktion darf auch ohne die return-Zeile enden, im Moment arbeiten wir aber nur mit Funktionen, die mit return enden.

Beide Funktionen in der obigen Darstellung sind übrigens gleichwertig, die zweite Version ist einfach kürzer.

Definition in 3 Teilen

Die Funktion kann eingeteilt werden in Kopf und Körper. Wenn die letzte Zeile return enthält, ist diese Zeile die Rückgabeanweisung.

slide3

Parameter

slide4

Die Anzahl Parameter in der Definition muss mit der Anzahl Argumente im Aufruf übereinstimmen, sonst kommt es zu Fehlermeldungen. Führen Sie dazu folgende zwei Codezellen aus und verändern Sie die Argumente im Aufruf von f_1, so dass die Anzahl der Argumente sich von der Anzahl Parameter unterscheidet:

Loading...
Loading...

Aufgabe

Korrigieren Sie den Code in folgenden zwei Zellen:

Loading...

Nicht nur die Anzahl der Parameter soll stimmen, sondern auch der Datentyp, sonst kann die Funktion die darin definierten Befehle nicht fehlerfrei ausführen. Korrigieren Sie:

Loading...

Um dies zu verhindern, wird oft noch der Datentyp im Funktionskopf festgelegt. So weiss man, welche Datentypen erlaubt sind. So können Fehler früher erkannt und mit besseren Fehlerbeschrieben gemeldet werden.

Lesen Sie dazu dazu folgende Codezellen und führen Sie sie anschliessend aus:

Loading...
Loading...

Aufgabe

Korrigieren Sie den Code in folgender Zelle.

Loading...

Was Sie gelernt haben

Allgemein

  • Sie wissen, dass man mit Funktionen gut lesbaren, strukturierten und modularisierten Programmiercode schreiben kann.
  • Sie können bestehende Programme sinnvoll abändern und erweitern.
  • Sie können Fehler in einem Programm identifizieren und korrigieren.

Python

  • Sie können eine Funktion und ihre Einzelteile in eigenen Worten beschreiben.
  • Sie können den Vorteil von Datentypenfixierung in Funktionen in eigenen Worten beschreiben.
  • Sie können Funktionsdefinitionen verfassen und Funktionen aufrufen.
  • Sie haben Datentypenfixierung im Kopf der Funktion def zielscheibe(breite: float) -> Graphic:. gesehen:
    • Datentypenfixierung beim Parameter breite: float und
    • Datentypenfixierung beim Rückgabetyp -> Graphic.

PyTamaro

  • (nichts Neues)

This activity has been created by Gall and is licensed under CC BY-SA 4.0.

Funktionen: Theorie am Kreis

Logo of PyTamaro

PyTamaro is a project created by the Lugano Computing Education Research Lab at the Software Institute of USI

Privacy PolicyPlatform Version c08406b (Wed, 20 Nov 2024 12:30:00 GMT)