Programmieren Teil 4 – Funktionen
Lernziele:
Ich beherrsche die in Teil 1 und 2 gelernten Grundlagen in python (Turtlegraphics, Variablen, while-Schleife, Verzweigungen, Vergleichsoperatoren, mathematische Operatoren, f-Strings, Funktionen print und input, nie repeat verwenden, clever und kompakt programmieren).
Ich beherrsche den Umgang mit Listen, wie in Teil 3 gelernt:
Listen korrekt erstellen – leer oder mit Zahlen oder mit Texten drin.
Mit einer while-Schleife alle Elemente einer Liste durchgehen, sie auslesen/ausgeben oder mit einer if-Verzweigung abfragen und evtl. verändern oder entfernen.
Die Listen-Funktionen pop und append richtig verwenden.
Mit in fragen, ob ein bestimmtes Element in einer Liste vorkommt.
Listen analysieren (z.B. Mittelwert ermitteln) oder verändern (z.B. bestimmte Elemente ersetzen etc.).
Ich kann Funktionen mit und ohne Argumente definieren.
Ich kann Funktionen mit und ohne Rückgabewerte definieren.
Ich kann Funktoinen korrekt und sinnvoll aufrufen. Dabei achte ich darauf:
…welche Argumente der Funktion übergeben werden und
…was die Funktion zurückgibt.
Ich verstehe die Begriffe Argument, Rückgabewert, Definition und Aufruf.
Ich kann die logischen Operatoren and, or und not korrekt verwenden.
Ich kann Mudule wie random oder math importieren und Funktionen daraus wie randint oder sqrt korrekt verwenden.
Ich beherrsche einfache String-Operationen (Texte erstellen, Texte zusammenfügen, auf bestimmte Buchstaben zugreifen).
Ich kann die Buchstaben eines Texts mithilfe einer while-Schleife durchgehen, sie auslesen/ausgeben oder mit einer if-Verzweigung abfragen.
1. Einführung
Du kennst Variablen – darin kannst du einen Wert speichern. Und du kennst Listen – darin kannst du mehrere Werte speichern. Aber du hast dich villeicht schon gefragt: „Was, wenn ich gleich mehrere Codezeilen irgendwo unterbringen will?“. Für diese Idee gibt es Funktionen, die wir auch Unterprogramme nennen können.
Auftrag 1 – Bereits bekannte Funktionen anschauen
In Python sind viele Funktionen schon eingebaut. Du hast ein paar davon schon oft verwendet – zum Beispiel print, input und len:
print("Hallo")
name = input("Wie heisst du?")
n_letters = len(name)
print(f"Dein Name hat {n_letters} Buchstaben.")
Aufgabe
Zu zweit: Besprecht folgende Fragen. Vergleicht dann mit der Lösung unten.
Was ist allen drei Funktionen gemeinsam?
Worin unterscheiden sich die Funktionen strukturell (abgesehen davon, dass sie unterschiedliche Namen haben und unterschiedliche Zwecke erfüllen)?
2. Theorie
Auftrag 2 – Eine Funktion (ein Unterprogramm) erstellen und verwenden
Mit folgendem Code zeichnet die Turtle einen violeten Punkt, dreht 90 Grad nach rechts und fährt um 40 Pixel weiter:
from gturtle import *
karl = Turtle()
karl.setPenColor("purple")
karl.dot(40)
karl.right(90)
karl.forward(40)
Die letzten vier Codezeilen aus obigem Code packen wir nun in eine Funktion namens „purple_dot“. Dann rufen wir die Funktion viermal nacheinander auf:
from gturtle import *
karl = Turtle()
def purple_dot():
karl.setPenColor("purple")
karl.dot(40)
karl.right(90)
karl.forward(40)
purple_dot()
purple_dot()
purple_dot()
purple_dot()
Beachte:
Um eine Funktion zu erstellen, benötigst du das Schüsselwort def (die Funktion wird hier definiert).
Dann folgt der Funktionsname mit anschliessenden Klammern und ein Doppelpunkt:
Du musst die Funktion erstellen, bevor du sie aufrufst. Die Definition der Funktion erfolgt also immer oben im Code und der Aufruf weiter unten.
Aufgabe
Kopiere obigen Code mit der Funktion „purple_dot“ und verändere ihn wie folgt:
Auftrag 3 – Eine Funktion mit Argument erstellen und verwenden
Wir können einer Funktion auch ein Argument (oder mehrere) mitgeben. Argumente kommen in die Klammern rein. In folgendem Beispiel wird als Argument die Farbe übergeben.
from gturtle import *
karl = Turtle()
def my_dot(color):
karl.setPenColor(color)
karl.dot(40)
karl.right(90)
karl.forward(40)
my_dot("red")
my_dot("blue")
my_dot("orange")
my_dot("green")
Aufgabe
Kopiere obigen Code und verändere ihn wie folgt:
Auftrag 4 – Eine Funktion mit Argumenten und Rückgabewert erstellen und verwenden
Folgende Funktion namens schnitt berechnet den Durchschnitt zweier Zahlen und gibt das Resultat zurück. Die Funktion wird unten in der Funktion print aufgerufen.2).
def schnitt(zahl1, zahl2):
summe = zahl1 + zahl2
return summe/2
print(schnitt(4, 5))
Beachte:
Das Schlüsselwort return bewirkt Folgendes:
Die Funktion wird sofort verlassen.
Die Funktion gibt den Wert zurück, der hinter return steht.
Wenn kein Wert hinter return steht, gibt die Funktion None (nichts) zurück.
Aufgabe
Erstelle eine Funktion namens quader mit drei Argumenten namens l, b und h für die Länge, Breite und Höhe des Quaders. Die Funktion gibt das Volumen des Quaders zurück. Beispiel: Der Aufruf quader(2, 3, 4) gibt 24 zurück. Teste die Funktion, indem du sie dreimal mit unterschiedlichen Argumenten aufrufst und das Resltat jeweils mit print ausgibst.
Auftrag 5 – Wichtige Begriffe erklären
Besprecht zu zweit die folgenden Fragen zu Funktionen. Vergleicht anschliessend mit den Lösungen unten. Lest diese genau und fragt bei Bedarf nach!
Was ist ein Argument?
Was ist ein Rückgabewert? Welches Schüsselwort ist hier wichtig?
Was ist eine Definition? Welches Schösselwort ist hierzu nötig?
Was ist ein Aufruf?
3. Aufgaben N – Funktionen
In folgenden Aufgaben sollst du Funktionen erstellen (= definieren) und verwenden (=aufrufen).
4. Lösungen zu den Aufträgen
Lösungen zu den Aufträgen (Einstieg und Theorie)
Auftrag 1
Alle Funktionen haben Klammern.
Die Funktionen input und len geben einen Wert zurück, den wir im Code verwenden wollen und deshalb in einer Variable speichern. Von print erwarten wir üblicherweise keinen Rückgabewert.
Auftrag 2
Variante 1
from gturtle import *
karl = Turtle()
def blue_dot():
karl.setPenColor("blue")
karl.dot(20)
karl.right(60)
karl.forward(20)
blue_dot()
blue_dot()
blue_dot()
blue_dot()
blue_dot()
blue_dot()
Variante 2
from gturtle import *
karl = Turtle()
def blue_dot():
karl.setPenColor("blue")
karl.dot(20)
karl.right(60)
karl.forward(20)
count = 0
while count < 6:
blue_dot()
count = count + 1
Auftrag 3
from gturtle import *
karl = Turtle()
def my_dot(dot_size):
karl.setPenColor("crimson")
karl.dot(dot_size)
karl.right(90)
karl.forward(40)
my_dot(20)
my_dot(30)
my_dot(40)
my_dot(30)
Auftrag 4
# Funktion erstellen:
def quader(l, b, h):
return l * b * h
#Funktion dreimal aufrufen und Resultat ausgeben:
print(quader(2,3,4))
print(quader(3,3,3))
print(quader(4,5,5))
Auftrag 5
Ein Argument ist das, was der Funktion übergeben oder mitgegeben wird. Es wird in die Klammern der Funktion geschrieben. Eine Funktion kann eines, mehrere oder gar kein Arugment haben. Wenn sie kein Argument hat, bleiben die Klammern leer. Als Argumente können Zahlen, Texte, Variablen oder Listen übergeben werden.
Ein Rückgabewert ist das, was die Funktion zurückgibt. Eine Funktion kann einen, mehrere oder gar keinen Rückgabewert haben. In der Defintion der Funktion schreibst du den Rückgabewert hinter das Schlüsselwort return. Wenn du die Funktion aufrufst, steht der Rückgabewert dort, wo die Funktion steht. Ist dir das klar? Falls nicht: Lehrperson fragen!
In der Defintion erstellst du die Funktion. Hierzu benötigst du das Schlüsselwort def, gefolgt vom Funktionsnamen, runden Klammern und einem Doppelpunkt. In den folgenden eingerückten Zeilen definierst du den Code, der ausgeführt wird, wenn die Funktion aufgerufen wird.
Im Aufruf rufst du die Funktion auf. Eine bereits definierte oder bekannte Funktion kannst du beliebig oft aufrufen.