105
Informatik I: Einführung in die Programmierung 5. Bedingungen, bedingte Ausführung Albert-Ludwigs-Universität Freiburg Peter Thiemann 30. Oktober 2018

Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

Informatik I: Einführung in die Programmierung5. Bedingungen, bedingte Ausführung

Albert-Ludwigs-Universität Freiburg

Peter Thiemann30. Oktober 2018

Page 2: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

BedingungenTypboolVergleichsoperatio-nen

LogischeOperatoren

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Bedingungen und der Typbool

30. Oktober 2018 P. Thiemann – Info I 2 / 38

Page 3: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

BedingungenTypboolVergleichsoperatio-nen

LogischeOperatoren

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Der Typ bool

Neben arithmetischen Ausdrücken gibt es nochBoolesche Ausdrücke mit True oder False als Werten.Die einfachsten Booleschen Ausdrücke sind Vergleichemit dem Gleichheitsoperator ==.Die Werte True und False gehören zum Typ bool.Arithmetische Operationen konvertieren Boolesche Wertenach int (False 7→ 0, True 7→ 1):

Python-Interpreter>>> 42 == 42

True>>> 'egg' == 'spam'False>>> type('egg' == 'spam')<class 'bool'>>>> True + True2

30. Oktober 2018 P. Thiemann – Info I 4 / 38

Page 4: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

BedingungenTypboolVergleichsoperatio-nen

LogischeOperatoren

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Der Typ bool

Neben arithmetischen Ausdrücken gibt es nochBoolesche Ausdrücke mit True oder False als Werten.Die einfachsten Booleschen Ausdrücke sind Vergleichemit dem Gleichheitsoperator ==.Die Werte True und False gehören zum Typ bool.Arithmetische Operationen konvertieren Boolesche Wertenach int (False 7→ 0, True 7→ 1):

Python-Interpreter>>> 42 == 42True>>>

'egg' == 'spam'False>>> type('egg' == 'spam')<class 'bool'>>>> True + True2

30. Oktober 2018 P. Thiemann – Info I 4 / 38

Page 5: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

BedingungenTypboolVergleichsoperatio-nen

LogischeOperatoren

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Der Typ bool

Neben arithmetischen Ausdrücken gibt es nochBoolesche Ausdrücke mit True oder False als Werten.Die einfachsten Booleschen Ausdrücke sind Vergleichemit dem Gleichheitsoperator ==.Die Werte True und False gehören zum Typ bool.Arithmetische Operationen konvertieren Boolesche Wertenach int (False 7→ 0, True 7→ 1):

Python-Interpreter>>> 42 == 42True>>> 'egg' == 'spam'

False>>> type('egg' == 'spam')<class 'bool'>>>> True + True2

30. Oktober 2018 P. Thiemann – Info I 4 / 38

Page 6: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

BedingungenTypboolVergleichsoperatio-nen

LogischeOperatoren

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Der Typ bool

Neben arithmetischen Ausdrücken gibt es nochBoolesche Ausdrücke mit True oder False als Werten.Die einfachsten Booleschen Ausdrücke sind Vergleichemit dem Gleichheitsoperator ==.Die Werte True und False gehören zum Typ bool.Arithmetische Operationen konvertieren Boolesche Wertenach int (False 7→ 0, True 7→ 1):

Python-Interpreter>>> 42 == 42True>>> 'egg' == 'spam'False>>>

type('egg' == 'spam')<class 'bool'>>>> True + True2

30. Oktober 2018 P. Thiemann – Info I 4 / 38

Page 7: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

BedingungenTypboolVergleichsoperatio-nen

LogischeOperatoren

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Der Typ bool

Neben arithmetischen Ausdrücken gibt es nochBoolesche Ausdrücke mit True oder False als Werten.Die einfachsten Booleschen Ausdrücke sind Vergleichemit dem Gleichheitsoperator ==.Die Werte True und False gehören zum Typ bool.Arithmetische Operationen konvertieren Boolesche Wertenach int (False 7→ 0, True 7→ 1):

Python-Interpreter>>> 42 == 42True>>> 'egg' == 'spam'False>>> type('egg' == 'spam')

<class 'bool'>>>> True + True2

30. Oktober 2018 P. Thiemann – Info I 4 / 38

Page 8: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

BedingungenTypboolVergleichsoperatio-nen

LogischeOperatoren

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Der Typ bool

Neben arithmetischen Ausdrücken gibt es nochBoolesche Ausdrücke mit True oder False als Werten.Die einfachsten Booleschen Ausdrücke sind Vergleichemit dem Gleichheitsoperator ==.Die Werte True und False gehören zum Typ bool.Arithmetische Operationen konvertieren Boolesche Wertenach int (False 7→ 0, True 7→ 1):

Python-Interpreter>>> 42 == 42True>>> 'egg' == 'spam'False>>> type('egg' == 'spam')<class 'bool'>>>>

True + True2

30. Oktober 2018 P. Thiemann – Info I 4 / 38

Page 9: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

BedingungenTypboolVergleichsoperatio-nen

LogischeOperatoren

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Der Typ bool

Neben arithmetischen Ausdrücken gibt es nochBoolesche Ausdrücke mit True oder False als Werten.Die einfachsten Booleschen Ausdrücke sind Vergleichemit dem Gleichheitsoperator ==.Die Werte True und False gehören zum Typ bool.Arithmetische Operationen konvertieren Boolesche Wertenach int (False 7→ 0, True 7→ 1):

Python-Interpreter>>> 42 == 42True>>> 'egg' == 'spam'False>>> type('egg' == 'spam')<class 'bool'>>>> True + True230. Oktober 2018 P. Thiemann – Info I 4 / 38

Page 10: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

BedingungenTypboolVergleichsoperatio-nen

LogischeOperatoren

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Vergleichsoperatoren

Es gibt die folgenden Vergleichsoperatoren:Syntax Bedeutungx == y Ist x gleich y?x != y Ist x ungleich y?x > y Ist x echt größer als y?x < y Ist x echt kleiner als y?x >= y Ist x größer oder gleich y?x <= y Ist x kleiner oder gleich y?

Python-Interpreter>>> 2.1 - 2.0 > 0.1True>>> 2 - 1 < 1False>>> False < TrueTrue

30. Oktober 2018 P. Thiemann – Info I 5 / 38

Page 11: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

BedingungenTypboolVergleichsoperatio-nen

LogischeOperatoren

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Vergleichsoperatoren

Es gibt die folgenden Vergleichsoperatoren:Syntax Bedeutungx == y Ist x gleich y?x != y Ist x ungleich y?x > y Ist x echt größer als y?x < y Ist x echt kleiner als y?x >= y Ist x größer oder gleich y?x <= y Ist x kleiner oder gleich y?

Python-Interpreter>>>

2.1 - 2.0 > 0.1True>>> 2 - 1 < 1False>>> False < TrueTrue

30. Oktober 2018 P. Thiemann – Info I 5 / 38

Page 12: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

BedingungenTypboolVergleichsoperatio-nen

LogischeOperatoren

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Vergleichsoperatoren

Es gibt die folgenden Vergleichsoperatoren:Syntax Bedeutungx == y Ist x gleich y?x != y Ist x ungleich y?x > y Ist x echt größer als y?x < y Ist x echt kleiner als y?x >= y Ist x größer oder gleich y?x <= y Ist x kleiner oder gleich y?

Python-Interpreter>>> 2.1 - 2.0 > 0.1

True>>> 2 - 1 < 1False>>> False < TrueTrue

30. Oktober 2018 P. Thiemann – Info I 5 / 38

Page 13: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

BedingungenTypboolVergleichsoperatio-nen

LogischeOperatoren

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Vergleichsoperatoren

Es gibt die folgenden Vergleichsoperatoren:Syntax Bedeutungx == y Ist x gleich y?x != y Ist x ungleich y?x > y Ist x echt größer als y?x < y Ist x echt kleiner als y?x >= y Ist x größer oder gleich y?x <= y Ist x kleiner oder gleich y?

