• 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!
116
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Departement Informatik

Informatikgrundlagen

Kontrollstrukturen

Hans-Joachim Böckenhauer Dennis Komm

Herbst 2021 – 20. Oktober 2021

(2)

Zeichenketten (Strings)

Wiederholung

(3)

Zeichenketten (Strings)

Zeichenketten sind «Listen von Zeichen» (es gibt Unterschiede) Zeichen entsprechen (grösstenteils) Tasten auf der Tastatur

Strings stehen in Anführungszeichen

Zugriff auf einzelne Zeichen mit eckigen Klammern («read-only») Zeichenkette wort = "HALLO WELT"

wort[0] ist erster Buchstabe wort[1] ist zweiter Buchstabe . . .

wort[len(wort)-1] ist letzter Buchstabe

Informatikgrundlagen für Humanmedizin – Kontrollstrukturen Herbst 2021 Böckenhauer, Komm 1 / 36

(4)

Zeichenketten – Operatoren

Addition

Zahlen: Arithmetische Operation

Listen und Strings: Zusammenfügen (bei Strings existiert kein append)

daten = [1, 4, 6]

daten2 = daten + [5]

satz = "Guten Tag"

satz2 = satz + ", Urs"

satz3 = satz2 + "."

Multiplikation

Zahlen: Arithmetische Operation Listen und Strings: Zusammenfügen

daten = [2, 3] * 5

satz = "HA" * 3

(5)

Zeichenketten – Operatoren

Addition

Zahlen: Arithmetische Operation

Listen und Strings: Zusammenfügen (bei Strings existiert kein append)

daten = [1, 4, 6]

daten2 = daten + [5]

satz = "Guten Tag"

satz2 = satz + ", Urs"

satz3 = satz2 + "."

Multiplikation

Zahlen: Arithmetische Operation Listen und Strings: Zusammenfügen

daten = [2, 3] * 5 satz = "HA" * 3

Informatikgrundlagen für Humanmedizin – Kontrollstrukturen Herbst 2021 Böckenhauer, Komm 2 / 36

(6)

Zeichen – Die Unicode-Tabelle

0–18 19–37 38–56 57–75 76–94 95–113 114–127

Dez. Zeichen Dez. Zeichen Dez. Zeichen Dez. Zeichen Dez. Zeichen Dez. Zeichen Dez. Zeichen

0 NUL 19 DC3 38 & 57 9 76 L 95 _ 114 r

1 SOH 20 DC4 39 ’ 58 : 77 M 96 ‘ 115 s

2 STX 21 NAK 40 ( 59 ; 78 N 97 a 116 t

3 ETX 22 SYN 41 ) 60 < 79 O 98 b 117 u

4 EOT 23 ETB 42 * 61 = 80 P 99 c 118 v

5 ENQ 24 CAN 43 + 62 > 81 Q 100 d 119 w

6 ACK 25 EM 44 , 63 ? 82 R 101 e 120 x

7 BEL 26 SUB 45 - 64 @ 83 S 102 f 121 y

8 BS 27 ESC 46 . 65 A 84 T 103 g 122 z

9 HT 28 FS 47 / 66 B 85 U 104 h 123 {

10 LF 29 GS 48 0 67 C 86 V 105 i 124 |

11 VT 30 RS 49 1 68 D 87 W 106 j 125 }

12 FF 31 US 50 2 69 E 88 X 107 k 126 ~

13 CR 32 SP 51 3 70 F 89 Y 108 l 127 DEL

14 SO 33 ! 52 4 71 G 90 Z 109 m . . .

15 SI 34 “ 53 5 72 H 91 [ 110 n

16 DLE 35 # 54 6 73 I 92 \ 111 o

17 DC1 36 $ 55 7 74 J 93 ] 112 p

18 DC2 37 % 56 8 75 K 94 ˆ 113 q

(7)

Zeichen – Die Unicode-Tabelle

Verwende Funktionen ord() und chr() ord(x) gibt Position von Zeichen x in Unicode-Tabelle an chr(y) gibt Zeichen an Position y in Unicode-Tabelle an

x = input("Geben Sie ein Zeichen ein: ")

print("Das Zeichen", x, "steht an Stelle", ord(x))

Informatikgrundlagen für Humanmedizin – Kontrollstrukturen Herbst 2021 Böckenhauer, Komm 4 / 36

(8)

Übung – Buchstaben ausgeben

Schreiben Sie ein Programm, das alle 26 Grossbuchstaben ausgibt dazu eine for-Schleife verwendet Zur Erinnerung

Der Buchstabe A steht an Stelle 65 in

der Unicode-Tabelle

(9)

Übung – Buchstaben ausgeben

for i in range(65, 91):

print(chr(i))

Informatikgrundlagen für Humanmedizin – Kontrollstrukturen Herbst 2021 Böckenhauer, Komm 6 / 36

(10)

Cäsar-Verschlüsselung

(11)

