ВУЗ:
Составители:
Рубрика:
57
25. Formatierung der Ausgabe
Wenn man die obigen Anweisungen einmal ausprobiert, stellt man sehr schnell
fest, daß die Ausgabe anders aussieht als erwartet. Vor allem das Format der REAL-
Zahlen laß sehr zu wünschen übrig. Enthält die Variable у den Wert 5, liefert die Zeile
Writeln(Sqr(y)); die Ausgabe 2.5000000000E+01. Das ist mehr als nur schwer lesbar,
denn eine einfache 25 würde uns vollkommen genügen. Auch eine 25.00 wäre ganz
nett.
Diese von Pascal normalerweise verwendete Ezponentialdarstellung wird immer
dann für REAL-Zahlen verwendet, wenn man als Programmierer nichts anderes sagt.
Wir wollen aber etwas anderes, nämlich 25.00. Dies gelingt durch die Verwendung
der sogenannten Formatierungsparameter in der Ausgabeanweisung. Man gibt
unmittelbar (!) an den zu formatierenden Ausdruck zwei IITEGER-Werte durch
Doppelpunkt getrennt, mit an. Der erste Wert steht für die Gesamtstellenzahl, die der
auszugebende Wert annehmen soll, der zweite für die Zahl der Nachkommastellen.
Man nennt den ersten Wert auch Feldbreite. Ändern wir unsere Ausgabeanweisung
um in WriteLn(sqr(y):6:S); so erhalten wir das gewünschte Ergebnis 25.00, weil :6:2
uns eine sechsstelliges Feld mit zwei Nachkommastellen vorgibt. Der auszugebende
Wert wird immer rechtsbündig in das Feld eingestellt. Damit ist es möglich, eine
Tabelle auszugeben, bei der alle Dezimalpunkte (Kommas gibts es bei Zahlen nur in
Deutschland) untereinander stehen.
Aber was passiert, wenn die Feldbreite zu schmal gewählt wurde? Dann denkt
unser Compiler mit (ausnahmsweise) und fügt die fehlenden Stellen vorne an. Das
bedeutet, es wird nichts abgeschnitten oder gekürzt, sondern die Feldbreite wird
automatisch entsprechend vergrößert. Dieser Fall ist für Tabellen absolut
unerwünscht, weil dann die Tabellenstruktur zum Teufel geht, aber in Fließtext (so
wie in diesem Text) genau das Richtige. Soll nämlich eine Ausgabe so nah wie
möglich an den vorherigen Text herangerückt werden, verwendet man eine Feldbreite
von l, die dann automatisch so weit vergrößert wird, wie es im Moment erforderlich
ist. Dadurch werden die im Fließtext störenden, führende Leerzeichen verhindert.
Man muß für die Formatierungsparameter übrigens keine festen Zahlen angeben,
erlaubt ist ein beliebiger Ausdruck, der einen IHTEGER-Wert zurückliefert! Damit
kann man dann die Feldbreiten im Programm selbst ausrechnen lassen, was man in
manchen Fällen durchaus braucht. Aber auch mit Konstanten kann man hier viel an
Übersichtlichkeit gewinnen.
Soweit die Formatierung für REAL-Werte. Das Prinzip funktioniert aber für alle
bisher bekannten Datentypen, nur daß es keine Nachkommastellen gibt. Die
Anweisung WriteLn (gefunden:20) schreibt den Inhalt von gefunden rechtsbündig in
ein 20 Zeichen breites Feld und füllt vorne mit Leerzeichen auf. Das Ergebnis sieht
(ungefähr)
2
so aus FALSE. Einfach mal ausprobieren.
Nachkommastellen gibt es aber nur bei reellen Zahlen, daher darf man auch nur
dann Nachkommastellen verlangen, wenn es welche gibt. Handelt es sich um ganze
Zahlen (IHTEGER oder CHAR), darf man nur die Feldbreite angeben, sonst gibts
Ärger.
Страницы
- « первая
- ‹ предыдущая
- …
- 55
- 56
- 57
- 58
- 59
- …
- следующая ›
- последняя »