Python-Interpreter>>> 2.1 - 2.0 > 0.1True>>>

2 - 1 < 1False>>> False < TrueTrue

30. Oktober 2018 P. Thiemann – Info I 5 / 38

Page 14: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

BedingungenTypboolVergleichsoperatio-nen

LogischeOperatoren

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Vergleichsoperatoren

Es gibt die folgenden Vergleichsoperatoren:Syntax Bedeutungx == y Ist x gleich y?x != y Ist x ungleich y?x > y Ist x echt größer als y?x < y Ist x echt kleiner als y?x >= y Ist x größer oder gleich y?x <= y Ist x kleiner oder gleich y?

Python-Interpreter>>> 2.1 - 2.0 > 0.1True>>> 2 - 1 < 1

False>>> False < TrueTrue

30. Oktober 2018 P. Thiemann – Info I 5 / 38

Page 15: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

BedingungenTypboolVergleichsoperatio-nen

LogischeOperatoren

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Vergleichsoperatoren

Es gibt die folgenden Vergleichsoperatoren:Syntax Bedeutungx == y Ist x gleich y?x != y Ist x ungleich y?x > y Ist x echt größer als y?x < y Ist x echt kleiner als y?x >= y Ist x größer oder gleich y?x <= y Ist x kleiner oder gleich y?

Python-Interpreter>>> 2.1 - 2.0 > 0.1True>>> 2 - 1 < 1False>>>

False < TrueTrue

30. Oktober 2018 P. Thiemann – Info I 5 / 38

Page 16: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

BedingungenTypboolVergleichsoperatio-nen

LogischeOperatoren

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Vergleichsoperatoren

Es gibt die folgenden Vergleichsoperatoren:Syntax Bedeutungx == y Ist x gleich y?x != y Ist x ungleich y?x > y Ist x echt größer als y?x < y Ist x echt kleiner als y?x >= y Ist x größer oder gleich y?x <= y Ist x kleiner oder gleich y?

Python-Interpreter>>> 2.1 - 2.0 > 0.1True>>> 2 - 1 < 1False>>> False < True

True

30. Oktober 2018 P. Thiemann – Info I 5 / 38

Page 17: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

BedingungenTypboolVergleichsoperatio-nen

LogischeOperatoren

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Vergleichsoperatoren

Es gibt die folgenden Vergleichsoperatoren:Syntax Bedeutungx == y Ist x gleich y?x != y Ist x ungleich y?x > y Ist x echt größer als y?x < y Ist x echt kleiner als y?x >= y Ist x größer oder gleich y?x <= y Ist x kleiner oder gleich y?

Python-Interpreter>>> 2.1 - 2.0 > 0.1True>>> 2 - 1 < 1False>>> False < TrueTrue30. Oktober 2018 P. Thiemann – Info I 5 / 38

Page 18: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

BedingungenTypboolVergleichsoperatio-nen

LogischeOperatoren

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Stringvergleich

Strings werden anhand der lexikographischen Ordnungverglichen, wobei für Einzelzeichen der Unicode-Wert(Ergebnis der ord-Funktion) benutzt wird.

Python-Interpreter>>> 'anton' < 'antonia'True>>> 'anton' < 'berta'True>>> 'anton' < 'ulf'True>>> 'antonia' < 'antonella'False

30. Oktober 2018 P. Thiemann – Info I 6 / 38

Page 19: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

BedingungenTypboolVergleichsoperatio-nen

LogischeOperatoren

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Stringvergleich

Strings werden anhand der lexikographischen Ordnungverglichen, wobei für Einzelzeichen der Unicode-Wert(Ergebnis der ord-Funktion) benutzt wird.

Python-Interpreter>>> 'anton' < 'antonia'

True>>> 'anton' < 'berta'True>>> 'anton' < 'ulf'True>>> 'antonia' < 'antonella'False

30. Oktober 2018 P. Thiemann – Info I 6 / 38

Page 20: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

BedingungenTypboolVergleichsoperatio-nen

LogischeOperatoren

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Stringvergleich

Strings werden anhand der lexikographischen Ordnungverglichen, wobei für Einzelzeichen der Unicode-Wert(Ergebnis der ord-Funktion) benutzt wird.

Python-Interpreter>>> 'anton' < 'antonia'True>>>

'anton' < 'berta'True>>> 'anton' < 'ulf'True>>> 'antonia' < 'antonella'False

30. Oktober 2018 P. Thiemann – Info I 6 / 38

Page 21: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

BedingungenTypboolVergleichsoperatio-nen

LogischeOperatoren

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Stringvergleich

Strings werden anhand der lexikographischen Ordnungverglichen, wobei für Einzelzeichen der Unicode-Wert(Ergebnis der ord-Funktion) benutzt wird.

Python-Interpreter>>> 'anton' < 'antonia'True>>> 'anton' < 'berta'

True>>> 'anton' < 'ulf'True>>> 'antonia' < 'antonella'False

30. Oktober 2018 P. Thiemann – Info I 6 / 38

Page 22: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

BedingungenTypboolVergleichsoperatio-nen

LogischeOperatoren

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Stringvergleich

Strings werden anhand der lexikographischen Ordnungverglichen, wobei für Einzelzeichen der Unicode-Wert(Ergebnis der ord-Funktion) benutzt wird.

Python-Interpreter>>> 'anton' < 'antonia'True>>> 'anton' < 'berta'True>>>

'anton' < 'ulf'True>>> 'antonia' < 'antonella'False

30. Oktober 2018 P. Thiemann – Info I 6 / 38

Page 23: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

BedingungenTypboolVergleichsoperatio-nen

LogischeOperatoren

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Stringvergleich

Strings werden anhand der lexikographischen Ordnungverglichen, wobei für Einzelzeichen der Unicode-Wert(Ergebnis der ord-Funktion) benutzt wird.

Python-Interpreter>>> 'anton' < 'antonia'True>>> 'anton' < 'berta'True>>> 'anton' < 'ulf'

True>>> 'antonia' < 'antonella'False

30. Oktober 2018 P. Thiemann – Info I 6 / 38

Page 24: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

BedingungenTypboolVergleichsoperatio-nen

LogischeOperatoren

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Stringvergleich

Strings werden anhand der lexikographischen Ordnungverglichen, wobei für Einzelzeichen der Unicode-Wert(Ergebnis der ord-Funktion) benutzt wird.

Python-Interpreter>>> 'anton' < 'antonia'True>>> 'anton' < 'berta'True>>> 'anton' < 'ulf'True>>>

'antonia' < 'antonella'False

30. Oktober 2018 P. Thiemann – Info I 6 / 38

Page 25: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

BedingungenTypboolVergleichsoperatio-nen

LogischeOperatoren

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Stringvergleich

Strings werden anhand der lexikographischen Ordnungverglichen, wobei für Einzelzeichen der Unicode-Wert(Ergebnis der ord-Funktion) benutzt wird.

Python-Interpreter>>> 'anton' < 'antonia'True>>> 'anton' < 'berta'True>>> 'anton' < 'ulf'True>>> 'antonia' < 'antonella'

False

30. Oktober 2018 P. Thiemann – Info I 6 / 38

Page 26: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

BedingungenTypboolVergleichsoperatio-nen

LogischeOperatoren

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Stringvergleich

Strings werden anhand der lexikographischen Ordnungverglichen, wobei für Einzelzeichen der Unicode-Wert(Ergebnis der ord-Funktion) benutzt wird.

Python-Interpreter>>> 'anton' < 'antonia'True>>> 'anton' < 'berta'True>>> 'anton' < 'ulf'True>>> 'antonia' < 'antonella'False

30. Oktober 2018 P. Thiemann – Info I 6 / 38

Page 27: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

BedingungenTypboolVergleichsoperatio-nen

LogischeOperatoren

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Definition: Lexikographische Ordnung

GegebenZwei Strings der Längen m,n≥ 0:

~a = ”a1a2 . . .am” ~b = ”b1b2 . . .bn”