Informatikgrundlagen für Humanmedizin – Kontrollstrukturen Herbst 2021 Böckenhauer, Komm 7 / 36

(12)

Gallia est omnis divisa in partes tres, quarum unam incolunt Belgae, aliam Aquitani, tertiam, qui ipsorum lingua Celtae,

nostra Galli appellantur.

(13)

Gallia est omnis divisa in partes tres, quarum unam incolunt Belgae, aliam Aquitani, tertiam, qui ipsorum lingua Celtae,

nostra Galli appellantur.

Informatikgrundlagen für Humanmedizin – Kontrollstrukturen Herbst 2021 Böckenhauer, Komm 7 / 36

(14)

Unsicherer Kanal

(15)

Symmetrische Verschlüsselung

Sender Empfänger

Klartext

Chiffrierung

Geheimtext Übertragungsmedium

(Bote, Internet, . . . ) Geheimtext Dechiffrierung

Klartext

Informatikgrundlagen für Humanmedizin – Kontrollstrukturen Herbst 2021 Böckenhauer, Komm 8 / 36

(16)

Cäsar-Verschlüsselung

Situation

Parteien A und B wollen über unsicheren Kanal diesmal mittels Cäsar-Verschlüsselung kommunizieren

Gemeinsamer Schlüssel k als Zahl zwischen 1 und 25

A verschlüsselt Nachricht, indem k zu jedem Buchstaben addiert wird A sendet verschlüsselte Nachricht an B

B entschlüsselt Nachricht, indem k von jedem Buchstaben abgezogen

wird

(17)

Cäsar-Verschlüsselung

Verschiebe Buchstaben um festen Wert k durch Addition von k

Beispiel

A B C D E F G H I J K L M

W X Y Z A B C D E F G H I

N O P Q R S T U V W X Y Z

J K L M N O P Q R S T U V

Klartext: HALLO WELT

Verschlüsselter Text: DWHHK SAHP

Informatikgrundlagen für Humanmedizin – Kontrollstrukturen Herbst 2021 Böckenhauer, Komm 10 / 36

(18)

Cäsar-Verschlüsselung

Verschiebe Buchstaben um festen Wert k durch Addition von k Beispiel

A B C D E F G H I J K L M

W X Y Z A B C D E F G H I

N O P Q R S T U V W X Y Z

J K L M N O P Q R S T U V

Klartext: HALLO WELT

Verschlüsselter Text: DWHHK SAHP

(19)

Cäsar-Verschlüsselung

Verschiebe Buchstaben um festen Wert k durch Addition von k Beispiel

A B C D E F G H I J K L M

W X Y Z A B C D E F G H I

N O P Q R S T U V W X Y Z

J K L M N O P Q R S T U V

Klartext: HALLO WELT

Verschlüsselter Text: DWHHK SAHP

Informatikgrundlagen für Humanmedizin – Kontrollstrukturen Herbst 2021 Böckenhauer, Komm 10 / 36

(20)

Cäsar-Verschlüsselung

1. Eingegebener Buchstabe ist Unicode-Zeichen von A bis Z

A B . . . W X Y Z

65 66 . . . 87 88 89 90

2. Ziehe 65 ab, dann ist das Resultat zwischen 0 und 25

A B . . . W X Y Z

0 1 . . . 22 23 24 25

3. Addiere nun Schlüssel (zum Beispiel 3) und rechne modulo 26

A B . . . W X Y Z

3 4 . . . 25 0 1 2

4. Addiere nun wieder 65 zum Ergebnis

A B . . . W X Y Z

68 69 . . . 90 65 66 67

(21)

Cäsar-Verschlüsselung

1. Eingegebener Buchstabe ist Unicode-Zeichen von A bis Z

A B . . . W X Y Z

65 66 . . . 87 88 89 90

2. Ziehe 65 ab, dann ist das Resultat zwischen 0 und 25

A B . . . W X Y Z

0 1 . . . 22 23 24 25

3. Addiere nun Schlüssel (zum Beispiel 3) und rechne modulo 26

A B . . . W X Y Z

3 4 . . . 25 0 1 2

4. Addiere nun wieder 65 zum Ergebnis

A B . . . W X Y Z

68 69 . . . 90 65 66 67

Informatikgrundlagen für Humanmedizin – Kontrollstrukturen Herbst 2021 Böckenhauer, Komm 11 / 36

(22)

Cäsar-Verschlüsselung

1. Eingegebener Buchstabe ist Unicode-Zeichen von A bis Z

A B . . . W X Y Z

65 66 . . . 87 88 89 90

2. Ziehe 65 ab, dann ist das Resultat zwischen 0 und 25

A B . . . W X Y Z

0 1 . . . 22 23 24 25

3. Addiere nun Schlüssel (zum Beispiel 3) und rechne modulo 26

A B . . . W X Y Z

3 4 . . . 25 0 1 2

4. Addiere nun wieder 65 zum Ergebnis

