Grundlagen der Informatik I “Programmierung”
Grundlagen der Informatik I “Programmierung”
Grundlagen der Informatik I “Programmierung”
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Gegenlesen nicht findet(, aber auch bei Denkfehlern, die entstehen, wenn das Programm nicht verifiziert wurde.<br />
In den meisten Sprachen muß man hierzu Ergänzungen im Programmtext vornehmen, die man später wie<strong>der</strong><br />
rückgängig macht. Da dies auch wie<strong>der</strong> zu Fehlern führen kann, bietet Eiffel die Möglichkeit an, bestimmte<br />
Anweisungen in eine debug-Anweisung zu verlagern. Die Syntax<br />
debug Anweisung1; ...; Anweisungn end<br />
beschreibt eine Anweisung, die nur übersetzt wird, wenn die Compiler-Option DEBUG im System Description<br />
File entsprechend gesetzt ist. In diesem Falle verhält sich die debug-Anweisung wie eine gewöhnliche Anweisung,<br />
d.h. die Folge Anweisung1; ...; Anweisungn wird ausgeführt, wann immer sie an <strong>der</strong> Reihe ist. Ist<br />
die Option ausgeschaltet, so wird die debug-Anweisung einfach ignoriert, als ob sie gar nicht da wäre.<br />
4.3.9 Einfache Ein- und Ausgabe<br />
Im Gegensatz zu den üblichen Programmiersprachen hat Eiffel als Sprache keine Ein- und Ausgabe. Jedoch<br />
stellt das Eiffel System die Bibliotheksklassen FILE und STANDARD FILES zur Verfügung, <strong>der</strong>en features alle<br />
nötigen Prozeduren und Funktionen anbieten.<br />
• Die Klasse FILE bietet als Objekte sequentielle Dateien an. Eine sequentielle Datei kann man sich als ein<br />
Band vorstellen, von dem man entwe<strong>der</strong> nur von vorne nach hinten stückweise lesen kann (Eingabeband),<br />
o<strong>der</strong> an dem man nur am Ende neue Werte anfügen kann (Ausgabeband).<br />
• Die Klasse STANDARD FILES bietet als Attribute drei sequentielle Dateien vom Typ FILE an:<br />
– input für die Eingabe,<br />
– output für die Ausgabe und<br />
– error für Fehlermeldungen<br />
Darüber hinaus liefert sie Routinen, um die Ein- und Ausgabe am Bildschirm realisieren zu können.<br />
Abbildungen 4.12 und 4.13 stellen die wichtigsten davon zusammen.<br />
Routine Vorbedingung Nachbedingung<br />
readchar Das erste Zeichen des Eingabebands wurde<br />
entfernt und in den Puffer eingelesen<br />
lastchar readchar wurde durchgeführt Result = das im Puffer gespeicherte Zeichen<br />
readint Am Eingabeband steht als<br />
nächstes eine Ziffernfolge<br />
Die Zifferfolge wurde gelesen, vom Band entfernt,<br />
als INTEGER-Wert interpretiert und im<br />
Puffer gespeichert<br />
lastint readint wurde durchgeführt Result = <strong>der</strong> Integerwert im Puffer<br />
readreal Am Eingabeband steht eine Zeichenfolge,<br />
darstellt<br />
die eine REAL-Zahl<br />
Die Zifferfolge wurde gelesen, vom Band entfernt,<br />
als REAL-Wert interpretiert und im Puffer<br />
gespeichert<br />
lastreal readreal wurde durchgeführt Result = <strong>der</strong> Realwert im Puffer<br />
readline Alle Zeichen bis zum Return-Zeichen wurden<br />
eingelesen und im STRING-Puffer gespeichert<br />
laststring readline wurde durchgeführt Result = Verweis auf den Stringpuffer 35<br />
next line Ignoriert den Rest <strong>der</strong> Zeile. Der nächste Wert<br />
wird in <strong>der</strong> nächsten Zeile erwartet<br />
Abbildung 4.12: Die wichtigsten Routinen für die Eingabe<br />
35 Mit laststring.duplicate erhält man eine Kopie des gelesenen Strings statt des Verweises auf den Puffer