~a≤~b in der lexikographischen Ordnung, fallsEs gibt 0≤ k ≤min(m,n), so dass

a1 = b1, . . . , ak = bk und~a = ”a1a2 . . .akak+1 . . .am” ~b = ”a1a2 . . .akbk+1 . . .bn”

k = m~a = ”a1a2 . . .am” ~b = ”a1a2 . . .ambm+1 . . .bn”

oder k < m und ak+1 ≤ bk+1.

30. Oktober 2018 P. Thiemann – Info I 7 / 38

Page 28: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

BedingungenTypboolVergleichsoperatio-nen

LogischeOperatoren

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Definition: Lexikographische Ordnung

GegebenZwei Strings der Längen m,n≥ 0:

~a = ”a1a2 . . .am” ~b = ”b1b2 . . .bn”

~a≤~b in der lexikographischen Ordnung, fallsEs gibt 0≤ k ≤min(m,n), so dass

a1 = b1, . . . , ak = bk und~a = ”a1a2 . . .akak+1 . . .am” ~b = ”a1a2 . . .akbk+1 . . .bn”

k = m~a = ”a1a2 . . .am” ~b = ”a1a2 . . .ambm+1 . . .bn”

oder k < m und ak+1 ≤ bk+1.

30. Oktober 2018 P. Thiemann – Info I 7 / 38

Page 29: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

BedingungenTypboolVergleichsoperatio-nen

LogischeOperatoren

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Vergleich unterschiedlicher Typen

Werte unvergleichbarer Typen sind ungleich.Bei den Anordnungsrelationen gibt es einen Fehler, wenndie Typen nicht zusammenpassen!

Python-Interpreter>>>

42 == 'zweiundvierzig'False>>> 41 < '42'Traceback (most recent call last): ...TypeError: unorderable types: int() < str()

30. Oktober 2018 P. Thiemann – Info I 8 / 38

Page 30: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

BedingungenTypboolVergleichsoperatio-nen

LogischeOperatoren

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Vergleich unterschiedlicher Typen

Werte unvergleichbarer Typen sind ungleich.Bei den Anordnungsrelationen gibt es einen Fehler, wenndie Typen nicht zusammenpassen!

Python-Interpreter>>> 42 == 'zweiundvierzig'

False>>> 41 < '42'Traceback (most recent call last): ...TypeError: unorderable types: int() < str()

30. Oktober 2018 P. Thiemann – Info I 8 / 38

Page 31: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

BedingungenTypboolVergleichsoperatio-nen

LogischeOperatoren

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Vergleich unterschiedlicher Typen

Werte unvergleichbarer Typen sind ungleich.Bei den Anordnungsrelationen gibt es einen Fehler, wenndie Typen nicht zusammenpassen!

Python-Interpreter>>> 42 == 'zweiundvierzig'False>>>

41 < '42'Traceback (most recent call last): ...TypeError: unorderable types: int() < str()

30. Oktober 2018 P. Thiemann – Info I 8 / 38

Page 32: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

BedingungenTypboolVergleichsoperatio-nen

LogischeOperatoren

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Vergleich unterschiedlicher Typen

Werte unvergleichbarer Typen sind ungleich.Bei den Anordnungsrelationen gibt es einen Fehler, wenndie Typen nicht zusammenpassen!

Python-Interpreter>>> 42 == 'zweiundvierzig'False>>> 41 < '42'

Traceback (most recent call last): ...TypeError: unorderable types: int() < str()

30. Oktober 2018 P. Thiemann – Info I 8 / 38

Page 33: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

BedingungenTypboolVergleichsoperatio-nen

LogischeOperatoren

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Vergleich unterschiedlicher Typen

Werte unvergleichbarer Typen sind ungleich.Bei den Anordnungsrelationen gibt es einen Fehler, wenndie Typen nicht zusammenpassen!

Python-Interpreter>>> 42 == 'zweiundvierzig'False>>> 41 < '42'Traceback (most recent call last): ...TypeError: unorderable types: int() < str()

30. Oktober 2018 P. Thiemann – Info I 8 / 38

Page 34: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

BedingungenTypboolVergleichsoperatio-nen

LogischeOperatoren

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Logische Operatoren

Es gibt die folgenden logischen Operatoren: or, and, not– mit aufsteigender Operatorpräzedenz.

Wie die Bitoperationen mit (False 7→ 0, True 7→ 1), d.h.

x < 10 or y > 100 hat den Wert True, wenn xkleiner als 10 ist oder wenn y größer als 100 ist.1 <= x and x <= 10 hat den Wert True, wenn xzwischen 1 und 10 (inklusive) liegt.Alternative Schreibweise dafür: 1 <= x <= 10.not(x < y) ist True wenn x nicht kleiner als y ist.

Nullwerte sind None, 0, 0.0, (0 + 0j) und ''. Siewerden wie False behandelt, alle anderen Werte wieTrue!Die Auswertung wird beendet, wenn das Ergebnis klar ist.

30. Oktober 2018 P. Thiemann – Info I 9 / 38

Page 35: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

BedingungenTypboolVergleichsoperatio-nen

LogischeOperatoren

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Logische Operatoren

Es gibt die folgenden logischen Operatoren: or, and, not– mit aufsteigender Operatorpräzedenz.Wie die Bitoperationen mit (False 7→ 0, True 7→ 1), d.h.

x < 10 or y > 100 hat den Wert True, wenn xkleiner als 10 ist oder wenn y größer als 100 ist.1 <= x and x <= 10 hat den Wert True, wenn xzwischen 1 und 10 (inklusive) liegt.Alternative Schreibweise dafür: 1 <= x <= 10.not(x < y) ist True wenn x nicht kleiner als y ist.

Nullwerte sind None, 0, 0.0, (0 + 0j) und ''. Siewerden wie False behandelt, alle anderen Werte wieTrue!Die Auswertung wird beendet, wenn das Ergebnis klar ist.

30. Oktober 2018 P. Thiemann – Info I 9 / 38

Page 36: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

BedingungenTypboolVergleichsoperatio-nen

LogischeOperatoren

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Logische Operatoren

Es gibt die folgenden logischen Operatoren: or, and, not– mit aufsteigender Operatorpräzedenz.Wie die Bitoperationen mit (False 7→ 0, True 7→ 1), d.h.

x < 10 or y > 100 hat den Wert True, wenn xkleiner als 10 ist oder wenn y größer als 100 ist.

1 <= x and x <= 10 hat den Wert True, wenn xzwischen 1 und 10 (inklusive) liegt.Alternative Schreibweise dafür: 1 <= x <= 10.not(x < y) ist True wenn x nicht kleiner als y ist.

Nullwerte sind None, 0, 0.0, (0 + 0j) und ''. Siewerden wie False behandelt, alle anderen Werte wieTrue!Die Auswertung wird beendet, wenn das Ergebnis klar ist.

30. Oktober 2018 P. Thiemann – Info I 9 / 38

Page 37: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

BedingungenTypboolVergleichsoperatio-nen

LogischeOperatoren

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Logische Operatoren

Es gibt die folgenden logischen Operatoren: or, and, not– mit aufsteigender Operatorpräzedenz.Wie die Bitoperationen mit (False 7→ 0, True 7→ 1), d.h.

x < 10 or y > 100 hat den Wert True, wenn xkleiner als 10 ist oder wenn y größer als 100 ist.1 <= x and x <= 10 hat den Wert True, wenn xzwischen 1 und 10 (inklusive) liegt.

Alternative Schreibweise dafür: 1 <= x <= 10.not(x < y) ist True wenn x nicht kleiner als y ist.

Nullwerte sind None, 0, 0.0, (0 + 0j) und ''. Siewerden wie False behandelt, alle anderen Werte wieTrue!Die Auswertung wird beendet, wenn das Ergebnis klar ist.

30. Oktober 2018 P. Thiemann – Info I 9 / 38

Page 38: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

BedingungenTypboolVergleichsoperatio-nen

LogischeOperatoren

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Logische Operatoren