A B . . . W X Y Z

68 69 . . . 90 65 66 67

(23)

Cäsar-Verschlüsselung

1. Eingegebener Buchstabe ist Unicode-Zeichen von A bis Z

A B . . . W X Y Z

65 66 . . . 87 88 89 90

2. Ziehe 65 ab, dann ist das Resultat zwischen 0 und 25

A B . . . W X Y Z

0 1 . . . 22 23 24 25

3. Addiere nun Schlüssel (zum Beispiel 3) und rechne modulo 26

A B . . . W X Y Z

3 4 . . . 25 0 1 2

4. Addiere nun wieder 65 zum Ergebnis

A B . . . W X Y Z

68 69 . . . 90 65 66 67

Informatikgrundlagen für Humanmedizin – Kontrollstrukturen Herbst 2021 Böckenhauer, Komm 11 / 36

(24)

Division mit Rest (Modulo-Rechnen)

Mit «%» wird der Rest bei der ganzzahligen Division ausgegeben Analog wird mit “//” der Teil vor dem Komma ausgegeben

10 % 3 = 1, denn 9 = 3 · 3 10 % 4 = 2, denn 8 = 4 · 2 12 % 3 = 0, denn 12 = 4 · 3 11 // 5 = 2, denn 10 = 5 · 2 23 // 4 = 5, denn 20 = 4 · 5

Falls x % y == 0, dann wird x von y geteilt

(25)

Division mit Rest (Modulo-Rechnen)

Mit «%» wird der Rest bei der ganzzahligen Division ausgegeben Analog wird mit “//” der Teil vor dem Komma ausgegeben

10 % 3 = 1, denn 9 = 3 · 3 10 % 4 = 2, denn 8 = 4 · 2 12 % 3 = 0, denn 12 = 4 · 3 11 // 5 = 2, denn 10 = 5 · 2 23 // 4 = 5, denn 20 = 4 · 5

Falls x % y == 0, dann wird x von y geteilt

Informatikgrundlagen für Humanmedizin – Kontrollstrukturen Herbst 2021 Böckenhauer, Komm 12 / 36

(26)

Division mit Rest (Modulo-Rechnen)

Mit «%» wird der Rest bei der ganzzahligen Division ausgegeben Analog wird mit “//” der Teil vor dem Komma ausgegeben

10 % 3 = 1, denn 9 = 3 · 3 10 % 4 = 2, denn 8 = 4 · 2 12 % 3 = 0, denn 12 = 4 · 3 11 // 5 = 2, denn 10 = 5 · 2 23 // 4 = 5, denn 20 = 4 · 5

Falls x % y == 0, dann wird x von y geteilt

(27)

Übung – Cäsar-Entschlüsselung

Schreiben Sie ein Programm, das einen gegebenen String durchläuft jeden Buchstaben mit einem Schlüssel k entschlüsselt

dabei jeden Schlüssel k ausprobiert dafür folgende Formel verwendet:

e = (v − 65 − k) % 26 + 65

Entschlüsseln Sie DLUUQLTHUKSHBAOLBYLRHYBMANPIALZZJOVNNP

Informatikgrundlagen für Humanmedizin – Kontrollstrukturen Herbst 2021 Böckenhauer, Komm 13 / 36

(28)

Übung – Cäsar-Entschlüsselung

for k in range(0, 26):

for item in ciphertext:

print(chr((ord(item) - 65 - k) % 26 + 65), end="") print()

for k in range(0, 26):

for i in range(0, len(ciphertext)):

print(chr((ord(ciphertext[i]) - 65 - k) % 26 + 65), end="")

print()

(29)

Wahrheitswerte

Boolesche Werte und relationale Operatoren

(30)

Boolesche Werte und Variablen

Boolesche Ausdrücke können mögliche Werte F oder T annehmen

F entspricht «falsch» T entspricht «wahr»

George Boole [Wikimedia]

Boolesche Variablen in Python

repräsentieren «Wahrheitswerte» Wertebereich {False, True} Beispiel

b = True # Variable mit Wert True

(31)

Boolesche Werte und Variablen

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

T entspricht «wahr»

George Boole [Wikimedia]

Boolesche Variablen in Python

repräsentieren «Wahrheitswerte» Wertebereich {False, True} Beispiel

b = True # Variable mit Wert True

Informatikgrundlagen für Humanmedizin – Kontrollstrukturen Herbst 2021 Böckenhauer, Komm 15 / 36

(32)

Boolesche Werte und Variablen

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

T entspricht «wahr»

George Boole [Wikimedia]

Boolesche Variablen in Python

repräsentieren «Wahrheitswerte» Wertebereich {False, True} Beispiel

b = True # Variable mit Wert True

(33)

Boolesche Werte und Variablen

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

T entspricht «wahr»

George Boole [Wikimedia]

Boolesche Variablen in Python repräsentieren «Wahrheitswerte»

Wertebereich {False, True}

Beispiel

