07.10.2013 Aufrufe

Vorlesungsskript - Hochschule Emden/Leer

Vorlesungsskript - Hochschule Emden/Leer

Vorlesungsskript - Hochschule Emden/Leer

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

c○ Prof. Dr. B. Bartning, HS <strong>Emden</strong>/<strong>Leer</strong> Rumpfskript ” Informatik I/II“ (WS/SS 2010/11) 50<br />

5.2 Standardstreams, Fehlerbehandlung<br />

– siehe auch (Cpp/Kap. 3) –<br />

(5.20) Übb Dieses Unterkapitel führt genauer in die Welt der Streams ( ” Ströme“) ein. Daher<br />

wird es in der Vorlesung ausführlich erläutert. Eine genaue Kenntnis der hier abgehandelten<br />

Punkte ist für die Programmierung unerlässlich. Sie lernen die genaueren Eigenschaften<br />

der Ausgabe- und Eingabestromobjekte kennen (5.21, 5.22), danach den Zugriff über Elementfunktionen<br />

und Manipulatoren (5.23), wobei dadurch auch eine bequeme Formatierung der<br />

Ausgabe erfolgen kann.<br />

Es ist sehr wichtig, die zwei verschiedenen Arten des Einlesens zu unterscheiden: das Einlesen<br />

mit Hilfe des Eingabeoperators (>>), wo zunächst führende Zwischenraumzeichen überlesen<br />

werden (5.21 Kasten), und das Einlesen jedes einzelnen Zeichens mit der get-Funktion und<br />

verwandten Funktionen (5.24).<br />

Der Punkt (5.25) bietet eine Einführung in die Fehlerbehandlung durch Stromobjekte; ohne<br />

diese Kenntnisse ist es Sie kaum möglich, gut laufende Programme zu schreiben; denn<br />

fehlerhafte Eingaben durch Benutzer sind immer möglich. Da ein Stromobjekt im Fehlerfall<br />

(fast) nichts mehr tut, muss man wissen, dass (und wie) dieser Zustand behandelt werden<br />

muss.<br />

In (5.26) sehen Sie Beispielprogramme (im Internet jeweils als vollständige Programm erhältlich);<br />

es ist sehr wichtig, die Wirkung dieser Programm zu verstehen.<br />

(5.21) Variablenname für die Standardeingabeeinheit: cin (character in)<br />

Standardeingabe: meist Tastatur, kann auf der Betriebssystemebene umgeleitet werden, s.<br />

(1.35).<br />

” Dateiende-Zeichen“ bei Eingabe von Tastatur unter DOS/Windows: Strg-Z (Ctrl-Z, ASCII dez.<br />

26), unter Unix je nach Systemeinstellung ebenfalls Strg-Z oder anders, unter Linux standardmäßig<br />

Strg-D.<br />

Anweisung zum Einlesen: cin [- >> Variable ]- 1..n ;<br />

Anm1 Genauer eigentlich [- . . . ]- 0..n, jedoch nullmal wenig sinnvoll.<br />

Anm2 Haupteffekt des obigen Ausdrucks: s. (5.25c) (Streamobjekt als Referenz).<br />

Anm3 Die Eingabe über cin wird i. a. durch das BS (Betriebssystem) gepuffert:<br />

Anforderung C ++ an BS bzw. dessen Tastaturpuffer: zeichenweise,<br />

Einlesen vom Benutzer durch BS in BS-Tastaturpuffer: zeilenweise.<br />

Bei dieser gepufferten Eingabe über cin gibt der Ausdruck<br />

cin.rdbuf()->in avail()<br />

die Anzahl der im Augenblick im Puffer befindlichen Zeichen an (einschließlich ggf. Zeilenendezeichen).<br />

Bsp s. (5.26e).<br />

Anm4 Zum Einlesen bei C (C++) s. folgende Bibliotheksfunktionsfamilien aus :<br />

scanf, gets, getchar.<br />

Grundsätzlich sind zwei verschiedene Arten des Einlesens über cin zu unterscheiden:<br />

• Lesen mithilfe des Eingabeoperators ” >>“ – so wie oben angegeben:<br />

◦ Zunächst Überlesen aller möglicherweise vorhandenen Zwischenraumzeichen;<br />

als Zwischenraumzeichen (oder Trennungszeichen) 〈white spaces〉 gelten hier<br />

<strong>Leer</strong>zeichen, horizontTab, CR ( ” Wagenrücklauf“), LF (NeueZeile), NeueSeite,<br />

vertikTab.<br />

◦ Beginn des eigentlichen Lesens, d. h. der Übernahme/Umwandlung von Zeichen<br />

in die zugehörige Variable: mit dem ersten Nicht-Zwischenraumzeichen.<br />

◦ Ende des Einlesens: beim ersten zum Variablentyp nicht passenden Zeichen<br />

(beim Typ String ist es ein Zwischenraumzeichen);<br />

wichtig: dieses unpassende Zeichen bleibt im Lesepuffer, ist also beim nächsten<br />

Lesevorgang das als erstes zu lesende Zeichen.<br />

• Benutzung von Elementfunktionen, s. (5.24), (5.23b): keine Sonderbehandlung<br />

von Zwischenraumzeichen, jedes Zeichen gilt als ein zu lesendes Zeichen.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!