Es gibt die folgenden logischen Operatoren: or, and, not– mit aufsteigender Operatorpräzedenz.Wie die Bitoperationen mit (False 7→ 0, True 7→ 1), d.h.

x < 10 or y > 100 hat den Wert True, wenn xkleiner als 10 ist oder wenn y größer als 100 ist.1 <= x and x <= 10 hat den Wert True, wenn xzwischen 1 und 10 (inklusive) liegt.Alternative Schreibweise dafür: 1 <= x <= 10.

not(x < y) ist True wenn x nicht kleiner als y ist.Nullwerte sind None, 0, 0.0, (0 + 0j) und ''. Siewerden wie False behandelt, alle anderen Werte wieTrue!Die Auswertung wird beendet, wenn das Ergebnis klar ist.

30. Oktober 2018 P. Thiemann – Info I 9 / 38

Page 39: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

BedingungenTypboolVergleichsoperatio-nen

LogischeOperatoren

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Logische Operatoren

Es gibt die folgenden logischen Operatoren: or, and, not– mit aufsteigender Operatorpräzedenz.Wie die Bitoperationen mit (False 7→ 0, True 7→ 1), d.h.

x < 10 or y > 100 hat den Wert True, wenn xkleiner als 10 ist oder wenn y größer als 100 ist.1 <= x and x <= 10 hat den Wert True, wenn xzwischen 1 und 10 (inklusive) liegt.Alternative Schreibweise dafür: 1 <= x <= 10.not(x < y) ist True wenn x nicht kleiner als y ist.

Nullwerte sind None, 0, 0.0, (0 + 0j) und ''. Siewerden wie False behandelt, alle anderen Werte wieTrue!Die Auswertung wird beendet, wenn das Ergebnis klar ist.

30. Oktober 2018 P. Thiemann – Info I 9 / 38

Page 40: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

BedingungenTypboolVergleichsoperatio-nen

LogischeOperatoren

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Logische Operatoren

Es gibt die folgenden logischen Operatoren: or, and, not– mit aufsteigender Operatorpräzedenz.Wie die Bitoperationen mit (False 7→ 0, True 7→ 1), d.h.

x < 10 or y > 100 hat den Wert True, wenn xkleiner als 10 ist oder wenn y größer als 100 ist.1 <= x and x <= 10 hat den Wert True, wenn xzwischen 1 und 10 (inklusive) liegt.Alternative Schreibweise dafür: 1 <= x <= 10.not(x < y) ist True wenn x nicht kleiner als y ist.

Nullwerte sind None, 0, 0.0, (0 + 0j) und ''. Siewerden wie False behandelt, alle anderen Werte wieTrue!

Die Auswertung wird beendet, wenn das Ergebnis klar ist.

30. Oktober 2018 P. Thiemann – Info I 9 / 38

Page 41: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

BedingungenTypboolVergleichsoperatio-nen

LogischeOperatoren

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Logische Operatoren

Es gibt die folgenden logischen Operatoren: or, and, not– mit aufsteigender Operatorpräzedenz.Wie die Bitoperationen mit (False 7→ 0, True 7→ 1), d.h.

x < 10 or y > 100 hat den Wert True, wenn xkleiner als 10 ist oder wenn y größer als 100 ist.1 <= x and x <= 10 hat den Wert True, wenn xzwischen 1 und 10 (inklusive) liegt.Alternative Schreibweise dafür: 1 <= x <= 10.not(x < y) ist True wenn x nicht kleiner als y ist.

Nullwerte sind None, 0, 0.0, (0 + 0j) und ''. Siewerden wie False behandelt, alle anderen Werte wieTrue!Die Auswertung wird beendet, wenn das Ergebnis klar ist.

30. Oktober 2018 P. Thiemann – Info I 9 / 38

Page 42: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

BedingungenTypboolVergleichsoperatio-nen

LogischeOperatoren

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Logische Operatoren in Aktion

Python-Interpreter>>> 1 < 5 < 10

True>>> 5 < 1 or 'spam' < 'egg'False>>> 'spam' or True'spam'>>> '' or 'default''default'>>> 'good night' and 'ding ding ding''ding ding ding'>>> 0 and 10 < 1000>>> not 'spam' and (None or 0.0 or 10 < 100)False

30. Oktober 2018 P. Thiemann – Info I 10 / 38

Page 43: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

BedingungenTypboolVergleichsoperatio-nen

LogischeOperatoren

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Logische Operatoren in Aktion

Python-Interpreter>>> 1 < 5 < 10True>>>

5 < 1 or 'spam' < 'egg'False>>> 'spam' or True'spam'>>> '' or 'default''default'>>> 'good night' and 'ding ding ding''ding ding ding'>>> 0 and 10 < 1000>>> not 'spam' and (None or 0.0 or 10 < 100)False

30. Oktober 2018 P. Thiemann – Info I 10 / 38

Page 44: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

BedingungenTypboolVergleichsoperatio-nen

LogischeOperatoren

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Logische Operatoren in Aktion

Python-Interpreter>>> 1 < 5 < 10True>>> 5 < 1 or 'spam' < 'egg'

False>>> 'spam' or True'spam'>>> '' or 'default''default'>>> 'good night' and 'ding ding ding''ding ding ding'>>> 0 and 10 < 1000>>> not 'spam' and (None or 0.0 or 10 < 100)False

30. Oktober 2018 P. Thiemann – Info I 10 / 38

Page 45: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

BedingungenTypboolVergleichsoperatio-nen

LogischeOperatoren

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Logische Operatoren in Aktion

Python-Interpreter>>> 1 < 5 < 10True>>> 5 < 1 or 'spam' < 'egg'False>>>

'spam' or True'spam'>>> '' or 'default''default'>>> 'good night' and 'ding ding ding''ding ding ding'>>> 0 and 10 < 1000>>> not 'spam' and (None or 0.0 or 10 < 100)False

30. Oktober 2018 P. Thiemann – Info I 10 / 38

Page 46: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

BedingungenTypboolVergleichsoperatio-nen

LogischeOperatoren

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Logische Operatoren in Aktion

Python-Interpreter>>> 1 < 5 < 10True>>> 5 < 1 or 'spam' < 'egg'False>>> 'spam' or True

'spam'>>> '' or 'default''default'>>> 'good night' and 'ding ding ding''ding ding ding'>>> 0 and 10 < 1000>>> not 'spam' and (None or 0.0 or 10 < 100)False

30. Oktober 2018 P. Thiemann – Info I 10 / 38

Page 47: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

BedingungenTypboolVergleichsoperatio-nen

LogischeOperatoren

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Logische Operatoren in Aktion

Python-Interpreter>>> 1 < 5 < 10True>>> 5 < 1 or 'spam' < 'egg'False>>> 'spam' or True'spam'>>>

'' or 'default''default'>>> 'good night' and 'ding ding ding''ding ding ding'>>> 0 and 10 < 1000>>> not 'spam' and (None or 0.0 or 10 < 100)False

30. Oktober 2018 P. Thiemann – Info I 10 / 38

Page 48: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

BedingungenTypboolVergleichsoperatio-nen

LogischeOperatoren

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Logische Operatoren in Aktion

Python-Interpreter>>> 1 < 5 < 10True>>> 5 < 1 or 'spam' < 'egg'False>>> 'spam' or True'spam'>>> '' or 'default'

'default'>>> 'good night' and 'ding ding ding''ding ding ding'>>> 0 and 10 < 1000>>> not 'spam' and (None or 0.0 or 10 < 100)False

30. Oktober 2018 P. Thiemann – Info I 10 / 38

Page 49: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

BedingungenTypboolVergleichsoperatio-nen

LogischeOperatoren

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Logische Operatoren in Aktion

Python-Interpreter>>> 1 < 5 < 10True>>> 5 < 1 or 'spam' < 'egg'False>>> 'spam' or True'spam'>>> '' or 'default''default'>>>

'good night' and 'ding ding ding''ding ding ding'>>> 0 and 10 < 1000>>> not 'spam' and (None or 0.0 or 10 < 100)False