b = True # Variable mit Wert True

Informatikgrundlagen für Humanmedizin – Kontrollstrukturen Herbst 2021 Böckenhauer, Komm 15 / 36

(34)

Boolesche Werte und Variablen

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

T entspricht «wahr»

George Boole [Wikimedia]

Boolesche Variablen in Python repräsentieren «Wahrheitswerte»

Wertebereich {False, True}

Beispiel

b = True # Variable mit Wert True

(35)

Relationale Operatoren

x < y (kleiner als)

Zahlentyp × Zahlentyp → {False, True}

Informatikgrundlagen für Humanmedizin – Kontrollstrukturen Herbst 2021 Böckenhauer, Komm 16 / 36

(36)

Relationale Operatoren

x < y (kleiner als)

b = (1 < 3) # b =

(37)

Relationale Operatoren

x < y (kleiner als)

b = (1 < 3) # b = True

Informatikgrundlagen für Humanmedizin – Kontrollstrukturen Herbst 2021 Böckenhauer, Komm 16 / 36

(38)

Relationale Operatoren

x >= y (grösser gleich)

x = 0

b = (x >= 3) # b =

(39)

Relationale Operatoren

x >= y (grösser gleich)

x = 0

b = (x >= 3) # b = False

Informatikgrundlagen für Humanmedizin – Kontrollstrukturen Herbst 2021 Böckenhauer, Komm 16 / 36

(40)

Relationale Operatoren

x == y (gleich)

x = 4

b = (x % 3 == 1) # b =

(41)

Relationale Operatoren

x == y (gleich)

x = 4

b = (x % 3 == 1) # b = True

Informatikgrundlagen für Humanmedizin – Kontrollstrukturen Herbst 2021 Böckenhauer, Komm 16 / 36

(42)

Relationale Operatoren

x != y (ungleich)

x = 1

b = (x != 2 * x - 1) # b =

(43)

Relationale Operatoren

x != y (ungleich)

x = 1

b = (x != 2 * x - 1) # b = False

Informatikgrundlagen für Humanmedizin – Kontrollstrukturen Herbst 2021 Böckenhauer, Komm 16 / 36

(44)

Wahrheitswerte

Boolesche Funktionen und Logische Operatoren

(45)

Boolesche Funktionen in der Mathematik

Boolesche Funktion

f : {F, T} 2 → {F, T}

F entspricht «falsch»

T entspricht «wahr»

Informatikgrundlagen für Humanmedizin – Kontrollstrukturen Herbst 2021 Böckenhauer, Komm 17 / 36

(46)

ab

«Logisches Und»

f : {F, T} 2 → {F, T}

F entspricht «falsch»

T entspricht «wahr»

a b ab

F F F

F T F

T F F

T T T

(47)

Logischer Operator and

a and b (logisches Und)

{False, True} × {False, True}{False, True}

Informatikgrundlagen für Humanmedizin – Kontrollstrukturen Herbst 2021 Böckenhauer, Komm 19 / 36

(48)

Logischer Operator and

a and b (logisches Und)

n = -1 p = 3

c = (n < 0) and (0 < p) # c =

(49)

Logischer Operator and

a and b (logisches Und)

n = -1 p = 3

c = (n < 0) and (0 < p) # c = True

Informatikgrundlagen für Humanmedizin – Kontrollstrukturen Herbst 2021 Böckenhauer, Komm 19 / 36

(50)

ab

«Logisches Oder»

f : {F, T} 2 → {F, T}

F entspricht «falsch»

T entspricht «wahr»

a b ab

F F F

F T T

T F T

T T T

(51)

ab

«Logisches Oder»

f : {F, T} 2 → {F, T}

F entspricht «falsch»

T entspricht «wahr»

a b ab

F F F

F T T

T F T

T T T

Das logische Oder ist immer einschliessend: a oder b oder beide

Informatikgrundlagen für Humanmedizin – Kontrollstrukturen Herbst 2021 Böckenhauer, Komm 20 / 36

(52)

Logischer Operator or

a or b (logisches Oder)

{False, True} × {False, True}{False, True}

(53)

Logischer Operator or

a or b (logisches Oder)

n = 1 p = 0

c = (n < 0) or (0 < p) # c =

Informatikgrundlagen für Humanmedizin – Kontrollstrukturen Herbst 2021 Böckenhauer, Komm 21 / 36

(54)

Logischer Operator or

a or b (logisches Oder)

n = 1 p = 0

c = (n < 0) or (0 < p) # c = False

(55)

¬b

«Logisches Nicht»

f : {F, T} → {F, T}

F entspricht «falsch»

T entspricht «wahr»

b ¬b

F T T F

Informatikgrundlagen für Humanmedizin – Kontrollstrukturen Herbst 2021 Böckenhauer, Komm 22 / 36

(56)

Logischer Operator not

not b (logisches Nicht)

{False, True}{False, True}

(57)

Logischer Operator not

not b (logisches Nicht)

