1. Wahrheitswerte. Boole sche Funktionen; der Typ bool; logische und relationale Operatoren; Kurzschlussauswertung.

Ähnliche Dokumente
Ganze Zahlen. Die Typen int, unsigned int; Auswertung arithmetischer Ausdrücke, arithmetische Operatoren

4. Wahrheitswerte. Wo wollen wir hin? Boolesche Werte in der Mathematik. Der Typ bool in C++

3. Wahrheitswerte. Boolesche Funktionen; der Typ bool; logische und relationale Operatoren; Kurzschlussauswertung

3. Wahrheitswerte. Boolesche Funktionen; der Typ bool; logische und relationale Operatoren; Kurzschlussauswertung; Assertions und Konstanten

3. Wahrheitswerte. Wo wollen wir hin? Boolesche Werte in der Mathematik. Der Typ bool in C++

4. Zahlendarstellungen

4. Zahlendarstellungen

Algorithmen & Programmierung. Ausdrücke & Operatoren (1)

Ganze Zahlen. Die Typen int, unsigned int; Auswertung arithmetischer Ausdrücke, arithmetische Operatoren

2. Ganze Zahlen int unsigned int

Operatoren in C/C++ und Java:

Schwerpunkte. 8. Ausdrücke, Operatoren (einfache Typen) Beispiel: Schaltjahr Test. Einführendes Beispiel: Grundprobleme

1. Ganze Zahlen. 9 * celsius / Celsius to Fahrenheit. (9 * celsius / 5) + 32

Vorkurs Informatik WiSe 16/17

Informatik I Übung, Woche 40

Datentypen: integer, char, string, boolean

2. Ganze Zahlen. Auswertung arithmetischer Ausdrücke, Assoziativität und Präzedenz, arithmetische Operatoren, Wertebereich der Typen int, unsigned int

Java I Vorlesung Imperatives Programmieren

3. Ganze Zahlen int unsigned int

Einstieg in die Informatik mit Java

Kapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Datentypen und Operatoren Ganzzahlige Numerische Datentypen Logischer Datentyp

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke

3. Operatoren und Ausdrücke

Rechnungen, wo kein sinnvoller Wert rauskommt Bsp.: 1/0, *0, sqrt(-1.0) Beispiel: Quadratische Gleichungen

3. Operatoren und Ausdrücke

Kapitel 4: Elementare Konzepte von Programmiersprachen. Variablen Referenzen Zuweisungen

2. Ganze Zahlen int unsigned int

Vorkurs Informatik WiSe 17/18

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe

Grundlagen der Informatik 2. Operatoren

Java Einführung Operatoren Kapitel 2 und 3

C- Kurs 03 Ausdrücke und Operatoren

Einstieg in die Informatik mit Java

Kapitel 05. Datentypen. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

Programmierkurs Python I

Programmieren lernen mit Visual Basic

3. Java - Sprachkonstrukte I

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 12/13. Kapitel 3. Grunddatentypen, Ausdrücke und Variable

Nino Simunic M.A. Computerlinguistik, Campus DU

5.3 Auswertung von Ausdrücken

3. Java - Sprachkonstrukte I

3. Ganze Zahlen. 9 * celsius / Celsius to Fahrenheit. (9 * celsius / 5) + 32

Informationsverarbeitung auf Bitebene

3. Java - Sprachkonstrukte I

C-Programmierung: Ausdrücke und Operatoren#Division.2F

Informatik Vorkurs - Vorlesung 2

3. Operatoren und Ausdrücke

2. Ganze Zahlen. 9 * celsius / Celsius to Fahrenheit. (9 * celsius / 5) + 32

Informatik I Übung, Woche 41

Informatik I Übung, Woche 40

Ausdrücke der Programmiersprache Java

Martin Unold INFORMATIK. Geoinformatik und Vermessung

2. Ganze Zahlen. Beispiel: power8.cpp. Terminologie: L-Werte und R-Werte. Terminologie: L-Werte und R-Werte

Einführung in die Informatik

2 LOGISCHE AUSDRÜCKE, BITOPERATIONEN

Informatik 1 ( ) D-MAVT F2011. Operatoren, Auswertungsreihenfolge, Fliesskommazahlen. Yves Brise Übungsstunde 2

Programmieren 1 C Überblick

Programmierkurs Python I

Ausdrücke (1) Grundlegende Eigenschaften

Informatik 1 ( ) D-MAVT F2010. Operatoren, Auswertungsreihenfolge, Fliesskommazahlen. Yves Brise Übungsstunde 2

Algorithmen & Programmierung. Logik

Anwendung Informatik Daten verwalten (2) Ursprüngliche Information Logische Verknüpfungen als Grundlage für die Informationsgewinnung

Modellierung und Programmierung 1

Einführung in die Programmierung

Einstieg in die Informatik mit Java