30. Oktober 2018 P. Thiemann – Info I 10 / 38

Page 50: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

BedingungenTypboolVergleichsoperatio-nen

LogischeOperatoren

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Logische Operatoren in Aktion

Python-Interpreter>>> 1 < 5 < 10True>>> 5 < 1 or 'spam' < 'egg'False>>> 'spam' or True'spam'>>> '' or 'default''default'>>> 'good night' and 'ding ding ding'

'ding ding ding'>>> 0 and 10 < 1000>>> not 'spam' and (None or 0.0 or 10 < 100)False

30. Oktober 2018 P. Thiemann – Info I 10 / 38

Page 51: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

BedingungenTypboolVergleichsoperatio-nen

LogischeOperatoren

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Logische Operatoren in Aktion

Python-Interpreter>>> 1 < 5 < 10True>>> 5 < 1 or 'spam' < 'egg'False>>> 'spam' or True'spam'>>> '' or 'default''default'>>> 'good night' and 'ding ding ding''ding ding ding'>>>

0 and 10 < 1000>>> not 'spam' and (None or 0.0 or 10 < 100)False

30. Oktober 2018 P. Thiemann – Info I 10 / 38

Page 52: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

BedingungenTypboolVergleichsoperatio-nen

LogischeOperatoren

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Logische Operatoren in Aktion

Python-Interpreter>>> 1 < 5 < 10True>>> 5 < 1 or 'spam' < 'egg'False>>> 'spam' or True'spam'>>> '' or 'default''default'>>> 'good night' and 'ding ding ding''ding ding ding'>>> 0 and 10 < 100

0>>> not 'spam' and (None or 0.0 or 10 < 100)False

30. Oktober 2018 P. Thiemann – Info I 10 / 38

Page 53: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

BedingungenTypboolVergleichsoperatio-nen

LogischeOperatoren

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Logische Operatoren in Aktion

Python-Interpreter>>> 1 < 5 < 10True>>> 5 < 1 or 'spam' < 'egg'False>>> 'spam' or True'spam'>>> '' or 'default''default'>>> 'good night' and 'ding ding ding''ding ding ding'>>> 0 and 10 < 1000>>>

not 'spam' and (None or 0.0 or 10 < 100)False

30. Oktober 2018 P. Thiemann – Info I 10 / 38

Page 54: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

BedingungenTypboolVergleichsoperatio-nen

LogischeOperatoren

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Logische Operatoren in Aktion

Python-Interpreter>>> 1 < 5 < 10True>>> 5 < 1 or 'spam' < 'egg'False>>> 'spam' or True'spam'>>> '' or 'default''default'>>> 'good night' and 'ding ding ding''ding ding ding'>>> 0 and 10 < 1000>>> not 'spam' and (None or 0.0 or 10 < 100)

False

30. Oktober 2018 P. Thiemann – Info I 10 / 38

Page 55: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

BedingungenTypboolVergleichsoperatio-nen

LogischeOperatoren

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Logische Operatoren in Aktion

Python-Interpreter>>> 1 < 5 < 10True>>> 5 < 1 or 'spam' < 'egg'False>>> 'spam' or True'spam'>>> '' or 'default''default'>>> 'good night' and 'ding ding ding''ding ding ding'>>> 0 and 10 < 1000>>> not 'spam' and (None or 0.0 or 10 < 100)False

30. Oktober 2018 P. Thiemann – Info I 10 / 38

Page 56: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

Bedingungen

Bedingte An-weisungenif-Anweisung

if-else-Anweisung

elif-Anweisung

Anwendung

Zusammen-fassung

Bedingte Anweisungen

30. Oktober 2018 P. Thiemann – Info I 11 / 38

Page 57: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

Bedingungen

Bedingte An-weisungenif-Anweisung

if-else-Anweisung

elif-Anweisung

Anwendung

Zusammen-fassung

Bedingte Ausführung

Bisher wurde jede eingegebene Anweisung ausgeführt.Die bedingte Anweisung (Konditional, if-Anweisung)ermöglicht es, Anweisungen nur unter bestimmtenBedingungen auszuführen.

Python-Interpreter>>> x = 3>>> if x > 0:... print('x ist strikt positiv')...x ist strikt positiv>>> x = 0>>> if x > 0:... print('x ist strikt positiv')...>>>

30. Oktober 2018 P. Thiemann – Info I 13 / 38

Page 58: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

Bedingungen

Bedingte An-weisungenif-Anweisung

if-else-Anweisung

elif-Anweisung

Anwendung

Zusammen-fassung

Bedingte Ausführung

Bisher wurde jede eingegebene Anweisung ausgeführt.Die bedingte Anweisung (Konditional, if-Anweisung)ermöglicht es, Anweisungen nur unter bestimmtenBedingungen auszuführen.

Python-Interpreter>>> x = 3>>> if x > 0:... print('x ist strikt positiv')...

x ist strikt positiv>>> x = 0>>> if x > 0:... print('x ist strikt positiv')...>>>

30. Oktober 2018 P. Thiemann – Info I 13 / 38

Page 59: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

Bedingungen

Bedingte An-weisungenif-Anweisung

if-else-Anweisung

elif-Anweisung

Anwendung

Zusammen-fassung

Bedingte Ausführung

Bisher wurde jede eingegebene Anweisung ausgeführt.Die bedingte Anweisung (Konditional, if-Anweisung)ermöglicht es, Anweisungen nur unter bestimmtenBedingungen auszuführen.

Python-Interpreter>>> x = 3>>> if x > 0:... print('x ist strikt positiv')...x ist strikt positiv>>>

x = 0>>> if x > 0:... print('x ist strikt positiv')...>>>

30. Oktober 2018 P. Thiemann – Info I 13 / 38

Page 60: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

Bedingungen

Bedingte An-weisungenif-Anweisung

if-else-Anweisung

elif-Anweisung

Anwendung

Zusammen-fassung

Bedingte Ausführung

Bisher wurde jede eingegebene Anweisung ausgeführt.Die bedingte Anweisung (Konditional, if-Anweisung)ermöglicht es, Anweisungen nur unter bestimmtenBedingungen auszuführen.

Python-Interpreter>>> x = 3>>> if x > 0:... print('x ist strikt positiv')...x ist strikt positiv>>> x = 0>>> if x > 0:... print('x ist strikt positiv')...

>>>

30. Oktober 2018 P. Thiemann – Info I 13 / 38

Page 61: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

Bedingungen

Bedingte An-weisungenif-Anweisung

if-else-Anweisung

elif-Anweisung

Anwendung

Zusammen-fassung

Bedingte Ausführung

Bisher wurde jede eingegebene Anweisung ausgeführt.Die bedingte Anweisung (Konditional, if-Anweisung)ermöglicht es, Anweisungen nur unter bestimmtenBedingungen auszuführen.

Python-Interpreter>>> x = 3>>> if x > 0:... print('x ist strikt positiv')...x ist strikt positiv>>> x = 0>>> if x > 0:... print('x ist strikt positiv')...>>>

30. Oktober 2018 P. Thiemann – Info I 13 / 38

Page 62: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

Bedingungen

Bedingte An-weisungenif-Anweisung

if-else-Anweisung

elif-Anweisung

Anwendung

Zusammen-fassung

If-else

Die if-else-Anweisung ermöglicht es, durch eineBedingung zwischen zwei Anweisungen auszuwählen.

Der else-Zweig wird ausgewertet, wenn die Bedingungnicht erfüllt ist.

Python-Interpreter>>> x = 3>>> if x%2 == 0:... print('x ist gerade')... else:... print('x ist ungerade')...x ist ungerade

30. Oktober 2018 P. Thiemann – Info I 14 / 38

Page 63: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

Bedingungen

Bedingte An-weisungenif-Anweisung

if-else-Anweisung

elif-Anweisung

Anwendung

Zusammen-fassung

If-else

Die if-else-Anweisung ermöglicht es, durch eineBedingung zwischen zwei Anweisungen auszuwählen.Der else-Zweig wird ausgewertet, wenn die Bedingungnicht erfüllt ist.

