Zum Inhalt springen
Topos Uranos

Zusammenfassung

Diese Lektion eröffnet die zweite Einheit des Kurses, die den Daten und ihren Typen gewidmet ist. Sie erklärt, wozu die Einheit dient: zu lehren, dass jedes Datum eines Programms im Speicher mit einem Typ lebt, der festlegt, welche Werte es annehmen kann, wie viel Platz es belegt und welche Operationen es zulässt, und dass diese Grenzen beobachtbare Folgen haben; sie stellt ihre vier Lektionen vor und den Faden, der sie verbindet, von der Variablen als Speicherzelle mit Namen und Wert bis zu den Konvertierungen zwischen Typen und den Konstanten; sie erinnert daran, was die Einheit aus der ersten voraussetzt, nämlich ein Programm, das liest und schreibt, zu schreiben, zu kompilieren und auszuführen; sie formuliert das Problem, das die Einheit löst, das eines dem Anschein nach korrekten Programms, dessen Rechnungen nicht mit denen der Mathematik übereinstimmen, angefangen bei der Summe 0.1+0.20.1 + 0.2, die auf einem Computer nicht genau 0.30.3 ergibt; 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 1 in Erinnerung rufen (den Zyklus aus Kompilieren und Ausführen, die formatierte Ausgabe, das Einlesen mit std::cin und das Lesen der Compilermeldungen) und es bei Bedarf wiederholen.
  3. An einem Beispiel erklären, warum eine Zahl eines Programms keine Zahl der Mathematik ist, und vorwegnehmen, warum 0.1+0.20.1 + 0.2 auf einem Computer nicht genau 0.30.3 ist.
  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 ersten voraussetzt: das schrittweise Nachvollziehen eines Verfahrens, das Schreiben einer Zahl mit zwei Nachkommastellen, das Runden und das Lesen einer Fehlermeldung. Die sechs folgenden behandeln in der Reihenfolge der Lektionen die zentralen Ideen der Einheit. Niemand muss sie schon richtig beantworten, und bei einer 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 Verfahren lautet: „1. rr erhält den Wert 17. 2. rr erhält den Wert r−5r - 5. 3. rr erhält den Wert r−5r - 5“. Welchen Wert hat rr am Ende?

  2. Frage 2Aus früheren EinheitenWas schreibt die Anweisung std::println("{:.2f}", 2.0 / 3);?

  3. Frage 3Aus früheren EinheitenMan will 12.34612.346 mit zwei Nachkommastellen schreiben und dabei runden. Was erhält man?

  4. Frage 4Aus früheren EinheitenEin Programm hat in Zeile 5 const int pages{12} und in Zeile 6 std::println("{}", pages);. Der Compiler schreibt 6:5: error: expected ',' or ';' before 'std'. Wo liegt der Defekt?

  5. Frage 5Ein Programm deklariert int a{2}; und int b{7}; und führt danach a = b; und b = 10; aus. Welchen Wert hat a am Ende?

  6. Frage 6Wie schreibt man die Zahl 13 zur Basis 2?

  7. Frage 7Ein int mit 4 Bytes enthält 2 147 483 6472\,147\,483\,647, seinen größten Wert, und das Programm addiert 1 dazu. Was lässt sich sagen?

  8. Frage 8Hat 1/31/3 eine endliche Dezimalentwicklung?

  9. Frage 9Was schreibt std::println("{}", 0.1 + 0.2);?

  10. Frage 10Ein Programm deklariert const double ratio{7 / 2}; und schreibt ratio. Was erscheint?