Zusammenfassung
Ein Programm verwandelt Eingaben in Ausgaben, und diese Lektion untersucht die beiden Enden dieser Verwandlung und das, was zwischen ihnen schiefgehen kann. Sie lehrt, mit std::print und std::println zu schreiben, mit Platzhaltern und Formatangaben, die Breite, Ausrichtung und Nachkommastellen festlegen; Zahlen mit std::cin zu lesen; vorherzusehen, was geschieht, wenn der Benutzer etwas anderes eingibt als das Verlangte, was bei einem Eingabesystem wie dem von C++ keine Warnung erzeugt, sondern einen Stream im Fehlerzustand und eine Variable mit einer Null; und die Fehler eines Programms nach dem Zeitpunkt, zu dem sie sich zeigen, in vier Arten einzuteilen: Kompilierfehler, Linkerfehler, Laufzeitfehler und Logikfehler. Sie schließt mit dem methodischen Lesen der Meldungen des Compilers.
Lernziele
- Programme schreiben, die Daten mit
std::cinlesen und Ergebnisse mitstd::printlnschreiben, und dabei Formatangaben für die Breite und die Nachkommastellen verwenden. - Die genaue Ausgabe eines Programms mit mehreren Aufrufen von
std::printundstd::printlnvorhersagen, Zeilenumbrüche eingeschlossen. - Beschreiben, was geschieht, wenn die Eingabe nicht die erwartete Form hat (Buchstaben statt einer Zahl), und den Zustand des Lesens prüfen.
- Einen Fehler als Kompilier-, Linker-, Laufzeit- oder Logikfehler einordnen und ihn anhand seines Erscheinungsbildes lokalisieren.
Das Programm und seine Grenze
In der Lektion Vom Problem zum Algorithmus wurde jedes Problem durch das spezifiziert, was hineingeht und was herauskommt. Ein Programm verwirklicht diese Spezifikation: Es empfängt Daten, verwandelt sie und liefert Ergebnisse. Nun entstehen die Daten aber nicht im Programm, sondern außerhalb, an der Tastatur dessen, der es benutzt, in einer Datei oder in einem anderen Programm; und auch die Ergebnisse bleiben nicht drinnen, sondern gehen auf einen Bildschirm, in eine Datei oder an ein anderes Programm. Die Verbindung mit dieser Außenwelt läuft über zwei Kanäle, die das Betriebssystem für jedes Programm öffnet, wenn es dieses startet: die Standardeingabe, die in einem Terminal das ist, was man auf der Tastatur tippt, und die Standardausgabe, die das ist, was das Terminal anzeigt. C++ stellt sie als Streams dar: Folgen von Zeichen, die der Reihe nach, eines nach dem anderen, verbraucht oder erzeugt werden.
Die beiden Enden sind nicht symmetrisch. Über die Ausgabe entscheidet das Programm, und deshalb lässt sie sich genau schreiben: Jedes Zeichen, das auf dem Bildschirm erscheint, ist dasjenige, das das Programm schreiben ließ. Über die Eingabe dagegen entscheidet ein anderer: Das Programm verlangt eine Zahl, aber wer vor der Tastatur sitzt, kann ein Wort tippen, eine Zahl mit Dezimalkomma, eine zu große Zahl oder gar nichts. Wenn das so ist, ist die Eingabe eine nicht vertrauenswürdige Grenze, und jedes Programm, das Daten liest, muss vorsehen, was es tun wird, wenn das Empfangene nicht die erwartete Form hat. Diese Lektion lehrt zuerst das Schreiben, dann das Lesen, dann, was geschieht, wenn das Lesen scheitert, und zuletzt, die Fehler, die des Programms und nicht die des Benutzers, nach dem Zeitpunkt zu erkennen, zu dem sie sich zeigen.
Inhalt wird geladen…
Abgeschlossen
Melde dich an, um deinen Fortschritt zu speichern