n = 1

a = not (n < 0) # a =

Informatikgrundlagen für Humanmedizin – Kontrollstrukturen Herbst 2021 Böckenhauer, Komm 23 / 36

(58)

Logischer Operator not

not b (logisches Nicht)

n = 1

a = not (n < 0) # a = True

(59)

Wahrheitswerte

Präzedenzen

(60)

Präzedenzen

not b and a

m

(not b) and a

(61)

Präzedenzen

not b and a m

(not b) and a

Informatikgrundlagen für Humanmedizin – Kontrollstrukturen Herbst 2021 Böckenhauer, Komm 24 / 36

(62)

Präzedenzen

a and b or c and d

m

(a and b) or (c and d)

(63)

Präzedenzen

a and b or c and d m

(a and b) or (c and d)

Informatikgrundlagen für Humanmedizin – Kontrollstrukturen Herbst 2021 Böckenhauer, Komm 24 / 36

(64)

Präzedenzen

a or b and c or d

m

a or (b and c) or d

(65)

Präzedenzen

a or b and c or d m

a or (b and c) or d

Informatikgrundlagen für Humanmedizin – Kontrollstrukturen Herbst 2021 Böckenhauer, Komm 24 / 36

(66)

Präzedenzen

b = 7 + x < y and y != 3 * z or not b

Am stärksten binden binäre arithmetische Operatoren (Punkt vor Strich) Diese binden stärker als relationale Operatoren

Diese binden stärker als der unäre logische Operator not

Diese binden stärker als binäre logische Operatoren (and vor or) Diese binden stärker als der Zuweisungsoperator

Oftmals ist es sinnvoll, Klammern zu setzen, die nicht unbedingt nötig sind

(67)

Präzedenzen

b = (7 + x) < y and y != (3 * z) or not b

Am stärksten binden binäre arithmetische Operatoren (Punkt vor Strich)

Diese binden stärker als relationale Operatoren

Diese binden stärker als der unäre logische Operator not

Diese binden stärker als binäre logische Operatoren (and vor or) Diese binden stärker als der Zuweisungsoperator

Oftmals ist es sinnvoll, Klammern zu setzen, die nicht unbedingt nötig sind

Informatikgrundlagen für Humanmedizin – Kontrollstrukturen Herbst 2021 Böckenhauer, Komm 25 / 36

(68)

Präzedenzen

b = ((7 + x) < y) and (y != (3 * z)) or not b

Am stärksten binden binäre arithmetische Operatoren (Punkt vor Strich) Diese binden stärker als relationale Operatoren

Diese binden stärker als der unäre logische Operator not

Diese binden stärker als binäre logische Operatoren (and vor or) Diese binden stärker als der Zuweisungsoperator

Oftmals ist es sinnvoll, Klammern zu setzen, die nicht unbedingt nötig sind

(69)

Präzedenzen

b = ((7 + x) < y) and (y != (3 * z)) or (not b)

Am stärksten binden binäre arithmetische Operatoren (Punkt vor Strich) Diese binden stärker als relationale Operatoren

Diese binden stärker als der unäre logische Operator not

Diese binden stärker als binäre logische Operatoren (and vor or) Diese binden stärker als der Zuweisungsoperator

Oftmals ist es sinnvoll, Klammern zu setzen, die nicht unbedingt nötig sind

Informatikgrundlagen für Humanmedizin – Kontrollstrukturen Herbst 2021 Böckenhauer, Komm 25 / 36

(70)

Präzedenzen

b = (((7 + x) < y) and (y != (3 * z))) or (not b)

Am stärksten binden binäre arithmetische Operatoren (Punkt vor Strich) Diese binden stärker als relationale Operatoren

Diese binden stärker als der unäre logische Operator not

Diese binden stärker als binäre logische Operatoren (and vor or)

Diese binden stärker als der Zuweisungsoperator

Oftmals ist es sinnvoll, Klammern zu setzen, die nicht unbedingt nötig sind

(71)

Präzedenzen

b = ((((7 + x) < y) and (y != (3 * z))) or (not b))

Am stärksten binden binäre arithmetische Operatoren (Punkt vor Strich) Diese binden stärker als relationale Operatoren

Diese binden stärker als der unäre logische Operator not

Diese binden stärker als binäre logische Operatoren (and vor or) Diese binden stärker als der Zuweisungsoperator

Oftmals ist es sinnvoll, Klammern zu setzen, die nicht unbedingt nötig sind

Informatikgrundlagen für Humanmedizin – Kontrollstrukturen Herbst 2021 Böckenhauer, Komm 25 / 36

(72)

Präzedenzen

b = ((((7 + x) < y) and (y != (3 * z))) or (not b))

Am stärksten binden binäre arithmetische Operatoren (Punkt vor Strich) Diese binden stärker als relationale Operatoren

Diese binden stärker als der unäre logische Operator not