Programmieren und Problemlösen Java-Sprachkonstrukte. Java-Sprachkonstrukte. Übung Altersberechner. Namen und Bezeichner. Namen und Bezeichner

Einführung in die Boolesche Algebra

Die Sprache C# Datentypen, Speicherverwaltung Grundelemente der Sprache. Dr. Beatrice Amrhein

Kapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Wiederholung Kapitel 4. Birgit Engels, Anna Schulze WS 07/08

Kapitel 3. Grunddatentypen, Ausdrücke und Variable

Werkzeuge zur Programmentwicklung

Das erste C++ Programm

Sprachkonstrukte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg

Diana Lange. Generative Gestaltung Operatoren

Informatik I: Einführung in die Programmierung 3. Werte, Typen, Variablen und Ausdrücke

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

Grunddatentypen, Ausdrücke und Variablen Typkonversion, Überprüfen und Auswerten von Ausdrücken

Einführung in die Programmierung

Grunddatentypen, Ausdrücke und Variablen Typkonversion, Überprüfen und Auswerten von Ausdrücken

4 Schaltalgebra. Hochschule für Angewandte Wissenschaften Hamburg FACHBEREICH ELEKTROTECHNIK UND INFORMATIK DIGITALTECHNIK 4-1

Informatik I Übung, Woche 41

Java ist statisch typisiert, d.h., Variablen, Ergebnisse von Ausdrücken, etc. haben einen Datentyp, der schon bei der Kompilierung festgelegt wird.

Operatoren in C. Gastvorlesung Andreas Textor

Kapitel 2: Grundelemente der Programmierung

Informatik I Übung, Woche 38

float: Fließkommazahl nach IEEE 754 Standard mit 32 bit

5.3 Auswertung von Ausdrücken

Grundlagen der Programmiersprache C für Studierende der Naturwissenschaften

Java - Schleifen. Bedingung. wiederhole. Anweisung Anweisung Anweisung. Leibniz Universität IT Services Anja Aue

Celsius to Fahrenheit. Ganze Zahlen. Assoziativität und Präzedenz. 9 * celsius / Assoziativität und Präzedenz. Assoziativität und Präzedenz

Teil I. Konzepte imperativer Programmierung

Vorlesung Programmieren

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

Transkript:

1 1. Wahrheitswerte Boole sche Funktionen; der Typ bool; logische und relationale Operatoren; Kurzschlussauswertung.

Boole sche Funktionen 2 Boole sche Funktion f : {0, 1} 2 {0, 1} 0 entspricht falsch. 1 entspricht wahr. x y AND(x, y) 0 0 0 0 1 0 1 0 0 1 1 1

Boole sche Funktionen 2 Boole sche Funktion f : {0, 1} 2 {0, 1} 0 entspricht falsch. 1 entspricht wahr. x y OR(x, y) 0 0 0 0 1 1 1 0 1 1 1 1

Boole sche Funktionen 2 Boole sche Funktion f : {0, 1} {0, 1} 0 entspricht falsch. 1 entspricht wahr. x NOT(x) 0 1 1 0

Vollständigkeit 3 AND, OR und NOT sind die in C++ verfügbaren Boole schen Funktionen. Alle anderen binären Boole schen Funktionen sind daraus erzeugbar. x y XOR(x, y) 0 0 0 0 1 1 1 0 1 1 1 0

