Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| lehrkraefte:snr:informatik:glf22:python:wahrheitswerte-logische-verknuepfungen [2022/09/19 14:12] – [Zum Aufwärmen] Olaf Schnürer | lehrkraefte:snr:informatik:glf22:python:wahrheitswerte-logische-verknuepfungen [2023/09/19 10:34] (current) – Olaf Schnürer | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ~~NOTOC~~ | ||
| + | |||
| + | ====== Motivation ====== | ||
| + | |||
| + | <WRAP center round info> | ||
| + | Das folgende kleine Quiz-Programm in Python ist vermutlich einfach zu verstehen. Du kannst es gerne herunterladen und ausführen. | ||
| + | |||
| + | <code python quiz.py> | ||
| + | antwort = input(" | ||
| + | if (antwort == "St. Gallen" | ||
| + | print(" | ||
| + | else: | ||
| + | print(" | ||
| + | print(" | ||
| + | </ | ||
| + | |||
| + | Damit du dieses Programm richtig verstehst und in Zukunft ähnliche Programme problemlos schreiben kannst, werden im Rest dieser Webseite und auf der nachfolgenden Seite zu " | ||
| + | * Vergleichszeichen (etwa '' | ||
| + | * Wahrheitswerte | ||
| + | * logische Verknüpfungen (etwa '' | ||
| + | * if-else-statements (beachte die Einrückungen im obigen Programm!) | ||
| + | </ | ||
| + | |||
| + | ====== Ein wenig Logik ====== | ||
| + | |||
| + | ===== Zum Aufwärmen ===== | ||
| + | |||
| + | <WRAP center round todo> | ||
| + | Zur Einstimmung auf die folgenden eher theoretischen Erklärungen gib in der Python-Shell die folgenden Befehle (oder zumindest einige davon) ein (jeweils gefolgt von '' | ||
| + | |||
| + | Versuche, die Antworten des Computers vorherzusagen bzw. zu verstehen! | ||
| + | |||
| + | (Die Worte in den Überschriften dienen der Orientierung und werden unten erklärt. Die Python-Shell antwortet immer, wenn deine Anfrage eine " | ||
| + | |||
| + | === Vergleichsoperatoren === | ||
| + | |||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * ''" | ||
| + | * ''" | ||
| + | * ''" | ||
| + | * '' | ||
| + | |||
| + | === Datentypen === | ||
| + | |||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | |||
| + | === Boolesche Variablen = Booleans === | ||
| + | |||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | === Logische Verknüpfungen === | ||
| + | |||
| + | Logisches Und: | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | Logisches Oder: | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | Verneinung = Negation: | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | <hidden Lösungshinweis:> | ||
| + | Alles sollte klar werden, sobald du den folgenden Text liest! | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | ===== Wahrheitswerte (= boolesche Werte) und boolesche Variablen ===== | ||
| + | |||
| + | <WRAP round info> | ||
| + | Eine Aussage kann entweder '' | ||
| + | |||
| + | Auf Englisch und in Python heissen die beiden Wahrheitswerte '' | ||
| + | |||
| + | Der zugehörige Datentyp in Python heisst | ||
| + | |||
| + | * '' | ||
| + | |||
| + | Du hast dies in der Python-Shell bereits durch die Eingabe der Befehle '' | ||
| + | |||
| + | Variablen vom Datentyp '' | ||
| + | |||
| + | In der obigen Aufgabe war '' | ||
| + | </ | ||
| + | |||
| + | ===== Logische Verknüpfungen ===== | ||
| + | |||
| + | <WRAP round info> | ||
| + | Boolesche Werte kann man mit den **logischen Verknüpfungen** '' | ||
| + | |||
| + | Diese Verknüpfungen sind durch die folgenden Tabellen definiert (wie du bereits in der obigen Aufgabe herausgefunden hast). | ||
| + | |||
| + | ---- | ||
| + | |||
| + | **Definition von '' | ||
| + | |||
| + | Die letzte Spalte der folgenden Tabelle gibt den Wert des //logischen Und// in Abhängigkeit von allen möglichen Belegungen der Variablen $a$ und $b$ an. | ||
| + | Die vorletzte Zeile besagt beispielsweise, | ||
| + | <WRAP round box center 80%> | ||
| + | | $a$ | $b$ | $a$ '' | ||
| + | | False | False | False | | ||
| + | | False | True | False | | ||
| + | | True | False | False | | ||
| + | | True | True | True |\\ | ||
| + | </ | ||
| + | |||
| + | Merke: Logisches Und '' | ||
| + | |||
| + | ---- | ||
| + | |||
| + | **Definition von '' | ||
| + | |||
| + | <WRAP round box center 80%> | ||
| + | | $a$ | $b$ | $a$ '' | ||
| + | | False | False | False | | ||
| + | | False | True | True | | ||
| + | | True | False | True | | ||
| + | | True | True | True | | ||
| + | </ | ||
| + | |||
| + | Merke: Logisches Oder '' | ||
| + | |||
| + | ---- | ||
| + | |||
| + | **Definition von '' | ||
| + | |||
| + | <WRAP round box center 80%> | ||
| + | | $a$ | '' | ||
| + | | False | True | | ||
| + | | True | False | | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | |||
| + | <WRAP center round todo> | ||
| + | Wenn noch nicht intuitiv klar: Lerne die obigen Tabellen für '' | ||
| + | |||
| + | Sage das Ergebnis der folgenden booleschen Ausdrücke voraus. Teste dann jeweils in der Python-Shell, | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | Wenn du zu viele Fehler gemacht hast: Erfinde eigene ähnliche Ausdrücke und teste dich selbst. | ||
| + | </ | ||
| + | |||
| + | <hidden Mathematische Zusatzinfo> | ||
| + | In der mathematischen Logik schreibt man meist effizienter | ||
| + | * "$a \land b$" statt "$a$ '' | ||
| + | * "$a \lor b$" statt "$a$ '' | ||
| + | * "$\neg a$" oder " | ||
| + | Beim Rechnen mit Zahlen verwendest du mehr oder weniger bewusst diverse Rechenregeln (Kommutativgessetze, | ||
| + | Ähnliche Regeln (und noch einige mehr, etwa die "de morganschen Gesetze" | ||
| + | </ | ||
| + | |||
| + | ==== Vergleich zum normalen Sprachgebrauch: | ||
| + | |||
| + | <WRAP center round box> | ||
| + | Die logischen Verknüpfungen '' | ||
| + | * Die Sonne scheint und das Haus ist rot. | ||
| + | * Die Sonne scheint oder das Haus ist rot. | ||
| + | * Es ist nicht richtig, dass die Sonne scheint. | ||
| + | |||
| + | <WRAP center round important 80%> | ||
| + | Im normalen Sprachgebrauch suggeriert " | ||
| + | |||
| + | Im Sinne des oben definierten logischen Oders '' | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | ==== Vergleichszeichen oder "Wie entstehen Wahrheitswerte?" | ||
| + | |||
| + | <WRAP round info> | ||
| + | Vergleiche liefern Boolesche Werte: | ||
| + | * '' | ||
| + | * '' | ||
| + | * ''<'': | ||
| + | * ''< | ||
| + | * ''>'': | ||
| + | * ''> | ||
| + | |||
| + | <WRAP center round box> | ||
| + | Die Zeichen '' | ||
| + | </ | ||
| + | |||
| + | |||
| + | <WRAP right round important> | ||
| + | Achtung: Das einzelne Zeichen '' | ||
| + | |||
| + | (Da die Informatiker das mathematische Gleichheitszeichen zweckentfremdet haben, müssen sie zur Strafe nun immer zwei Gleichheitszeichen eingeben, wenn sie auf Gleichheit testen wollen.) | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | <WRAP center round todo> | ||
| + | Teste in der Python-Shell: | ||
| + | * alle 6 Vergleichszeichen zum Vergleich von Zahlen, also etwa '' | ||
| + | * Gleichheitszeichen '' | ||
| + | * die anderen vier Vergleichszeichen zum Vergleich von Strings, die nur aus Kleinbuchstaben bestehen; | ||
| + | * Gleichheitszeichen '' | ||
| + | |||
| + | Du darfst natürlich auch beliebige Strings oder Booleans mit den " | ||
| + | |||
| + | <hidden Zum Vergleich von Strings> | ||
| + | Strings können unproblematisch mit den Zeichen '' | ||
| + | |||
| + | Wenn man nur Strings vergleicht, die aus Kleinbuchstaben bestehen, wird die [[https:// | ||
| + | Kommen nur Grossbuchstaben vor, so wird dieselbe Ordnung verwendet. | ||
| + | |||
| + | Wenn sowohl Gross- als auch Kleinbuchstaben vorkommen, kommen vermutlich unerwartete Ergebnisse heraus, denn als " | ||
| + | " | ||
| + | </ | ||
| + | |||
| + | <hidden Zum Vergleich von Booleans> | ||
| + | Auch hier ist der Vergleich mit '' | ||
| + | |||
| + | Intern wird '' | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Link zur Kursseite ===== | ||
| + | |||
| + | [[lehrkraefte: | ||
| + | |||