Diese binden stärker als binäre logische Operatoren (and vor or) Diese binden stärker als der Zuweisungsoperator

Oftmals ist es sinnvoll, Klammern zu setzen, die nicht unbedingt nötig sind

(73)

Kontrollstrukturen

(74)

Kontrollfluss

Bisher. . .

linear (von oben nach unten)

for-Schleife für Wiederholung von Blöcken

x = int(input("Eingabe: "))

for i in range(1, x+1):

print(i*i)

(75)

Kontrollfluss

Bisher. . .

linear (von oben nach unten)

for-Schleife für Wiederholung von Blöcken

x = int(input("Eingabe: "))

for i in range(1, x+1):

print(i*i)

Informatikgrundlagen für Humanmedizin – Kontrollstrukturen Herbst 2021 Böckenhauer, Komm 26 / 36

(76)

Kontrollstrukturen

Auswahlanweisungen

(77)

Auswahlanweisungen

Realisieren Verzweigungen if-Anweisung

if-else-Anweisung

if-elif-else-Anweisung (später)

Informatikgrundlagen für Humanmedizin – Kontrollstrukturen Herbst 2021 Böckenhauer, Komm 27 / 36

(78)

if -Anweisung

if condition:

statement

x = int(input("Eingabe: ")) if x % 2 == 0:

print("gerade")

Ist condition wahr,

dann wird statement ausgeführt statement:

beliebige Anweisung

Rumpf der if -Anweisung

condition: Boolescher Ausdruck

(79)

if -Anweisung

if condition:

statement

x = int(input("Eingabe: ")) if x % 2 == 0:

print("gerade")

Ist condition wahr,

dann wird statement ausgeführt statement:

beliebige Anweisung Rumpf der if -Anweisung condition: Boolescher Ausdruck

Informatikgrundlagen für Humanmedizin – Kontrollstrukturen Herbst 2021 Böckenhauer, Komm 28 / 36

(80)

if -Anweisung

if condition:

statement

x = int(input("Eingabe: ")) if x % 2 == 0:

print("gerade")

Ist condition wahr,

dann wird statement ausgeführt

statement:

beliebige Anweisung

Rumpf der if -Anweisung

condition: Boolescher Ausdruck

(81)

if -Anweisung

if condition:

statement

x = int(input("Eingabe: ")) if x % 2 == 0:

print("gerade")

Ist condition wahr,

dann wird statement ausgeführt statement:

beliebige Anweisung Rumpf der if -Anweisung condition: Boolescher Ausdruck

Informatikgrundlagen für Humanmedizin – Kontrollstrukturen Herbst 2021 Böckenhauer, Komm 28 / 36

(82)

if-else -Anweisung

if condition:

statement1 else:

statement2

x = int(input("Eingabe: ")) if x % 2 == 0:

print("gerade") else:

print("ungerade")

Ist condition wahr,

so wird statement1 ausgeführt,

andernfalls wird statement2 ausgeführt

condition: Boolescher Ausdruck statement1:

Rumpf des if-Zweiges statement2:

Rumpf des else-Zweiges

(83)

if-else -Anweisung

if condition:

statement1 else:

statement2

x = int(input("Eingabe: ")) if x % 2 == 0:

print("gerade") else:

print("ungerade")

Ist condition wahr,

so wird statement1 ausgeführt,

andernfalls wird statement2 ausgeführt

condition: Boolescher Ausdruck statement1:

Rumpf des if-Zweiges statement2:

Rumpf des else-Zweiges

Informatikgrundlagen für Humanmedizin – Kontrollstrukturen Herbst 2021 Böckenhauer, Komm 29 / 36

(84)

if-else -Anweisung

if condition:

statement1 else:

statement2

x = int(input("Eingabe: ")) if x % 2 == 0:

print("gerade") else:

print("ungerade")

Ist condition wahr,

so wird statement1 ausgeführt,

andernfalls wird statement2 ausgeführt

condition: Boolescher Ausdruck statement1:

Rumpf des if-Zweiges statement2:

Rumpf des else-Zweiges

(85)

if-else -Anweisung

if condition:

statement1 else:

statement2

x = int(input("Eingabe: ")) if x % 2 == 0:

print("gerade") else:

print("ungerade")

Ist condition wahr,

so wird statement1 ausgeführt,

andernfalls wird statement2 ausgeführt

condition: Boolescher Ausdruck statement1:

Rumpf des if-Zweiges statement2:

Rumpf des else-Zweiges

Informatikgrundlagen für Humanmedizin – Kontrollstrukturen Herbst 2021 Böckenhauer, Komm 29 / 36

(86)

Layout

x = int(input("Eingabe: "))

if x % 2 == 0:

print("gerade") else:

print("ungerade")

(87)

Layout

x = int(input("Eingabe: "))

if x % 2 == 0:

print("gerade") else:

print("ungerade")

Einrückung

Einrückung

Informatikgrundlagen für Humanmedizin – Kontrollstrukturen Herbst 2021 Böckenhauer, Komm 30 / 36

