Zum Inhalt springen
Topos Uranos

Zusammenfassung

Diese Lektion eröffnet die vierte Einheit des Kurses, die dem Kontrollfluss gewidmet ist. Sie erklärt, wozu die Einheit dient: zu lehren, die Reihenfolge zu steuern, in der die Anweisungen eines Programms ausgeführt werden, mit Entscheidungen und mit Schleifen, und über ihre Korrektheit zu argumentieren, das heißt sicherzustellen, dass jeder Fall behandelt wird, dass jede Schleife tut, was sie soll, und dass sie terminiert; sie stellt ihre vier Lektionen vor und den Faden, der sie verbindet; sie erinnert daran, was die Einheit voraussetzt, vor allem die zusammengesetzten Bedingungen der Einheit 3; sie formuliert das Problem, das die Einheit löst, das eines Programms, das den größten gemeinsamen Teiler mit einer festen Anzahl von Schritten berechnet und je nach Daten falsch antwortet oder bei einer Division durch null anhält; sie nimmt die Invariante als das Werkzeug vorweg, mit dem die Einheit ihre Schleifen begründen wird; 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. Sich an die zusammengesetzten Bedingungen der Einheit 3 erinnern (die Junktoren, die Kurzschlussauswertung und die Negation mit den De Morganschen Gesetzen) und sie bei Bedarf wiederholen.
  3. An einem Beispiel die Invariante als Werkzeug des Argumentierens vorwegnehmen: eine Beziehung zwischen den Variablen, die eine Wiederholung erhält und die am Ende das Ergebnis liefert.
  4. Erkennen, was man am Ende der Einheit können soll, und es von dem unterscheiden, was in den folgenden Einheiten gelernt 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 voraussetzt: die Negation einer zusammengesetzten Bedingung, die Kurzschlussauswertung, die Ablaufverfolgung einer Wiederholung aus Lektion 1.1 und die Grenze eines int. Die sieben folgenden behandeln in der Reihenfolge der Lektionen die zentralen Ideen der Einheit, und mehrere von ihnen gehen von der Schulmathematik aus: der größte gemeinsame Teiler, das Summenzeichen, die Terminierung eines Verfahrens. Niemand muss sie schon richtig beantworten, und bei einigen 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 EinheitenWas ist die Negation der Bedingung 1 <= n && n <= 10?

  2. Frage 2Aus früheren EinheitenWas geschieht mit int d{0}; und int n{5}; beim Auswerten von d != 0 && n / d > 2?

  3. Frage 3Aus früheren EinheitenDie Division durch fortgesetzte Subtraktion aus Lektion 1.1 beginnt mit q=0q = 0 und r=ar = a und wiederholt „solange r≥br \geq b, subtrahiere bb von rr und addiere 1 zu qq“. Wie oft wird mit a=20a = 20 und b=5b = 5 der Rumpf der Wiederholung ausgeführt?

  4. Frage 4Aus früheren EinheitenWas garantiert der Standard bei einem int mit 32 Bit über den Wert von 46341 * 46341?

  5. Frage 5Ein Programm enthält die Kette von Entscheidungen if (score >= 50), die „Bestanden“ schreibt; else if (score >= 90), die „Ausgezeichnet“ schreibt; und else, die „Nicht bestanden“ schreibt. Was schreibt es, wenn score gleich 95 ist?

  6. Frage 6Welcher der folgenden Ausdrücke bezeichnet die Summe 1+2+⋯+n1 + 2 + \cdots + n?

  7. Frage 7Was schreibt std::println("{}", total); mit int total{0}; nach for (int i{0}; i < 5; ++i) { total += i; }?

  8. Frage 8Welche Beziehung zwischen den Variablen gilt bei der Division durch fortgesetzte Subtraktion (q=0q = 0, r=ar = a; solange r≥br \geq b, geht rr in r−br - b über und qq in q+1q + 1) jedes Mal, wenn die Bedingung ausgewertet wird?

  9. Frage 9Ein Verfahren geht von einer beliebigen ganzen Zahl nn aus (positiv, null oder negativ) und wiederholt „solange n>0n > 0, subtrahiere 2 von nn“. Terminiert es für jedes nn?

  10. Frage 10Was ist der größte gemeinsame Teiler von 84 und 36?

  11. Frage 11Bis zu welchem Teiler muss man gehen, um durch Probieren von Teilern zu entscheiden, ob 101 eine Primzahl ist?