Zum Inhalt springen
Topos Uranos

Zusammenfassung

Eine Bedingung ist ein Ausdruck, dessen Wert wahr oder falsch ist. Diese Lektion untersucht, wie Bedingungen in C++ gebildet werden: die sechs Vergleichsoperatoren, die zwei Werte vergleichen und ein bool liefern; die drei logischen Junktoren &&, || und !, die Bedingungen wie die Konjunktion, die Disjunktion und die Negation der Logik verknüpfen, und den Vorrang, der sie untereinander und gegenüber der Arithmetik ordnet. Sie untersucht außerdem zwei Züge, in denen C++ von der mathematischen Schreibweise abweicht: die Kette 1 < x < 5, die kompiliert und nicht bedeutet, was sie zu bedeuten scheint, und die Kurzschlussauswertung, durch die der zweite Operand von && und von || nicht ausgewertet wird, wenn der erste das Ergebnis schon entscheidet, was es erlaubt, eine gefährliche Operation abzusichern. Sie schließt mit der Negation zusammengesetzter Bedingungen mithilfe der De Morganschen Gesetze, überprüft mit Wahrheitstafeln, und mit ihrem zentralen Beispiel: der Bedingung für ein Schaltjahr und ihrer Negation. Die Einheit hat noch keine Entscheidungen: Die Bedingungen werden ausgewertet und als true oder false ausgegeben, und die Lektion Entscheidungen wird sie das Programm steuern lassen.

Lernziele

  1. In C++ zusammengesetzte Bedingungen schreiben, die Aussagen wie „xx liegt zwischen 1 und 10, Grenzen eingeschlossen“ übersetzen.
  2. Eine zusammengesetzte Bedingung mit den De Morganschen Gesetzen verneinen und die Äquivalenz mit einer Wahrheitstafel überprüfen.
  3. Die Kurzschlussauswertung nutzen, um eine Operation abzusichern, wie in count != 0 && total / count > 2.
  4. Den Fehler erkennen, 1 < x < 5 zu schreiben, erklären, was er berechnet, und ihn korrigieren.

Die Bedingung als Ausdruck

Die Lektion Zeichen, boolesche Werte, Umwandlungen und Konstanten hat den Typ bool mit seinen beiden Werten true und false vorgestellt, und die Lektion Arithmetik hat gezeigt, dass ein Ausdruck einen Baum hat, den Vorrang und Assoziativität festlegen, und einen Typ, den seine Operanden festlegen. Diese Lektion vereint beide Gedanken. Eine Bedingung ist ein Ausdruck vom Typ bool: keine Anweisung, die etwas fragt, sondern eine Berechnung, deren Ergebnis eine Antwort ist. count < 10 wird berechnet wie count + 1: Man nimmt die Operanden, wendet den Operator an und erhält einen Wert, nur dass der Wert true oder false ist statt einer Zahl. Wenn dem so ist, gilt alles, was für arithmetische Ausdrücke gilt, auch für Bedingungen: Sie haben Vorrang, sie haben einen Baum, sie lassen sich in einer benannten Variablen speichern (const bool inRange{…}) und sie lassen sich ausgeben. Daraus folgt die Frage, die die Lektion durchzieht: Welcher Ausdruck hat zu einem gegebenen Satz („das Jahr ist ein Schaltjahr“, „das Alter liegt zwischen 18 und 65“) genau diesen Wahrheitswert für alle möglichen Daten?