(88)

if-else -Anweisung

Vorsicht bei == und =

(89)

if-else -Anweisung

Vorsicht bei == und =

Informatikgrundlagen für Humanmedizin – Kontrollstrukturen Herbst 2021 Böckenhauer, Komm 31 / 36

(90)

Kontrollstrukturen

while -Schleifen

(91)

while -Schleifen

while condition:

statement

statement:

beliebige Anweisung Rumpf der while -Schleife condition: Boolescher Ausdruck

Informatikgrundlagen für Humanmedizin – Kontrollstrukturen Herbst 2021 Böckenhauer, Komm 32 / 36

(92)

while -Schleifen

while condition:

statement Einrückung

statement:

beliebige Anweisung

Rumpf der while -Schleife

condition: Boolescher Ausdruck

(93)

while -Schleifen

while condition:

statement

condition wird ausgewertet True : Iteration beginnt

statement wird ausgeführt False : while -Schleife wird beendet

Informatikgrundlagen für Humanmedizin – Kontrollstrukturen Herbst 2021 Böckenhauer, Komm 33 / 36

(94)

while -Schleifen

s = 0 i = 1

while i <= 2:

s = s + i i = i + 1

i condition s

(95)

while -Schleifen

s = 0 i = 1

while i <= 2:

s = s + i i = i + 1

i condition s

i = 1

Informatikgrundlagen für Humanmedizin – Kontrollstrukturen Herbst 2021 Böckenhauer, Komm 34 / 36

(96)

while -Schleifen

s = 0 i = 1

while i <= 2:

s = s + i i = i + 1

i condition s

i = 1 i <= 2?

(97)

while -Schleifen

s = 0 i = 1

while i <= 2:

s = s + i i = i + 1

i condition s

i = 1 wahr

Informatikgrundlagen für Humanmedizin – Kontrollstrukturen Herbst 2021 Böckenhauer, Komm 34 / 36

(98)

while -Schleifen

s = 0 i = 1

while i <= 2:

s = s + i i = i + 1

i condition s

i = 1 wahr s = 1

(99)

while -Schleifen

s = 0 i = 1

while i <= 2:

s = s + i i = i + 1

i condition s

i = 1 wahr s = 1

i = 2

Informatikgrundlagen für Humanmedizin – Kontrollstrukturen Herbst 2021 Böckenhauer, Komm 34 / 36

(100)

while -Schleifen

s = 0 i = 1

while i <= 2:

s = s + i i = i + 1

i condition s

i = 1 wahr s = 1

i = 2 i <= 2?

(101)

while -Schleifen

s = 0 i = 1

while i <= 2:

s = s + i i = i + 1

i condition s

i = 1 wahr s = 1

i = 2 wahr

Informatikgrundlagen für Humanmedizin – Kontrollstrukturen Herbst 2021 Böckenhauer, Komm 34 / 36

(102)

while -Schleifen

s = 0 i = 1

while i <= 2:

s = s + i i = i + 1

i condition s

i = 1 wahr s = 1

i = 2 wahr s = 3

(103)

while -Schleifen

s = 0 i = 1

while i <= 2:

s = s + i i = i + 1

i condition s

i = 1 wahr s = 1

i = 2 wahr s = 3

i = 3

Informatikgrundlagen für Humanmedizin – Kontrollstrukturen Herbst 2021 Böckenhauer, Komm 34 / 36

(104)

while -Schleifen

s = 0 i = 1

while i <= 2:

s = s + i i = i + 1

i condition s

i = 1 wahr s = 1

i = 2 wahr s = 3

i = 3 i <= 2?

(105)

while -Schleifen

s = 0 i = 1

while i <= 2:

s = s + i i = i + 1

i condition s

i = 1 wahr s = 1

i = 2 wahr s = 3

i = 3 falsch

Informatikgrundlagen für Humanmedizin – Kontrollstrukturen Herbst 2021 Böckenhauer, Komm 34 / 36

(106)

while -Schleifen

s = 0 i = 1

while i <= 2:

s = s + i i = i + 1

i condition s

i = 1 wahr s = 1

i = 2 wahr s = 3

i = 3 falsch s = 3

(107)

Inkrementierung von Variablen

Zum Ändern von Werten von Variablen wird vereinfachte Syntax verwendet

n = n + 1 wird geschrieben als n += 1 n = n + i wird geschrieben als n += i n = n - 15 wird geschrieben als n -= 15 n = n * j wird geschrieben als n *= j n = n ** 4 wird geschrieben als n **= 4 . . .

Informatikgrundlagen für Humanmedizin – Kontrollstrukturen Herbst 2021 Böckenhauer, Komm 35 / 36

(108)

Inkrementierung von Variablen

Zum Ändern von Werten von Variablen wird vereinfachte Syntax verwendet

n = n + 1 wird geschrieben als n += 1

n = n + i wird geschrieben als n += i