Python-Interpreter>>> x = 3>>> if x%2 == 0:... print('x ist gerade')... else:... print('x ist ungerade')...x ist ungerade

30. Oktober 2018 P. Thiemann – Info I 14 / 38

Page 64: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

Bedingungen

Bedingte An-weisungenif-Anweisung

if-else-Anweisung

elif-Anweisung

Anwendung

Zusammen-fassung

If-else

Die if-else-Anweisung ermöglicht es, durch eineBedingung zwischen zwei Anweisungen auszuwählen.Der else-Zweig wird ausgewertet, wenn die Bedingungnicht erfüllt ist.

Python-Interpreter>>> x = 3>>> if x%2 == 0:... print('x ist gerade')... else:... print('x ist ungerade')...

x ist ungerade

30. Oktober 2018 P. Thiemann – Info I 14 / 38

Page 65: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

Bedingungen

Bedingte An-weisungenif-Anweisung

if-else-Anweisung

elif-Anweisung

Anwendung

Zusammen-fassung

If-else

Die if-else-Anweisung ermöglicht es, durch eineBedingung zwischen zwei Anweisungen auszuwählen.Der else-Zweig wird ausgewertet, wenn die Bedingungnicht erfüllt ist.

Python-Interpreter>>> x = 3>>> if x%2 == 0:... print('x ist gerade')... else:... print('x ist ungerade')...x ist ungerade

30. Oktober 2018 P. Thiemann – Info I 14 / 38

Page 66: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

Bedingungen

Bedingte An-weisungenif-Anweisung

if-else-Anweisung

elif-Anweisung

Anwendung

Zusammen-fassung

Verkettete bedingten Anweisungen

Eine verkettete bedingte Anweisung kann mehr als zwei Fällebehandeln.

Python-Interpreter>>> x = 3>>> y = 0>>> if x < y:... print('x ist kleiner als y')... elif x > y:... print('x ist größer als y')... else:... print('x und y sind gleich')...x ist größer als y

Die Bedingungen werden der Reihe nach ausgewertet. Dererste Block, dessen Bedingung erfüllt ist, wird ausgeführt.

30. Oktober 2018 P. Thiemann – Info I 15 / 38

Page 67: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

Bedingungen

Bedingte An-weisungenif-Anweisung

if-else-Anweisung

elif-Anweisung

Anwendung

Zusammen-fassung

Verkettete bedingten Anweisungen

Eine verkettete bedingte Anweisung kann mehr als zwei Fällebehandeln.

Python-Interpreter>>> x = 3>>> y = 0>>> if x < y:... print('x ist kleiner als y')... elif x > y:... print('x ist größer als y')... else:... print('x und y sind gleich')...

x ist größer als y

Die Bedingungen werden der Reihe nach ausgewertet. Dererste Block, dessen Bedingung erfüllt ist, wird ausgeführt.

30. Oktober 2018 P. Thiemann – Info I 15 / 38

Page 68: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

Bedingungen

Bedingte An-weisungenif-Anweisung

if-else-Anweisung

elif-Anweisung

Anwendung

Zusammen-fassung

Verkettete bedingten Anweisungen

Eine verkettete bedingte Anweisung kann mehr als zwei Fällebehandeln.

Python-Interpreter>>> x = 3>>> y = 0>>> if x < y:... print('x ist kleiner als y')... elif x > y:... print('x ist größer als y')... else:... print('x und y sind gleich')...x ist größer als y

Die Bedingungen werden der Reihe nach ausgewertet. Dererste Block, dessen Bedingung erfüllt ist, wird ausgeführt.

30. Oktober 2018 P. Thiemann – Info I 15 / 38

Page 69: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

Bedingungen

Bedingte An-weisungenif-Anweisung

if-else-Anweisung

elif-Anweisung

Anwendung

Zusammen-fassung

Verkettete bedingten Anweisungen

Eine verkettete bedingte Anweisung kann mehr als zwei Fällebehandeln.

Python-Interpreter>>> x = 3>>> y = 0>>> if x < y:... print('x ist kleiner als y')... elif x > y:... print('x ist größer als y')... else:... print('x und y sind gleich')...x ist größer als y

Die Bedingungen werden der Reihe nach ausgewertet. Dererste Block, dessen Bedingung erfüllt ist, wird ausgeführt.

30. Oktober 2018 P. Thiemann – Info I 15 / 38

Page 70: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

Bedingungen

Bedingte An-weisungenif-Anweisung

if-else-Anweisung

elif-Anweisung

Anwendung

Zusammen-fassung

Geschachtelte Konditionale

Bedingte Anweisungen können geschachtelt werden.

Python-Interpreter>>> x = 5>>> if x > 0:... if x > 10:... print('successful encyclopedia salesman')... else:... print('unsuccessful encyclopedia salesman')...

>>>

Durch die Einrückung ist immer klar, wozu die bedingteAnweisung gehört!

30. Oktober 2018 P. Thiemann – Info I 16 / 38

Page 71: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

Bedingungen

Bedingte An-weisungenif-Anweisung

if-else-Anweisung

elif-Anweisung

Anwendung

Zusammen-fassung

Geschachtelte Konditionale

Bedingte Anweisungen können geschachtelt werden.

Python-Interpreter>>> x = 5>>> if x > 0:... if x > 10:... print('successful encyclopedia salesman')... else:... print('unsuccessful encyclopedia salesman')...>>>

Durch die Einrückung ist immer klar, wozu die bedingteAnweisung gehört!

30. Oktober 2018 P. Thiemann – Info I 16 / 38

Page 72: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

Bedingungen

Bedingte An-weisungen

AnwendungAuswerten einesTests

Freizeitpark

Zusammen-fassung

Anwendung

30. Oktober 2018 P. Thiemann – Info I 17 / 38

Page 73: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

Bedingungen

Bedingte An-weisungen

AnwendungAuswerten einesTests

Freizeitpark

Zusammen-fassung

Anwendung — Auswerten eines Tests

30. Oktober 2018 P. Thiemann – Info I 19 / 38

Page 74: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

Bedingungen

Bedingte An-weisungen

AnwendungAuswerten einesTests

Freizeitpark

Zusammen-fassung

Anwendung — Auswerten eines Tests

Bestanden oder nicht?In einem Test kann eine maximale Punktzahl erreicht werden.Ein gewisser Prozentsatz an Punkten ist notwendig um denTest zu bestehen.

AufgabeEntwickle eine Funktion, die die Eingaben

maximale Punktzahl,Prozentsatz zum Bestehen undtatsächlich erreichte Punktzahl

nimmt und als Ergebnis entweder 'pass' oder 'fail' liefert.

30. Oktober 2018 P. Thiemann – Info I 20 / 38

Page 75: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

Bedingungen

Bedingte An-weisungen

AnwendungAuswerten einesTests

Freizeitpark

Zusammen-fassung

Anwendung — Auswerten eines Tests

Bestanden oder nicht?In einem Test kann eine maximale Punktzahl erreicht werden.Ein gewisser Prozentsatz an Punkten ist notwendig um denTest zu bestehen.

AufgabeEntwickle eine Funktion, die die Eingaben

maximale Punktzahl,Prozentsatz zum Bestehen undtatsächlich erreichte Punktzahl

nimmt und als Ergebnis entweder 'pass' oder 'fail' liefert.

30. Oktober 2018 P. Thiemann – Info I 20 / 38

Page 76: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

Bedingungen

Bedingte An-weisungen

AnwendungAuswerten einesTests

Freizeitpark

Zusammen-fassung

Schritt 1: Bezeichner und Datentypen

AufgabeEntwickle eine Funktion test_result, die die Eingaben

max_points: int maximale Punktzahl,percentage: int Prozentsatz zum Bestehen undpoints: int tatsächlich erreichte Punktzahl

nimmt und als Ergebnis entweder 'pass' oder 'fail' (vomTyp str) liefert.

Bezeichner für Funktion und Parameter festlegenTypen der Parameter angebenTyp des Rückgabewertes angeben

