Zum Inhalt springen
Topos Uranos

Zusammenfassung

Diese Lektion eröffnet die dritte Einheit des Kurses, die den Ausdrücken und ihren Operatoren gewidmet ist. Sie erklärt, wozu die Einheit dient: zu lehren, Ausdrücke zu bilden, deren Wert sich mit Gewissheit vorhersagen lässt, weil man weiß, welche Operation zuerst ausgeführt wird, welchen Typ das Ergebnis hat, welche Nebeneffekte sie haben und welche Ausdrücke keine Bedeutung haben; sie stellt ihre vier Lektionen vor und den Faden, der sie verbindet, von der ganzzahligen und reellen Arithmetik bis zu den Bits und der Mathematikbibliothek, über die Bedingungen und den Katalog des undefinierten Verhaltens; sie erinnert daran, was die Einheit aus der zweiten voraussetzt, nämlich den Typ jedes Datums, seine Grenzen und seine Konvertierungen; sie formuliert das Problem, das die Einheit löst, das eines Programms, das ohne eine einzige Warnung kompiliert und dessen Antworten auf sechs Schulfragen alle falsch sind, wenn sie nicht ganz fehlen; und sie zeigt, wohin sie führt, in den folgenden Einheiten und im Kurs Programmieren in C++ II.

Lernziele

  1. Die Abfolge der Inhalte der Einheit beschreiben und erklären, was jede Lektion zur nächsten beiträgt.
  2. Das Nötige aus Einheit 2 (die ganzzahligen und reellen Typen, ihre Wertebereiche, den Überlauf und die Konvertierungen) in Erinnerung rufen und es bei Bedarf wiederholen.
  3. An einem Beispiel vorwegnehmen, dass der Wert eines Ausdrucks von Auswertungsregeln abhängt (dem Vorrang, dem Typ der Operanden, der Reihenfolge der Wirkungen), die nicht immer mit denen der Schulmathematik übereinstimmen.
  4. Erkennen, was man am Ende der Einheit können soll, und es von dem unterscheiden, was man in den folgenden Einheiten lernen wird.

Eingangstest

Bevor man die Einheit durcharbeitet, lohnt es sich, den Ausgangspunkt zu bestimmen. Dieser Test ist eine Selbstüberprüfung: Er wird nicht benotet, und sein einziger Zweck ist es, das Lernen zu leiten. Die ersten vier Fragen prüfen, was die Einheit aus der zweiten voraussetzt: die Division zwischen ganzen Zahlen, das Schreiben zur Basis 2, die vorzeichenlose Subtraktion und den vorzeichenbehafteten Überlauf. Die sechs folgenden behandeln in der Reihenfolge der Lektionen die zentralen Ideen der Einheit, und mehrere von ihnen gehen von der Schulmathematik oder von der elementaren Logik aus. Niemand muss sie schon richtig beantworten, und bei zweien von ihnen ist „Das weiß ich noch nicht“ eine ehrliche Antwort: Jede Antwort, ob richtig oder nicht, erklärt den Punkt und nennt die Lektion, die ihn behandelt. Dieselben Fertigkeiten werden am Ende erneut gemessen, in der Synthese-Lektion.

Eingangstest

Miss vor Beginn der Einheit deinen Ausgangspunkt. Es ist eine kurze Selbsteinschätzung: Sie wird nicht benotet, und das Ergebnis wird nur in deinem Browser gespeichert.

  1. Frage 1Aus früheren EinheitenEin Programm deklariert const double r{7 / 2}; und schreibt r. Was erscheint?

  2. Frage 2Aus früheren EinheitenWie schreibt man die Zahl 13 zur Basis 2, mit acht Bits?

  3. Frage 3Aus früheren EinheitenWas schreibt std::println("{}", 0u - 1); mit einem unsigned int von 32 Bit?

  4. Frage 4Aus früheren EinheitenEin Programm führt int count{std::numeric_limits<int>::max()}; und danach count = count + 1; aus. Was garantiert der Standard über den Wert von count?

  5. Frage 5Welchen Wert haben 2+3⋅42 + 3 \cdot 4 und (2+3)⋅4(2 + 3) \cdot 4?

  6. Frage 6Welche Werte haben nach dem Divisionssatz der Mathematik, mit dem Rest rr unter der Bedingung 0≤r<20 \leq r < 2, der Quotient qq und der Rest rr von −7-7 geteilt durch 22?

  7. Frage 7Wie lautet die Negation von „Es regnet und es ist kalt“?

  8. Frage 8Was schreibt std::println("{}", 3 < 5);?

  9. Frage 9Welche Werte haben a und b nach int a{5}; und int b{a++ * 2};?

  10. Frage 10Was schreibt std::println("{}", 2 ^ 3);?