Vollständigkeit 3 AND, OR und NOT sind die in C++ verfügbaren Boole schen Funktionen. Alle anderen binären Boole schen Funktionen sind daraus erzeugbar. x y XOR(x, y) 0 0 0 0 1 1 1 0 1 1 1 0 XOR(x, y) = AND(OR(x, y), NOT(AND(x, y))

Vollständigkeit Beweis 4 Identifiziere binäre Boole sche Funktionen mit ihrem charakteristischen Vektor.

Vollständigkeit Beweis 4 Identifiziere binäre Boole sche Funktionen mit ihrem charakteristischen Vektor. x y XOR(x, y) 0 0 0 0 1 1 1 0 1 1 1 0

Vollständigkeit Beweis 4 Identifiziere binäre Boole sche Funktionen mit ihrem charakteristischen Vektor. x y XOR(x, y) 0 0 0 0 1 1 1 0 1 1 1 0 Charakteristischer Vektor: 0110

Vollständigkeit Beweis 4 Identifiziere binäre Boole sche Funktionen mit ihrem charakteristischen Vektor. x y XOR(x, y) 0 0 0 0 1 1 1 0 1 1 1 0 Charakteristischer Vektor: 0110 XOR = f 0110

Vollständigkeit Beweis 5 Schritt 1: erzeuge die elementaren Funktionen f 0001, f 0010, f 0100, f 1000 f 0001 = AND(x, y) f 0010 = AND(x, NOT(y)) f 0100 = AND(y, NOT(x)) f 1000 = NOT(OR(x, y))

Vollständigkeit Beweis 6 Schritt 2: erzeuge alle Funktionen durch Veroderung elementarer Funktionen f 1101 = OR(f 1000, OR(f 0100, f 0001 ))

Vollständigkeit Beweis 6 Schritt 2: erzeuge alle Funktionen durch Veroderung elementarer Funktionen f 1101 = OR(f 1000, OR(f 0100, f 0001 )) Schritt 3: erzeuge f 0000 f 0000 = 0.

Der Typ bool 7 Repräsentiert Wahrheitswerte. Literale true und false. Wertebereich {true, f alse} bool b = true; // Variable mit Wert true

bool vs int: Konversion 8 bool kann (leider) überall dort verwendet werden, wo int gefordert ist und umgekehrt.

bool vs int: Konversion 8 bool kann (leider) überall dort verwendet werden, wo int gefordert ist und umgekehrt. bool int true 1 false 0

bool vs int: Konversion 8 bool kann (leider) überall dort verwendet werden, wo int gefordert ist und umgekehrt. bool int true 1 false 0 int bool 0 true 0 false

bool vs int: Konversion 8 bool kann (leider) überall dort verwendet werden, wo int gefordert ist und umgekehrt. Viele existierende Programme verwenden statt bool oft nur die int-werte 0 und 1. Das ist schlechter Stil, der noch auf die Sprache C zurückgeht. bool int true 1 false 0 int bool 0 true 0 false

Logische Operatoren 9 Symbol Stelligkeit Präzedenz Assoziativität Logisches Und (AND) && 2 6 links Logisches Oder (OR) 2 5 links Logisches Nicht (NOT)! 1 16 rechts bool ( bool) bool R-Wert ( R-Wert) R-Wert

Relationale Operatoren 10 Symbol Stelligkeit Präzedenz Assoziativität Kleiner < 2 11 links Grösser > 2 11 links Kleiner gleich <= 2 11 links Grösser gleich >= 2 11 links Gleich == 2 10 links Ungleich!= 2 10 links Zahlentyp Zahlentyp bool R-Wert R-Wert R-Wert

DeMorgan sche Regeln 11!(a && b) == (!a!b)!(a b) == (!a &&!b)

DeMorgan sche Regeln 11!(a && b) == (!a!b)!(a b) == (!a &&!b)! (reich und schön) == (arm oder hässlich)

Präzedenzen 12 Binäre Arithmetische Operatoren binden stärker als relationale Operatoren und diese binden stärker als binäre logische Operatoren. 7 + x < y && y!= 3 * z

Präzedenzen 12 Binäre Arithmetische Operatoren binden stärker als relationale Operatoren und diese binden stärker als binäre logische Operatoren. (7 + x) < y && y!= (3 * z)

Präzedenzen 12 Binäre Arithmetische Operatoren binden stärker als relationale Operatoren und diese binden stärker als binäre logische Operatoren. ((7 + x) < y) && (y!= (3 * z))

Kurzschlussauswertung 13 Logische Operatoren && und werten den linken Operanden zuerst aus. Falls das Ergebnis dann schon feststeht, wird der rechte Operand nicht mehr ausgewertet. x!= 0 && z / x > y

Kurzschlussauswertung 13 Logische Operatoren && und werten den linken Operanden zuerst aus. Falls das Ergebnis dann schon feststeht, wird der rechte Operand nicht mehr ausgewertet. x hat Wert 1 x!= 0 && z / x > y

Kurzschlussauswertung 13 Logische Operatoren && und werten den linken Operanden zuerst aus. Falls das Ergebnis dann schon feststeht, wird der rechte Operand nicht mehr ausgewertet. x hat Wert 1 true && z / x > y

Kurzschlussauswertung 13 Logische Operatoren && und werten den linken Operanden zuerst aus. Falls das Ergebnis dann schon feststeht, wird der rechte Operand nicht mehr ausgewertet. x hat Wert 1 true && z / x > y

Kurzschlussauswertung 13 Logische Operatoren && und werten den linken Operanden zuerst aus. Falls das Ergebnis dann schon feststeht, wird der rechte Operand nicht mehr ausgewertet. x hat Wert 0 x!= 0 && z / x > y

Kurzschlussauswertung 13 Logische Operatoren && und werten den linken Operanden zuerst aus. Falls das Ergebnis dann schon feststeht, wird der rechte Operand nicht mehr ausgewertet. x hat Wert 0 false && z / x > y

Kurzschlussauswertung 13 Logische Operatoren && und werten den linken Operanden zuerst aus. Falls das Ergebnis dann schon feststeht, wird der rechte Operand nicht mehr ausgewertet. x hat Wert 0 false

Kurzschlussauswertung 13 Logische Operatoren && und werten den linken Operanden zuerst aus. Falls das Ergebnis dann schon feststeht, wird der rechte Operand nicht mehr ausgewertet. x hat Wert 0 x!= 0 && z / x > y Keine Division durch 0