30. Oktober 2018 P. Thiemann – Info I 21 / 38

Page 77: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

Bedingungen

Bedingte An-weisungen

AnwendungAuswerten einesTests

Freizeitpark

Zusammen-fassung

Schritt 2a: Funktionsgerüst

� �def test_result(

max_points: int ,percentage: int ,points: int) -> str:

# fill inreturn� �

Funktionsgerüst aufschreiben.Wenn klar ist, dass eine Zeile fortgesetzt werden muss(hier: innerhalb einer Parameterliste), wird das durchzusätzliche Einrückung gekennzeichnet.Typen werden durch Typannotationen “: int” fürParameter bzw. “-> str” für das Ergebnis angegeben(ab Python 3.6).

30. Oktober 2018 P. Thiemann – Info I 22 / 38

Page 78: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

Bedingungen

Bedingte An-weisungen

AnwendungAuswerten einesTests

Freizeitpark

Zusammen-fassung

Schritt 2b: Funktionsgerüst (vor Python 3.6)

� �def test_result(

max_points , # intpercentage , # intpoints # int): # -> str

# fill inreturn� �

Alternativ werden Typen durch Typkommentare # intbzw. # -> str angegeben (vor Python 3.6).

30. Oktober 2018 P. Thiemann – Info I 23 / 38

Page 79: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

Bedingungen

Bedingte An-weisungen

AnwendungAuswerten einesTests

Freizeitpark

Zusammen-fassung

Schritt 3: Beispiele

� �test_result (100, 50, 50) == 'pass'test_result (100, 50, 30) == 'fail'test_result (100, 50, 70) == 'pass'� �

Sinnvolle Beispiele erarbeitenEingaben so wählen, dass alle mögliche Ergebnisseerreicht werden.Randfälle bedenken (z.B. points == max_points,points == 0, percentage == 0,percentage == 100, . . . )

Ergebnisse der Beispiele von Hand ausrechnen!Die Beispiele dienen später als Tests, dass der Codezumindest für die Beispiele funktioniert.

30. Oktober 2018 P. Thiemann – Info I 24 / 38

Page 80: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

Bedingungen

Bedingte An-weisungen

AnwendungAuswerten einesTests

Freizeitpark

Zusammen-fassung

Schritt 4: Funktionsrumpf ausfüllen

� �def test_result(

max_points: int ,percentage: int ,points: int) -> str:

passed = (points>= max_points * percentage / 100)

if passed:return 'pass'

else:return 'fail'� �

Die Zuweisung an passed erstreckt sich über zwei Zeilen.Dafür muss der Ausdruck rechts geklammert sein.Zeilenumbruch vor dem Operator >=.

30. Oktober 2018 P. Thiemann – Info I 25 / 38

Page 81: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

Bedingungen

Bedingte An-weisungen

AnwendungAuswerten einesTests

Freizeitpark

Zusammen-fassung

Nachspiel

Fertig?

Was ist, wenn

max_points < 0?percentage < 0?percentage > 100?points < 0?points > max_points?

Wollen wir diese Fälle zulassen?

30. Oktober 2018 P. Thiemann – Info I 26 / 38

Page 82: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

Bedingungen

Bedingte An-weisungen

AnwendungAuswerten einesTests

Freizeitpark

Zusammen-fassung

Nachspiel

Fertig?Was ist, wenn

max_points < 0?percentage < 0?percentage > 100?points < 0?points > max_points?

Wollen wir diese Fälle zulassen?

30. Oktober 2018 P. Thiemann – Info I 26 / 38

Page 83: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

Bedingungen

Bedingte An-weisungen

AnwendungAuswerten einesTests

Freizeitpark

Zusammen-fassung

Nachspiel

Fertig?Was ist, wenn

max_points < 0?

percentage < 0?percentage > 100?points < 0?points > max_points?

Wollen wir diese Fälle zulassen?

30. Oktober 2018 P. Thiemann – Info I 26 / 38

Page 84: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

Bedingungen

Bedingte An-weisungen

AnwendungAuswerten einesTests

Freizeitpark

Zusammen-fassung

Nachspiel

Fertig?Was ist, wenn

max_points < 0?percentage < 0?

percentage > 100?points < 0?points > max_points?

Wollen wir diese Fälle zulassen?

30. Oktober 2018 P. Thiemann – Info I 26 / 38

Page 85: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

Bedingungen

Bedingte An-weisungen

AnwendungAuswerten einesTests

Freizeitpark

Zusammen-fassung

Nachspiel

Fertig?Was ist, wenn

max_points < 0?percentage < 0?percentage > 100?

points < 0?points > max_points?

Wollen wir diese Fälle zulassen?

30. Oktober 2018 P. Thiemann – Info I 26 / 38

Page 86: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

Bedingungen

Bedingte An-weisungen

AnwendungAuswerten einesTests

Freizeitpark

Zusammen-fassung

Nachspiel

Fertig?Was ist, wenn

max_points < 0?percentage < 0?percentage > 100?points < 0?

points > max_points?Wollen wir diese Fälle zulassen?

30. Oktober 2018 P. Thiemann – Info I 26 / 38

Page 87: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

Bedingungen

Bedingte An-weisungen

AnwendungAuswerten einesTests

Freizeitpark

Zusammen-fassung

Nachspiel

Fertig?Was ist, wenn

max_points < 0?percentage < 0?percentage > 100?points < 0?points > max_points?

Wollen wir diese Fälle zulassen?

30. Oktober 2018 P. Thiemann – Info I 26 / 38

Page 88: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

Bedingungen

Bedingte An-weisungen

AnwendungAuswerten einesTests

Freizeitpark

Zusammen-fassung

Nachspiel

Fertig?Was ist, wenn

max_points < 0?percentage < 0?percentage > 100?points < 0?points > max_points?

Wollen wir diese Fälle zulassen?

30. Oktober 2018 P. Thiemann – Info I 26 / 38

Page 89: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

Bedingungen

Bedingte An-weisungen

AnwendungAuswerten einesTests

Freizeitpark

Zusammen-fassung

Zwei Alternativen

Defensives ProgrammierenFange alle unerwünschten Fälle im Code ab und erzeuge eineFehlermeldung.

Design by Contract

Spezifiziere die Funktion und programmiere unter derAnnahme, dass nur die zulässigen Fälle auftreten (wie imCodebeispiel).max_points >= 00 <= percentage <= 1000 <= points <= max_points

30. Oktober 2018 P. Thiemann – Info I 27 / 38

Page 90: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

Bedingungen

Bedingte An-weisungen

AnwendungAuswerten einesTests

Freizeitpark

Zusammen-fassung

Zwei Alternativen

Defensives ProgrammierenFange alle unerwünschten Fälle im Code ab und erzeuge eineFehlermeldung.

Design by Contract

Spezifiziere die Funktion und programmiere unter derAnnahme, dass nur die zulässigen Fälle auftreten (wie imCodebeispiel).max_points >= 00 <= percentage <= 1000 <= points <= max_points

30. Oktober 2018 P. Thiemann – Info I 27 / 38

Page 91: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

Bedingungen

Bedingte An-weisungen

AnwendungAuswerten einesTests

Freizeitpark

Zusammen-fassung

Zwei Alternativen

Defensives ProgrammierenFange alle unerwünschten Fälle im Code ab und erzeuge eineFehlermeldung.

Design by ContractSpezifiziere die Funktion und programmiere unter derAnnahme, dass nur die zulässigen Fälle auftreten (wie imCodebeispiel).

max_points >= 00 <= percentage <= 1000 <= points <= max_points

30. Oktober 2018 P. Thiemann – Info I 27 / 38

Page 92: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

Bedingungen

Bedingte An-weisungen

AnwendungAuswerten einesTests

Freizeitpark

Zusammen-fassung

Zwei Alternativen

Defensives ProgrammierenFange alle unerwünschten Fälle im Code ab und erzeuge eineFehlermeldung.

Design by ContractSpezifiziere die Funktion und programmiere unter derAnnahme, dass nur die zulässigen Fälle auftreten (wie imCodebeispiel).max_points >= 0

0 <= percentage <= 1000 <= points <= max_points

30. Oktober 2018 P. Thiemann – Info I 27 / 38

Page 93: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

Bedingungen

Bedingte An-weisungen

AnwendungAuswerten einesTests

Freizeitpark

Zusammen-fassung

Zwei Alternativen

Defensives ProgrammierenFange alle unerwünschten Fälle im Code ab und erzeuge eineFehlermeldung.

Design by ContractSpezifiziere die Funktion und programmiere unter derAnnahme, dass nur die zulässigen Fälle auftreten (wie imCodebeispiel).max_points >= 00 <= percentage <= 100

0 <= points <= max_points

30. Oktober 2018 P. Thiemann – Info I 27 / 38

Page 94: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

Bedingungen

Bedingte An-weisungen

AnwendungAuswerten einesTests

Freizeitpark

Zusammen-fassung

Zwei Alternativen

Defensives ProgrammierenFange alle unerwünschten Fälle im Code ab und erzeuge eineFehlermeldung.

Design by ContractSpezifiziere die Funktion und programmiere unter derAnnahme, dass nur die zulässigen Fälle auftreten (wie imCodebeispiel).max_points >= 00 <= percentage <= 1000 <= points <= max_points

30. Oktober 2018 P. Thiemann – Info I 27 / 38

Page 95: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

Bedingungen

Bedingte An-weisungen

AnwendungAuswerten einesTests

Freizeitpark

Zusammen-fassungAnwendung — Freizeitpark

30. Oktober 2018 P. Thiemann – Info I 28 / 38

Page 96: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

Bedingungen

Bedingte An-weisungen

AnwendungAuswerten einesTests

Freizeitpark

Zusammen-fassung

Anwendung — Freizeitpark

Mitfahren oder nicht?In einem Freizeitpark gibt es verschiedene Attraktionen, diemit Alters- und Größenbeschränkungen belegt sind.

BeispielAttraktion Beschränkung BegleitungSilver-Star 11 Jahre und 1,40m —Euro-Mir 8 Jahre und 1,30m unter 10 Jahreblue fire 7 Jahre und 1,30m —Eurosat 6 Jahre und 1,20m unter 10 JahreMatterhorn-Bltz 6 Jahre und 1,20m unter 8 JahreTiroler Wildwasserbahn 4 Jahre und 1,00m unter 9 Jahre

30. Oktober 2018 P. Thiemann – Info I 29 / 38

Page 97: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

Bedingungen

Bedingte An-weisungen

AnwendungAuswerten einesTests

Freizeitpark

Zusammen-fassung

Anwendung — Freizeitpark

Mitfahren oder nicht?In einem Freizeitpark gibt es verschiedene Attraktionen, diemit Alters- und Größenbeschränkungen belegt sind.

BeispielAttraktion Beschränkung BegleitungSilver-Star 11 Jahre und 1,40m —Euro-Mir 8 Jahre und 1,30m unter 10 Jahreblue fire 7 Jahre und 1,30m —Eurosat 6 Jahre und 1,20m unter 10 JahreMatterhorn-Bltz 6 Jahre und 1,20m unter 8 JahreTiroler Wildwasserbahn 4 Jahre und 1,00m unter 9 Jahre

30. Oktober 2018 P. Thiemann – Info I 29 / 38

Page 98: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

Bedingungen

Bedingte An-weisungen

AnwendungAuswerten einesTests

Freizeitpark

Zusammen-fassung

Anwendung — Freizeitpark

AufgabeEntwickle eine Funktion zur Einlasskontrolle bei Euro-Mir, dieals Eingaben

das Alter,die Größe undob ein erwachsener Begleiter dabei ist

nimmt und als Ergebnis entweder 'Du␣darfst␣mitfahren!'oder 'Du␣musst␣leider␣draussenbleiben.' liefert.

30. Oktober 2018 P. Thiemann – Info I 30 / 38

Page 99: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

Bedingungen

Bedingte An-weisungen

AnwendungAuswerten einesTests

Freizeitpark

Zusammen-fassung

Schritt 1: Bezeichner und Datentypen

AufgabeEntwickle eine Funktion enter_euro_mir zur Einlasskontrollebei Euro-Mir, die als Eingaben

age: int das Alter (in Jahren),height: int die Größe (in cm) undaccompanied: bool ob ein erwachsener Begleiter dabeiist

nimmt und als Ergebnis entweder 'Du␣darfst␣mitfahren!'oder 'Du␣musst␣draussenbleiben.' -> str liefert.

Festlegen von Einheiten für die Eingaben!

30. Oktober 2018 P. Thiemann – Info I 31 / 38

Page 100: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

Bedingungen

Bedingte An-weisungen

AnwendungAuswerten einesTests

Freizeitpark

Zusammen-fassung

Schritt 2: Funktionsgerüst

� �def enter_euro_mir(

age: int ,height: int ,accompanied: bool) -> str:

# fill inreturn� �

30. Oktober 2018 P. Thiemann – Info I 32 / 38

Page 101: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

Bedingungen

Bedingte An-weisungen

AnwendungAuswerten einesTests

Freizeitpark

Zusammen-fassung

Schritt 3: Beispiele

� �enter_euro_mir (4, 101, 'Mama') == Falseenter_euro_mir (8, 125, 'Papa') == Falseenter_euro_mir (7, 130, 'Oma') == Falseenter_euro_mir (9, 135, 'Opa') == Trueenter_euro_mir (10, 135, '') == True� �

30. Oktober 2018 P. Thiemann – Info I 33 / 38

Page 102: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

Bedingungen

Bedingte An-weisungen

AnwendungAuswerten einesTests

Freizeitpark

Zusammen-fassung

Schritt 4: Funktionsrumpf ausfüllen

� �def enter_euro_mir(

age: int ,height: int ,accompanied: bool) -> str:

age_ok = age >= 8height_ok = heigher >= 130admitted = (age_ok

and height_okand (age >= 10 or accompanied ))

if admitted:return 'Du␣darfst␣mitfahren!'

else:return 'Du␣musst␣draussenbleiben.'� �

30. Oktober 2018 P. Thiemann – Info I 34 / 38

Page 103: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

Bedingungen

Bedingte An-weisungen

AnwendungAuswerten einesTests

Freizeitpark

Zusammen-fassung

Weitere Möglichkeiten

Entwickle eine enter Funktion, die die Bedingungen ausden globalen Variablen min_age, min_height undmin_age_alone berechnet.Ändere die Funktion, so dass sie bei einer Zurückweisungden Grund angibt. Zum Beispiel 'Du␣bist␣zu␣klein.','Du␣bist␣zu␣jung.' usw.

30. Oktober 2018 P. Thiemann – Info I 35 / 38

Page 104: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

Bedingungen

Bedingte An-weisungen

Anwendung

Zusammen-fassungZusammenfassung

30. Oktober 2018 P. Thiemann – Info I 36 / 38

Page 105: Informatik I: Einführung in die Programmierungproglang.informatik.uni-freiburg.de/teaching/info1/2018/lecture/infoI... · Bedingungen Typ bool Vergleichsoperatio-nen Logische Operatoren

Bedingungen

Bedingte An-weisungen

Anwendung

Zusammen-fassung

Zusammenfassung

bool ist ein weiterer Typ, dessen einzige Werte True undFalse sind.Vergleiche, wie z.B. == oder <, liefern Boolesche Werte.Boolesche Werte werden bei Bedarf nach int konvertiert,wobei True 7→ 1 und False 7→ 0 gilt.Nullwerte werden als False interpretiert, alle anderenWerte als True.Bedingte Anweisungen (if-(elif)-else) erlauben dieAuswahl zwischen alternativen Anweisungen.Checkliste zum Entwurf von Funktionen: Bezeichner undDatentypen, Funktionsgerüst, Beispiele, Funktionsrumpf

30. Oktober 2018 P. Thiemann – Info I 38 / 38