n = n - 15 wird geschrieben als n -= 15

n = n * j wird geschrieben als n *= j

n = n ** 4 wird geschrieben als n **= 4

. . .

(109)

Inkrementierung von Variablen

Zum Ändern von Werten von Variablen wird vereinfachte Syntax verwendet

n = n + 1 wird geschrieben als n += 1 n = n + i wird geschrieben als n += i

n = n - 15 wird geschrieben als n -= 15 n = n * j wird geschrieben als n *= j n = n ** 4 wird geschrieben als n **= 4 . . .

Informatikgrundlagen für Humanmedizin – Kontrollstrukturen Herbst 2021 Böckenhauer, Komm 35 / 36

(110)

Inkrementierung von Variablen

Zum Ändern von Werten von Variablen wird vereinfachte Syntax verwendet

n = n + 1 wird geschrieben als n += 1 n = n + i wird geschrieben als n += i n = n - 15 wird geschrieben als n -= 15

n = n * j wird geschrieben als n *= j

n = n ** 4 wird geschrieben als n **= 4

. . .

(111)

Inkrementierung von Variablen

Zum Ändern von Werten von Variablen wird vereinfachte Syntax verwendet

n = n + 1 wird geschrieben als n += 1 n = n + i wird geschrieben als n += i n = n - 15 wird geschrieben als n -= 15 n = n * j wird geschrieben als n *= j

n = n ** 4 wird geschrieben als n **= 4 . . .

Informatikgrundlagen für Humanmedizin – Kontrollstrukturen Herbst 2021 Böckenhauer, Komm 35 / 36

(112)

Inkrementierung von Variablen

Zum Ändern von Werten von Variablen wird vereinfachte Syntax verwendet

n = n + 1 wird geschrieben als n += 1 n = n + i wird geschrieben als n += i n = n - 15 wird geschrieben als n -= 15 n = n * j wird geschrieben als n *= j n = n ** 4 wird geschrieben als n **= 4

. . .

(113)

Inkrementierung von Variablen

Zum Ändern von Werten von Variablen wird vereinfachte Syntax verwendet

n = n + 1 wird geschrieben als n += 1 n = n + i wird geschrieben als n += i n = n - 15 wird geschrieben als n -= 15 n = n * j wird geschrieben als n *= j n = n ** 4 wird geschrieben als n **= 4 . . .

Informatikgrundlagen für Humanmedizin – Kontrollstrukturen Herbst 2021 Böckenhauer, Komm 35 / 36

(114)

Die Sprunganweisung break

break

Umschliessende Schleife wird sofort beendet

Nützlich, um Schleife «in der Mitte» abbrechen zu können

s = 0

while True:

x = int(input("Geben Sie eine positive Zahl ein, Abbruch mit 0: ")) if x == 0:

break

s += x

print(s)

(115)

Die Sprunganweisung break

break

Umschliessende Schleife wird sofort beendet

Nützlich, um Schleife «in der Mitte» abbrechen zu können

s = 0

while True:

x = int(input("Geben Sie eine positive Zahl ein, Abbruch mit 0: ")) if x == 0:

break s += x print(s)

Informatikgrundlagen für Humanmedizin – Kontrollstrukturen Herbst 2021 Böckenhauer, Komm 36 / 36

(116)

Vielen Dank

für die Aufmerksamkeit

Referenzen

ÄHNLICHE DOKUMENTE

program counter mode, the relocation counter is set to the value of the expression, and the assembler assigns generated code starting with that value.. Under CSEG, DSEG, and

·Verzeichnis (neue Grundstücke, vorgesehene Eigentümer, Lasten, Beschränkungen und Nutzungsart). Bescheid durch OFD

3 des Hochschulgesetzes (HochSchG) in der Fassung vom 19. 505), hat der Fachbereichsrat des Fachbereichs Bauwesen am 20.01.2016 die folgende Änderung der Ordnung für die Prüfung

3 des Hochschulgesetzes (HochSchG) in der Fassung vom 19. 5055), hat der Fachbereichsrat des Fachbereichs Bauwesen am 20.01.2016 die folgende Änderung der Ordnung für die Prüfung

Ein weiteres neues Element im TUGonline ist die Datenbank der Unternehmen &amp; Institutionen, die für alle TU Graz MitarbeiterInnen und -Studierende - über die Visitenkarte

Die neue Ver- tragsdatenbank sowie das in Entwicklung befindliche Modul für finanztechnische Projekte, über das künftig Projektmeldungen zur Einleitung der

Mit der Forschungsholding TU Graz GmbH als eigene Rechts- persönlichkeit wird zum einen eine steuerliche Benachteiligung vermieden und zum anderen ein effizientes Risikomanagement für

Dieser Kurs ist für Sie geeignet, wenn Ihre Mobilität eingeschränkt ist oder Sie ganz einfach sanfte, besonders gelenkschonende und wohltuende Gymnastik im Wasser schätzen?.