Departement Informatik
Informatikgrundlagen
Funktionen
Hans-Joachim Böckenhauer Dennis Komm
Herbst 2021 – 21. Oktober 2021
Kontrollstrukturen
Terminierung
Terminierung
i = 1
while i <= 5:
s += i i += 1
Hier und meistens:
statement ändert einen Wert, der in condition vorkommt Nach endlich vielen Iterationen wird condition falsch ï Terminierung
Informatikgrundlagen für Humanmedizin – Funktionen und Rückgabewerte Herbst 2021 Böckenhauer, Komm 1 / 26
Terminierung
i = 1
while i <= 5:
s += i i += 1
Hier und meistens:
statement ändert einen Wert, der in condition vorkommt
Nach endlich vielen Iterationen wird condition falsch
ï Terminierung
Terminierung
i = 1
while i <= 5:
s += i i += 1
Hier und meistens:
statement ändert einen Wert, der in condition vorkommt Nach endlich vielen Iterationen wird condition falsch
ï Terminierung
Informatikgrundlagen für Humanmedizin – Funktionen und Rückgabewerte Herbst 2021 Böckenhauer, Komm 1 / 26
Terminierung
i = 1
while i <= 5:
s += i i += 1
Hier und meistens:
statement ändert einen Wert, der in condition vorkommt
Nach endlich vielen Iterationen wird condition falsch
ï Terminierung
Endlosschleifen
Endlosschleifen sind leicht zu produzieren
while True:
print("0")
while not False:
print("1")
while 2 > 1:
print("2")
. . . aber nicht automatisch zu erkennen
Informatikgrundlagen für Humanmedizin – Funktionen und Rückgabewerte Herbst 2021 Böckenhauer, Komm 2 / 26
Endlosschleifen
Endlosschleifen sind leicht zu produzieren
while True:
print("0")
while not False:
print("1")
while 2 > 1:
print("2")
. . . aber nicht automatisch zu erkennen
Halteproblem
Unentscheidbarkeit des Halteproblems [Alan Turing, 1936]
Es gibt kein Python-Programm, das für jedes Python-Programm P und jede Eingabe I korrekt feststellen kann, ob P bei Eingabe I terminiert Das heisst, die Terminierung von Programmen kann nicht automatisch überprüft werden
Theoretische Fragestellungen dieser Art waren für Turing die Hauptmotivation für die Konstruktion seiner Rechenmaschine
Alan Turing [Wikimedia]
Informatikgrundlagen für Humanmedizin – Funktionen und Rückgabewerte Herbst 2021 Böckenhauer, Komm 3 / 26
Halteproblem
Unentscheidbarkeit des Halteproblems [Alan Turing, 1936]
Es gibt kein Python-Programm, das für jedes Python-Programm P und jede Eingabe I korrekt feststellen kann, ob P bei Eingabe I terminiert Das heisst, die Terminierung von Programmen kann nicht automatisch überprüft werden
Theoretische Fragestellungen dieser Art waren für Turing die Hauptmotivation für die Konstruktion seiner Rechenmaschine
Alan Turing [Wikimedia]
Die Collatz-Folge
Folge von natürlichen Zahlen n 0 , n 1 , n 2 , n 3 , n 4 , n 5 , . . .
n 0 = n
für jedes i ≥ 1, n i =
n i−1 /2, falls n i−1 gerade 3 · n i−1 + 1, falls n i−1 ungerade
Beispiel für n = 5
5, 16, 8, 4, 2, 1, 4, 2, 1, . . . (Repetition bei 1)
Informatikgrundlagen für Humanmedizin – Funktionen und Rückgabewerte Herbst 2021 Böckenhauer, Komm 4 / 26
Die Collatz-Folge
Folge von natürlichen Zahlen n 0 , n 1 , n 2 , n 3 , n 4 , n 5 , . . . n 0 = n
für jedes i ≥ 1, n i =
n i−1 /2, falls n i−1 gerade 3 · n i−1 + 1, falls n i−1 ungerade
Beispiel für n = 5
5, 16, 8, 4, 2, 1, 4, 2, 1, . . . (Repetition bei 1)
Die Collatz-Folge
Folge von natürlichen Zahlen n 0 , n 1 , n 2 , n 3 , n 4 , n 5 , . . . n 0 = n
für jedes i ≥ 1, n i =
n i−1 /2, falls n i−1 gerade 3 · n i−1 + 1, falls n i−1 ungerade
Beispiel für n = 5
5, 16, 8, 4, 2, 1, 4, 2, 1, . . . (Repetition bei 1)
Informatikgrundlagen für Humanmedizin – Funktionen und Rückgabewerte Herbst 2021 Böckenhauer, Komm 4 / 26
Die Collatz-Folge
Folge von natürlichen Zahlen n 0 , n 1 , n 2 , n 3 , n 4 , n 5 , . . . n 0 = n
für jedes i ≥ 1, n i =
n i−1 /2, falls n i−1 gerade 3 · n i−1 + 1, falls n i−1 ungerade
Beispiel für n = 5 5
, 16, 8, 4, 2, 1, 4, 2, 1, . . . (Repetition bei 1)
Die Collatz-Folge
Folge von natürlichen Zahlen n 0 , n 1 , n 2 , n 3 , n 4 , n 5 , . . . n 0 = n
für jedes i ≥ 1, n i =
n i−1 /2, falls n i−1 gerade 3 · n i−1 + 1, falls n i−1 ungerade
Beispiel für n = 5 5, 16
, 8, 4, 2, 1, 4, 2, 1, . . . (Repetition bei 1)
Informatikgrundlagen für Humanmedizin – Funktionen und Rückgabewerte Herbst 2021 Böckenhauer, Komm 4 / 26
Die Collatz-Folge
Folge von natürlichen Zahlen n 0 , n 1 , n 2 , n 3 , n 4 , n 5 , . . . n 0 = n
für jedes i ≥ 1, n i =
n i−1 /2, falls n i−1 gerade 3 · n i−1 + 1, falls n i−1 ungerade
Beispiel für n = 5 5, 16, 8
, 4, 2, 1, 4, 2, 1, . . . (Repetition bei 1)
Die Collatz-Folge
Folge von natürlichen Zahlen n 0 , n 1 , n 2 , n 3 , n 4 , n 5 , . . . n 0 = n
für jedes i ≥ 1, n i =
n i−1 /2, falls n i−1 gerade 3 · n i−1 + 1, falls n i−1 ungerade
Beispiel für n = 5 5, 16, 8, 4
, 2, 1, 4, 2, 1, . . . (Repetition bei 1)
Informatikgrundlagen für Humanmedizin – Funktionen und Rückgabewerte Herbst 2021 Böckenhauer, Komm 4 / 26
Die Collatz-Folge
Folge von natürlichen Zahlen n 0 , n 1 , n 2 , n 3 , n 4 , n 5 , . . . n 0 = n
für jedes i ≥ 1, n i =
n i−1 /2, falls n i−1 gerade 3 · n i−1 + 1, falls n i−1 ungerade
Beispiel für n = 5 5, 16, 8, 4, 2
, 1, 4, 2, 1, . . . (Repetition bei 1)
Die Collatz-Folge
Folge von natürlichen Zahlen n 0 , n 1 , n 2 , n 3 , n 4 , n 5 , . . . n 0 = n
für jedes i ≥ 1, n i =
n i−1 /2, falls n i−1 gerade 3 · n i−1 + 1, falls n i−1 ungerade
Beispiel für n = 5 5, 16, 8, 4, 2, 1
, 4, 2, 1, . . . (Repetition bei 1)
Informatikgrundlagen für Humanmedizin – Funktionen und Rückgabewerte Herbst 2021 Böckenhauer, Komm 4 / 26
Die Collatz-Folge
Folge von natürlichen Zahlen n 0 , n 1 , n 2 , n 3 , n 4 , n 5 , . . . n 0 = n
für jedes i ≥ 1, n i =
n i−1 /2, falls n i−1 gerade 3 · n i−1 + 1, falls n i−1 ungerade
Beispiel für n = 5 5, 16, 8, 4, 2, 1, 4
, 2, 1, . . . (Repetition bei 1)
Die Collatz-Folge
Folge von natürlichen Zahlen n 0 , n 1 , n 2 , n 3 , n 4 , n 5 , . . . n 0 = n
für jedes i ≥ 1, n i =
n i−1 /2, falls n i−1 gerade 3 · n i−1 + 1, falls n i−1 ungerade
Beispiel für n = 5 5, 16, 8, 4, 2, 1, 4, 2
, 1, . . . (Repetition bei 1)
Informatikgrundlagen für Humanmedizin – Funktionen und Rückgabewerte Herbst 2021 Böckenhauer, Komm 4 / 26
Die Collatz-Folge
Folge von natürlichen Zahlen n 0 , n 1 , n 2 , n 3 , n 4 , n 5 , . . . n 0 = n
für jedes i ≥ 1, n i =
n i−1 /2, falls n i−1 gerade 3 · n i−1 + 1, falls n i−1 ungerade
Beispiel für n = 5 5, 16, 8, 4, 2, 1, 4, 2, 1
, . . . (Repetition bei 1)
Die Collatz-Folge
Folge von natürlichen Zahlen n 0 , n 1 , n 2 , n 3 , n 4 , n 5 , . . . n 0 = n
für jedes i ≥ 1, n i =
n i−1 /2, falls n i−1 gerade 3 · n i−1 + 1, falls n i−1 ungerade
Beispiel für n = 5
5, 16, 8, 4, 2, 1, 4, 2, 1, . . . (Repetition bei 1)
Informatikgrundlagen für Humanmedizin – Funktionen und Rückgabewerte Herbst 2021 Böckenhauer, Komm 4 / 26
Übung – Die Collatz-Folge
Schreiben Sie ein Programm, das eine ganze Zahl n als Eingabe erhält die Collatz-Folge ausgibt mit der Formel n 0 = n und
n i =
n i−1 /2, falls n i−1 gerade
3 · n i−1 + 1, falls n i−1 ungerade
stoppt, sobald 1 erreicht wurde
Übung – Die Collatz-Folge
n = int(input("Berechne die Collatz-Folge fuer n = "))
while n > 1: # stopp, wenn 1 erreicht ist if n % 2 == 0: # n ist gerade
n //= 2
else: # n ist ungerade
n = 3 * n + 1 print(n, end=" ")
Informatikgrundlagen für Humanmedizin – Funktionen und Rückgabewerte Herbst 2021 Böckenhauer, Komm 6 / 26
Die Collatz-Folge
Beispiel für n = 27
27 82 41 124 62 31 94 47 142 71 214 107 322 161 484 242 121
364 182 91 274 137 412 206 103 310 155 466 233 700 350 175
526 263 790 395 1186 593 1780 890 445 1336 668 334 167 502
251 754 377 1132 566 283 850 425 1276 638 319 958 479 1438
719 2158 1079 3238 1619 4858 2429 7288 3644 1822 911 2734
1367 4102 2051 6154 3077 9232 4616 2308 1154 577 1732 866 433
1300 650 325 976 488 244 122 61 184 92 46 23 70 35 106 53 160
80 40 20 10 5 16 8 4 2 1
Die Collatz-Folge
Die Collatz-Vermutung [Lothar Collatz, 1937]
Für jedes n ≥ 1 erscheint die 1 in der Folge
Niemand konnte die Vermutung bislang beweisen Falls sie nicht stimmt, ist die while-Schleife zur Berechnung der Collatz-Folge für einige n eine Endlosschleife
Lothar Collatz [Wikimedia]
Informatikgrundlagen für Humanmedizin – Funktionen und Rückgabewerte Herbst 2021 Böckenhauer, Komm 8 / 26
Die Collatz-Folge
Die Collatz-Vermutung [Lothar Collatz, 1937]
Für jedes n ≥ 1 erscheint die 1 in der Folge
Niemand konnte die Vermutung bislang beweisen Falls sie nicht stimmt, ist die while-Schleife zur Berechnung der Collatz-Folge für einige n eine Endlosschleife
Lothar Collatz [Wikimedia]
Die Collatz-Folge
Die Collatz-Vermutung [Lothar Collatz, 1937]
Für jedes n ≥ 1 erscheint die 1 in der Folge
Niemand konnte die Vermutung bislang beweisen
Falls sie nicht stimmt, ist die while-Schleife zur Berechnung der Collatz-Folge für einige n eine Endlosschleife
Lothar Collatz [Wikimedia]
Informatikgrundlagen für Humanmedizin – Funktionen und Rückgabewerte Herbst 2021 Böckenhauer, Komm 8 / 26
Die Collatz-Folge
Die Collatz-Vermutung [Lothar Collatz, 1937]
Für jedes n ≥ 1 erscheint die 1 in der Folge
Niemand konnte die Vermutung bislang beweisen Falls sie nicht stimmt, ist die while-Schleife zur Berechnung der Collatz-Folge für einige n eine Endlosschleife
Lothar Collatz [Wikimedia]
Kontrollanweisungen
Kontrollfluss
Kontrollfluss – if
Reihenfolge der (wiederholten) Ausführung von Anweisungen Grundsätzlich von oben nach unten. . .
. . . ausser in Auswahl- und Kontrollanweisungen condition
statement
true
false if condition:
statement
Kontrollfluss – if
Reihenfolge der (wiederholten) Ausführung von Anweisungen Grundsätzlich von oben nach unten. . .
. . . ausser in Auswahl- und Kontrollanweisungen condition
statement
true
false
if condition:
statement
Informatikgrundlagen für Humanmedizin – Funktionen und Rückgabewerte Herbst 2021 Böckenhauer, Komm 9 / 26
Kontrollfluss – if
Reihenfolge der (wiederholten) Ausführung von Anweisungen Grundsätzlich von oben nach unten. . .
. . . ausser in Auswahl- und Kontrollanweisungen condition
statement
true
false
if condition:
statement
Kontrollfluss – if
Reihenfolge der (wiederholten) Ausführung von Anweisungen Grundsätzlich von oben nach unten. . .
. . . ausser in Auswahl- und Kontrollanweisungen condition
statement
true
false if condition:
statement
Informatikgrundlagen für Humanmedizin – Funktionen und Rückgabewerte Herbst 2021 Böckenhauer, Komm 9 / 26
Kontrollfluss – if-else
condition
statement1
statement2
true
false
if condition:
statement1 else:
statement2
Kontrollfluss – if-else
condition
statement1
statement2
true
false
if condition:
statement1 else:
statement2
Informatikgrundlagen für Humanmedizin – Funktionen und Rückgabewerte Herbst 2021 Böckenhauer, Komm 10 / 26
Kontrollfluss – if-else
condition
statement1
statement2
true
false
if condition:
statement1 else:
statement2
Kontrollfluss – while
condition
statement
true
false
while condition:
statement
Informatikgrundlagen für Humanmedizin – Funktionen und Rückgabewerte Herbst 2021 Böckenhauer, Komm 11 / 26
Kontrollfluss – while
condition
statement
true
false
while condition:
statement
Kontrollfluss – while
condition
statement
true
false
while condition:
statement
Informatikgrundlagen für Humanmedizin – Funktionen und Rückgabewerte Herbst 2021 Böckenhauer, Komm 11 / 26
Kontrollfluss – while
condition
statement
true
false
while condition:
statement
Kontrollfluss break in while -Schleife
condition
statement
break
Informatikgrundlagen für Humanmedizin – Funktionen und Rückgabewerte Herbst 2021 Böckenhauer, Komm 12 / 26
Kontrollfluss break in while -Schleife
condition
statement
break
Funktionen
Funktionen
Bisher. . .
Ein Algorithmus pro Datei
Anweisungen werden sequentiell abgearbeitet Verwendung von Schleifen und Kontrollstrukturen
Gruppiere zusammenhängenden Code als Funktion
def begruessung():
date = "21. Oktober 2021" print("Hallo", username, "!")
print("Willkommen zur Vorlesung am", date)
begruessung()
Funktionen
Bisher. . .
Ein Algorithmus pro Datei
Anweisungen werden sequentiell abgearbeitet Verwendung von Schleifen und Kontrollstrukturen
Gruppiere zusammenhängenden Code als Funktion
def begruessung():
date = "21. Oktober 2021" print("Hallo", username, "!")
print("Willkommen zur Vorlesung am", date) begruessung()
Informatikgrundlagen für Humanmedizin – Funktionen und Rückgabewerte Herbst 2021 Böckenhauer, Komm 13 / 26
Funktionen
Bisher. . .
Ein Algorithmus pro Datei
Anweisungen werden sequentiell abgearbeitet Verwendung von Schleifen und Kontrollstrukturen
Gruppiere zusammenhängenden Code als Funktion
def begruessung():
date = "21. Oktober 2021"
print("Hallo", username, "!")
print("Willkommen zur Vorlesung am", date)
begruessung()
Funktionen
Bisher. . .
Ein Algorithmus pro Datei
Anweisungen werden sequentiell abgearbeitet Verwendung von Schleifen und Kontrollstrukturen
Gruppiere zusammenhängenden Code als Funktion
def begruessung():
date = "21. Oktober 2021"
print("Hallo", username, "!")
print("Willkommen zur Vorlesung am", date) begruessung()
Definition einer Funktion
Informatikgrundlagen für Humanmedizin – Funktionen und Rückgabewerte Herbst 2021 Böckenhauer, Komm 13 / 26
Funktionen
Bisher. . .
Ein Algorithmus pro Datei
Anweisungen werden sequentiell abgearbeitet Verwendung von Schleifen und Kontrollstrukturen
Gruppiere zusammenhängenden Code als Funktion
def begruessung():
date = "21. Oktober 2021"
print("Hallo", username, "!")
print("Willkommen zur Vorlesung am", date) begruessung()
Optionale Parameterliste
Analogie zu natürlichen Sprachen
Python «versteht» gewisse Wörter
Diese heissen Schlüsselwörter: def, if, while etc.
Grundstock an Funktionen: print(), range(), input() etc.
def f(): ⇐⇒ Python «lernt» neues Wort f Aus dem Duden
Kühl·schrank, der
Mit einer Kältemaschine ausgestatteter schrankartiger Behälter zum Kühlen oder Frischhalten von Lebensmitteln
Informatikgrundlagen für Humanmedizin – Funktionen und Rückgabewerte Herbst 2021 Böckenhauer, Komm 14 / 26
Analogie zu natürlichen Sprachen
Python «versteht» gewisse Wörter
Diese heissen Schlüsselwörter: def, if, while etc.
Grundstock an Funktionen: print(), range(), input() etc.
def f(): ⇐⇒ Python «lernt» neues Wort f
Aus dem Duden Kühl·schrank, der
Mit einer Kältemaschine ausgestatteter schrankartiger Behälter zum Kühlen
oder Frischhalten von Lebensmitteln
Analogie zu natürlichen Sprachen
Python «versteht» gewisse Wörter
Diese heissen Schlüsselwörter: def, if, while etc.
Grundstock an Funktionen: print(), range(), input() etc.
def f(): ⇐⇒ Python «lernt» neues Wort f Aus dem Duden
Kühl·schrank, der
Mit einer Kältemaschine ausgestatteter schrankartiger Behälter zum Kühlen oder Frischhalten von Lebensmitteln
Informatikgrundlagen für Humanmedizin – Funktionen und Rückgabewerte Herbst 2021 Böckenhauer, Komm 14 / 26
Analogie zu natürlichen Sprachen
def begruessung():
date = "21. Oktober 2021"
print("Hallo", username, "!")
print("Willkommen zur Vorlesung am", date)
username = input("Geben Sie Ihren Benutzernamen ein:") if username == "hjb" or username == "dkomm":
begruessung() ...
else:
print("Benutzer nicht bekannt.") ...
date = "21. Oktober 2021" print("Hallo", username, "!")
print("Willkommen zur Vorlesung am", date)
Analogie zu natürlichen Sprachen
def begruessung():
date = "21. Oktober 2021"
print("Hallo", username, "!")
print("Willkommen zur Vorlesung am", date)
username = input("Geben Sie Ihren Benutzernamen ein:") if username == "hjb" or username == "dkomm":
begruessung() ...
else:
print("Benutzer nicht bekannt.") ...
date = "21. Oktober 2021" print("Hallo", username, "!")
print("Willkommen zur Vorlesung am", date)
Informatikgrundlagen für Humanmedizin – Funktionen und Rückgabewerte Herbst 2021 Böckenhauer, Komm 15 / 26
Analogie zu natürlichen Sprachen
def begruessung():
date = "21. Oktober 2021"
print("Hallo", username, "!")
print("Willkommen zur Vorlesung am", date)
username = input("Geben Sie Ihren Benutzernamen ein:") if username == "hjb" or username == "dkomm":
begruessung()
...
else:
print("Benutzer nicht bekannt.") ...
date = "21. Oktober 2021" print("Hallo", username, "!")
print("Willkommen zur Vorlesung am", date)
Analogie zu natürlichen Sprachen
def begruessung():
date = "21. Oktober 2021"
print("Hallo", username, "!")
print("Willkommen zur Vorlesung am", date)
username = input("Geben Sie Ihren Benutzernamen ein:") if username == "hjb" or username == "dkomm":
begruessung()
...
else:
print("Benutzer nicht bekannt.") ...
date = "21. Oktober 2021"
print("Hallo", username, "!")
print("Willkommen zur Vorlesung am", date)
Informatikgrundlagen für Humanmedizin – Funktionen und Rückgabewerte Herbst 2021 Böckenhauer, Komm 15 / 26
Analogie zu mathematischen Funktionen
f (x) = 2 · x + 1
Funktionen in Python
Parameter x wird Funktion übergeben Wert wird zurückgegeben mit return
def f(x): y = 2 * x + 1 return y def f(x):
return 2 * x + 1
return ohne Argument zum Beenden des Funktionsaufrufs
Analogie zu mathematischen Funktionen
f (x) = 2 · x + 1
Funktionen in Python
Parameter x wird Funktion übergeben Wert wird zurückgegeben mit return
def f(x): y = 2 * x + 1 return y def f(x):
return 2 * x + 1
return ohne Argument zum Beenden des Funktionsaufrufs
Informatikgrundlagen für Humanmedizin – Funktionen und Rückgabewerte Herbst 2021 Böckenhauer, Komm 16 / 26
Analogie zu mathematischen Funktionen
f (x) = 2 · x + 1
Funktionen in Python
Parameter x wird Funktion übergeben Wert wird zurückgegeben mit return
def f(x):
y = 2 * x + 1 return y
def f(x):
return 2 * x + 1
return ohne Argument zum Beenden des Funktionsaufrufs
Analogie zu mathematischen Funktionen
f (x) = 2 · x + 1
Funktionen in Python
Parameter x wird Funktion übergeben Wert wird zurückgegeben mit return
def f(x):
y = 2 * x + 1 return y def f(x):
return 2 * x + 1
return ohne Argument zum Beenden des Funktionsaufrufs
Informatikgrundlagen für Humanmedizin – Funktionen und Rückgabewerte Herbst 2021 Böckenhauer, Komm 16 / 26
Analogie zu mathematischen Funktionen
f (x) = 2 · x + 1
Funktionen in Python
Parameter x wird Funktion übergeben Wert wird zurückgegeben mit return
def f(x):
y = 2 * x + 1 return y def f(x):
return 2 * x + 1
Analogie zu mathematischen Funktionen
def f(x):
return 2 * x + 1
Durch die Verwendung von return repräsentiert der Funktionsaufruf den entsprechenden Wert; der Aufruf wird damit beendet
print(f(5)) erzeugt Ausgabe 11 z = f(6) weist z den Wert 13 zu
z = 3 * f(2) + f(4) weist z den Wert 24 zu
b = (f(10) > 20) weist b den Booleschen Wert True zu
Informatikgrundlagen für Humanmedizin – Funktionen und Rückgabewerte Herbst 2021 Böckenhauer, Komm 17 / 26
Analogie zu mathematischen Funktionen
def f(x):
return 2 * x + 1
Durch die Verwendung von return repräsentiert der Funktionsaufruf den entsprechenden Wert; der Aufruf wird damit beendet
print(f(5)) erzeugt Ausgabe 11 z = f(6) weist z den Wert 13 zu
z = 3 * f(2) + f(4) weist z den Wert 24 zu
b = (f(10) > 20) weist b den Booleschen Wert True zu
Analogie zu mathematischen Funktionen
def f(x):
return 2 * x + 1
Durch die Verwendung von return repräsentiert der Funktionsaufruf den entsprechenden Wert; der Aufruf wird damit beendet
print(f(5)) erzeugt Ausgabe 11
z = f(6) weist z den Wert 13 zu
z = 3 * f(2) + f(4) weist z den Wert 24 zu
b = (f(10) > 20) weist b den Booleschen Wert True zu
Informatikgrundlagen für Humanmedizin – Funktionen und Rückgabewerte Herbst 2021 Böckenhauer, Komm 17 / 26
Analogie zu mathematischen Funktionen
def f(x):
return 2 * x + 1
Durch die Verwendung von return repräsentiert der Funktionsaufruf den entsprechenden Wert; der Aufruf wird damit beendet
print(f(5)) erzeugt Ausgabe 11 z = f(6) weist z den Wert 13 zu
z = 3 * f(2) + f(4) weist z den Wert 24 zu
b = (f(10) > 20) weist b den Booleschen Wert True zu
Analogie zu mathematischen Funktionen
def f(x):
return 2 * x + 1
Durch die Verwendung von return repräsentiert der Funktionsaufruf den entsprechenden Wert; der Aufruf wird damit beendet
print(f(5)) erzeugt Ausgabe 11 z = f(6) weist z den Wert 13 zu
z = 3 * f(2) + f(4) weist z den Wert 24 zu
b = (f(10) > 20) weist b den Booleschen Wert True zu
Informatikgrundlagen für Humanmedizin – Funktionen und Rückgabewerte Herbst 2021 Böckenhauer, Komm 17 / 26
Funktionen mit Parametern
def checkuser(givenname):
validnames = [ "dbert", "dimant", "odudler", "fafrei", "shorvath", "ssteiner" ] if givenname in validnames:
return True else:
return False
username = input("Geben Sie Ihren Benutzernamen ein:") if checkuser(username) == True:
print("Willkommen", username)
password = input("Geben Sie Ihr Passwort ein:") ...
else:
print("Benutzername nicht gefunden.")
Funktionen mit Parametern
def checkuser(givenname):
validnames = [ "dbert", "dimant", "odudler", "fafrei", "shorvath", "ssteiner" ] if givenname in validnames:
return True else:
return False
username = input("Geben Sie Ihren Benutzernamen ein:") if checkuser(username) == True:
print("Willkommen", username)
password = input("Geben Sie Ihr Passwort ein:") ...
else:
print("Benutzername nicht gefunden.")
Informatikgrundlagen für Humanmedizin – Funktionen und Rückgabewerte Herbst 2021 Böckenhauer, Komm 18 / 26
Funktionen mit Parametern
def checkuser(givenname):
validnames = [ "dbert", "dimant", "odudler", "fafrei", "shorvath", "ssteiner" ] if givenname in validnames:
return True else:
return False
username = input("Geben Sie Ihren Benutzernamen ein:") if checkuser(username) == True:
print("Willkommen", username)
password = input("Geben Sie Ihr Passwort ein:") ...
else:
print("Benutzername nicht gefunden.")
Funktionen mit Parametern
def checkuser(givenname):
validnames = [ "dbert", "dimant", "odudler", "fafrei", "shorvath", "ssteiner" ] if givenname in validnames:
return True else:
return False
username = input("Geben Sie Ihren Benutzernamen ein:") if checkuser(username) == True:
print("Willkommen", username)
password = input("Geben Sie Ihr Passwort ein:") ...
else:
print("Benutzername nicht gefunden.")
Informatikgrundlagen für Humanmedizin – Funktionen und Rückgabewerte Herbst 2021 Böckenhauer, Komm 18 / 26
Funktionen mit Parametern
username = input(”Geben Sie Ihren Benutzernamen ein:”)
Funktionen mit Parametern
username = input(”Geben Sie Ihren Benutzernamen ein:”) Geben Sie Ihren Benutzernamen ein:
Informatikgrundlagen für Humanmedizin – Funktionen und Rückgabewerte Herbst 2021 Böckenhauer, Komm 19 / 26
Funktionen mit Parametern
username = input(”Geben Sie Ihren Benutzernamen ein:”)
Geben Sie Ihren Benutzernamen ein: dkomm
Funktionen mit Parametern
username = input(”Geben Sie Ihren Benutzernamen ein:”) Geben Sie Ihren Benutzernamen ein: dkomm
username = dkomm
Informatikgrundlagen für Humanmedizin – Funktionen und Rückgabewerte Herbst 2021 Böckenhauer, Komm 19 / 26
Funktionen mit Parametern
username = input(”Geben Sie Ihren Benutzernamen ein:”) Geben Sie Ihren Benutzernamen ein: dkomm
username = dkomm
if checkuser(username) == True:
Funktionen mit Parametern
username = input(”Geben Sie Ihren Benutzernamen ein:”) Geben Sie Ihren Benutzernamen ein: dkomm
username = dkomm
if checkuser( dkomm ) == True:
Informatikgrundlagen für Humanmedizin – Funktionen und Rückgabewerte Herbst 2021 Böckenhauer, Komm 19 / 26
Funktionen mit Parametern
username = input(”Geben Sie Ihren Benutzernamen ein:”) Geben Sie Ihren Benutzernamen ein: dkomm
username = dkomm
if checkuser( dkomm ) == True:
def checkuser(givenname):
validnames = [ ”dbert”, ”dimant”, ”odudler”, ”fafrei”, ”shorvath”, ”ssteiner” ] if givenname in validnames:
return True else:
return False
Funktionen mit Parametern
username = input(”Geben Sie Ihren Benutzernamen ein:”) Geben Sie Ihren Benutzernamen ein: dkomm
username = dkomm
if checkuser( dkomm ) == True:
def checkuser(dkomm):
validnames = [ ”dbert”, ”dimant”, ”odudler”, ”fafrei”, ”shorvath”, ”ssteiner” ] if givenname in validnames:
return True else:
return False
Informatikgrundlagen für Humanmedizin – Funktionen und Rückgabewerte Herbst 2021 Böckenhauer, Komm 19 / 26
Funktionen mit Parametern
username = input(”Geben Sie Ihren Benutzernamen ein:”) Geben Sie Ihren Benutzernamen ein: dkomm
username = dkomm
if checkuser( dkomm ) == True:
def checkuser(dkomm):
validnames = [ ”dbert”, ”dimant”, ”odudler”, ”fafrei”, ”shorvath”, ”ssteiner” ] if dkomm in validnames:
return True else:
return False
Funktionen mit Parametern
username = input(”Geben Sie Ihren Benutzernamen ein:”) Geben Sie Ihren Benutzernamen ein: dkomm
username = dkomm
if checkuser( dkomm ) == True:
def checkuser(dkomm):
validnames = [ ”dbert”, ”dimant”, ”odudler”, ”fafrei”, ”shorvath”, ”ssteiner” ] if dkomm in validnames:
return True else:
return False
Informatikgrundlagen für Humanmedizin – Funktionen und Rückgabewerte Herbst 2021 Böckenhauer, Komm 19 / 26
Funktionen mit Parametern
username = input(”Geben Sie Ihren Benutzernamen ein:”) Geben Sie Ihren Benutzernamen ein: dkomm
username = dkomm
if checkuser( dkomm ) == True:
def checkuser(dkomm):
validnames = [ ”dbert”, ”dimant”, ”odudler”, ”fafrei”, ”shorvath”, ”ssteiner” ] if dkomm in validnames:
return True else:
return False
if checkuser(dkomm ) == True:
Funktionen mit Parametern
username = input(”Geben Sie Ihren Benutzernamen ein:”) Geben Sie Ihren Benutzernamen ein: dkomm
username = dkomm
if checkuser( dkomm ) == True:
def checkuser(dkomm):
validnames = [ ”dbert”, ”dimant”, ”odudler”, ”fafrei”, ”shorvath”, ”ssteiner” ] if dkomm in validnames:
return True else:
return False
if False == True:
Informatikgrundlagen für Humanmedizin – Funktionen und Rückgabewerte Herbst 2021 Böckenhauer, Komm 19 / 26
Funktionen mit Parametern
username = input(”Geben Sie Ihren Benutzernamen ein:”) Geben Sie Ihren Benutzernamen ein: dkomm
username = dkomm
if checkuser( dkomm ) == True:
def checkuser(dkomm):
validnames = [ ”dbert”, ”dimant”, ”odudler”, ”fafrei”, ”shorvath”, ”ssteiner” ] if dkomm in validnames:
return True else:
return False
if False == True:
Definition von Funktionen
Funktion muss definiert werden, bevor sie verwendet werden kann
def f(x):
return 2 * x + 1 print(f(2))
funktioniert, aber nicht. . .
print(f(2)) def f(x):
return 2 * x + 1
NameError: name ’f’ is not defined
Informatikgrundlagen für Humanmedizin – Funktionen und Rückgabewerte Herbst 2021 Böckenhauer, Komm 20 / 26
Definition von Funktionen
Funktion muss definiert werden, bevor sie verwendet werden kann
def f(x):
return 2 * x + 1 print(f(2))
funktioniert, aber nicht. . .
print(f(2)) def f(x):
return 2 * x + 1
NameError: name ’f’ is not defined
Definition von Funktionen
Funktion muss definiert werden, bevor sie verwendet werden kann
def f(x):
return 2 * x + 1 print(f(2))
funktioniert, aber nicht. . .
print(f(2)) def f(x):
return 2 * x + 1
NameError: name ’f’ is not defined
Informatikgrundlagen für Humanmedizin – Funktionen und Rückgabewerte Herbst 2021 Böckenhauer, Komm 20 / 26
Definition von Funktionen
Funktion muss definiert werden, bevor sie verwendet werden kann
def f(x):
return 2 * x + 1 print(f(2))
funktioniert, aber nicht. . .
print(f(2)) def f(x):
return 2 * x + 1
Funktionen
Beispiel – Keksrechner
Beispiel – Keksrechner
kinder = int(input("Anzahl Kinder:")) kekse = int(input("Anzahl Kekse:"))
print("Jedes Kind kriegt", kekse // kinder, "Kekse") print("Papa kriegt", kekse % kinder, "Kekse")
Wir wollen sicherstellen, dass kinder positiv ist und jedes Kind mindestens
einen Keks kriegt
Beispiel – Keksrechner
kinder = int(input("Anzahl Kinder:")) kekse = int(input("Anzahl Kekse:"))
print("Jedes Kind kriegt", kekse // kinder, "Kekse") print("Papa kriegt", kekse % kinder, "Kekse")
Wir wollen sicherstellen, dass kinder positiv ist und jedes Kind mindestens einen Keks kriegt
Informatikgrundlagen für Humanmedizin – Funktionen und Rückgabewerte Herbst 2021 Böckenhauer, Komm 21 / 26
Keksrechner – Eingabeprüfung
Aus . . .
kinder = int(input("Anzahl Kinder:"))
. . . wird demnach
while True:
kinder = int(input("Anzahl Kinder:")) if kinder >= 1:
break else:
print("Wert muss mindestens 1 sein")
Analog dazu müssen wir prüfen, dass kekse >= kinder ist
Keksrechner – Eingabeprüfung
Aus . . .
kinder = int(input("Anzahl Kinder:"))
. . . wird demnach
while True:
kinder = int(input("Anzahl Kinder:")) if kinder >= 1:
break else:
print("Wert muss mindestens 1 sein")
Analog dazu müssen wir prüfen, dass kekse >= kinder ist
Informatikgrundlagen für Humanmedizin – Funktionen und Rückgabewerte Herbst 2021 Böckenhauer, Komm 22 / 26
Keksrechner – Eingabeprüfung
Aus . . .
kinder = int(input("Anzahl Kinder:"))
. . . wird demnach
while True:
kinder = int(input("Anzahl Kinder:")) if kinder >= 1:
break else:
print("Wert muss mindestens 1 sein")
Analog dazu müssen wir prüfen, dass kekse >= kinder ist
Keksrechner – Eingabeprüfung
Aus . . .
kinder = int(input("Anzahl Kinder:"))
. . . wird demnach
while True:
kinder = int(input("Anzahl Kinder:")) if kinder >= 1:
break else:
print("Wert muss mindestens 1 sein")
Analog dazu müssen wir prüfen, dass kekse >= kinder ist
Informatikgrundlagen für Humanmedizin – Funktionen und Rückgabewerte Herbst 2021 Böckenhauer, Komm 22 / 26
Keksrechner – Es wird unübersichtlich
while True:
kinder = int(input("Anzahl Kinder:")) if kinder >= 1:
break else:
print("Wert muss mindestens 1 sein")
while True:
kekse = int(input("Anzahl Kekse:")) if kekse >= kinder:
break else:
print(”Wert muss mindestens”, kinder, ”sein”)
print("Jedes Kind kriegt", kekse // kinder, "Kekse") print("Papa kriegt", kekse % kinder, "Kekse")
Anzahl Kinder einlesen und prüfen
Anzahl Kekse
einlesen und prüfen
Keksrechner – Es wird unübersichtlich
while True:
kinder = int(input("Anzahl Kinder:")) if kinder >= 1:
break else:
print("Wert muss mindestens 1 sein")
while True:
kekse = int(input("Anzahl Kekse:")) if kekse >= kinder:
break else:
print(”Wert muss mindestens”, kinder, ”sein”)
print("Jedes Kind kriegt", kekse // kinder, "Kekse") print("Papa kriegt", kekse % kinder, "Kekse")
Anzahl Kinder einlesen und prüfen
Anzahl Kekse einlesen und prüfen
Informatikgrundlagen für Humanmedizin – Funktionen und Rückgabewerte Herbst 2021 Böckenhauer, Komm 23 / 26
Keksrechner – Es wird unübersichtlich
while True:
kinder = int(input("Anzahl Kinder:")) if kinder >= 1:
break else:
print("Wert muss mindestens 1 sein")
while True:
kekse = int(input("Anzahl Kekse:")) if kekse >= kinder:
break else:
print(”Wert muss mindestens”, kinder, ”sein”)
print("Jedes Kind kriegt", kekse // kinder, "Kekse") print("Papa kriegt", kekse % kinder, "Kekse")
Anzahl Kinder einlesen und prüfen
Anzahl Kekse
einlesen und prüfen
Keksrechner – Erkenntnisse
Die beiden Code-Fragmente sind fast identisch
Folgende Aspekte sind unterschiedlich: Der Prompt, also "Kinder:" vs. "Kekse:" Das Minimum, also 1 vs. kinder
Wir können das Code-Fragment in eine Funktion auslagern und somit wiederverwenden
Dabei müssen wir die unterschiedlichen Aspekte parametrisieren
Informatikgrundlagen für Humanmedizin – Funktionen und Rückgabewerte Herbst 2021 Böckenhauer, Komm 24 / 26
Keksrechner – Erkenntnisse
Die beiden Code-Fragmente sind fast identisch Folgende Aspekte sind unterschiedlich:
Der Prompt, also "Kinder:" vs. "Kekse:"
Das Minimum, also 1 vs. kinder
Wir können das Code-Fragment in eine Funktion auslagern und somit wiederverwenden
Dabei müssen wir die unterschiedlichen Aspekte parametrisieren
Keksrechner – Erkenntnisse
Die beiden Code-Fragmente sind fast identisch Folgende Aspekte sind unterschiedlich:
Der Prompt, also "Kinder:" vs. "Kekse:"
Das Minimum, also 1 vs. kinder
Wir können das Code-Fragment in eine Funktion auslagern und somit wiederverwenden
Dabei müssen wir die unterschiedlichen Aspekte parametrisieren
Informatikgrundlagen für Humanmedizin – Funktionen und Rückgabewerte Herbst 2021 Böckenhauer, Komm 24 / 26
Keksrechner – Erkenntnisse
Die beiden Code-Fragmente sind fast identisch Folgende Aspekte sind unterschiedlich:
Der Prompt, also "Kinder:" vs. "Kekse:"
Das Minimum, also 1 vs. kinder
Wir können das Code-Fragment in eine Funktion auslagern und somit wiederverwenden
Dabei müssen wir die unterschiedlichen Aspekte parametrisieren
Übung – Keksrechner
Schreiben Sie eine Funktion, die
zwei Parameter prompt und minimum erhält den User bittet, eine Zahl einzugeben
die Eingabe per return zurückgibt, wenn sie mindestens minimum ist
sonst erneut um eine Eingabe bittet
Verwenden Sie Ihre Funktion im Keksrechner
Informatikgrundlagen für Humanmedizin – Funktionen und Rückgabewerte Herbst 2021 Böckenhauer, Komm 25 / 26