• Keine Ergebnisse gefunden

Hans-Joachim Böckenhauer Dennis Komm

N/A
N/A
Protected

Academic year: 2022

Aktie "Hans-Joachim Böckenhauer Dennis Komm"

Copied!
105
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Departement Informatik

Informatikgrundlagen

Funktionen

Hans-Joachim Böckenhauer Dennis Komm

Herbst 2021 – 21. Oktober 2021

(2)

Kontrollstrukturen

Terminierung

(3)

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

(4)

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

(5)

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

(6)

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

(7)

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

(8)

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

(9)

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

(10)

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]

(11)

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

(12)

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)

(13)

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

(14)

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)

(15)

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

(16)

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)

(17)

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

(18)

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)

(19)

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

(20)

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)

(21)

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

(22)

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)

(23)

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

(24)

Ü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

(25)

Ü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

(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

(27)

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

(28)

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]

(29)

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

(30)

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]

(31)

Kontrollanweisungen

Kontrollfluss

(32)

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

(33)

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

(34)

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

(35)

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

(36)

Kontrollfluss – if-else

condition

statement1

statement2

true

false

if condition:

statement1 else:

statement2

(37)

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

(38)

Kontrollfluss – if-else

condition

statement1

statement2

true

false

if condition:

statement1 else:

statement2

(39)

Kontrollfluss – while

condition

statement

true

false

while condition:

statement

Informatikgrundlagen für Humanmedizin – Funktionen und Rückgabewerte Herbst 2021 Böckenhauer, Komm 11 / 26

(40)

Kontrollfluss – while

condition

statement

true

false

while condition:

statement

(41)

Kontrollfluss – while

condition

statement

true

false

while condition:

statement

Informatikgrundlagen für Humanmedizin – Funktionen und Rückgabewerte Herbst 2021 Böckenhauer, Komm 11 / 26

(42)

Kontrollfluss – while

condition

statement

true

false

while condition:

statement

(43)

Kontrollfluss break in while -Schleife

condition

statement

break

Informatikgrundlagen für Humanmedizin – Funktionen und Rückgabewerte Herbst 2021 Böckenhauer, Komm 12 / 26

(44)

Kontrollfluss break in while -Schleife

condition

statement

break

(45)

Funktionen

(46)

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()

(47)

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

(48)

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()

(49)

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

(50)

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

(51)

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

(52)

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

(53)

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

(54)

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)

(55)

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

(56)

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)

(57)

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

(58)

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

(59)

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

(60)

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

(61)

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

(62)

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

(63)

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

(64)

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

(65)

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

(66)

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

(67)

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

(68)

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.")

(69)

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

(70)

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.")

(71)

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

(72)

Funktionen mit Parametern

username = input(”Geben Sie Ihren Benutzernamen ein:”)

(73)

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

(74)

Funktionen mit Parametern

username = input(”Geben Sie Ihren Benutzernamen ein:”)

Geben Sie Ihren Benutzernamen ein: dkomm

(75)

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

(76)

Funktionen mit Parametern

username = input(”Geben Sie Ihren Benutzernamen ein:”) Geben Sie Ihren Benutzernamen ein: dkomm

username = dkomm

if checkuser(username) == True:

(77)

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

(78)

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

(79)

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

(80)

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

(81)

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

(82)

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:

(83)

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

(84)

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:

(85)

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

(86)

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

(87)

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

(88)

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

(89)

Funktionen

Beispiel – Keksrechner

(90)

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

(91)

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

(92)

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

(93)

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

(94)

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

(95)

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

(96)

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

(97)

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

(98)

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

(99)

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

(100)

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

(101)

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

(102)

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

(103)

Ü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

(104)

Übung – Keksrechner

def checkinput(prompt, minimum):

while True:

x = int(input(prompt)) if x >= minimum:

return x else:

print(”Wert muss mindestens”, minimum, ”sein”)

kinder = checkinput("Anzahl Kinder:", 1) kekse = checkinput("Anzahl Kekse:", kinder)

print("Jedes Kind kriegt", kekse // kinder, "Kekse")

print("Papa kriegt", kekse % kinder, "Kekse")

(105)

Vielen Dank

für die Aufmerksamkeit

Referenzen

ÄHNLICHE DOKUMENTE

Schreiben Sie ein Programm, das die Benutzerin nach einem Z¨ ahler und einem Nenner fragt und dann den Z¨ ahler ganzzahlig durch den Nenner teilt. Hier ist ein Beispiel

Der zweite Teil entspricht dem Mittelteil mit ¨ andernden Zahlen und der dritte Teil ist wiederum wie der erste Teil die korrekte Anzahl Nullen auf der linken Seite. Teil 1 und 3

Boolesche Ausdrücke können mögliche Werte F oder T annehmen F entspricht «falsch». T

Informatikgrundlagen für Humanmedizin – Funktionen und Rückgabewerte Herbst 2021 Böckenhauer, Komm 1 /

Informatikgrundlagen für Humanmedizin – Daten einlesen und Sortieren Herbst 2021 Böckenhauer, Komm 7 / 28... Angenommen, x ist durch

Informatikgrundlagen für Humanmedizin – Daten einlesen und Sortieren Herbst 2021 Böckenhauer, Komm 4 / 282. Ein

Informatikgrundlagen für Humanmedizin – numpy, matplotlib Herbst 2021 Böckenhauer, Komm 9 / 25.. Das Modul numpy. numpy ist Grundlage für viele weitere

Informatikgrundlagen für Humanmedizin – pandas Herbst 2021 Böckenhauer, Komm 4 / 18... Komplexität