Ada/FAQ
Aus StudiWiki
Inhaltsverzeichnis |
[bearbeiten] Ausgabe
[bearbeiten] Wie veranlasse ich ein Zeilenumbruch?
mit new_line oder put_line(...)
beispiel:
procedure kostet is
begin
put("all your base");
new_line;
put_line("are");
put("belong to us");
end;
ausgabe
all your base are belong to us
[bearbeiten] Wie wandle ich einen Integer in einen String um?
mit my_integer'img oder integer'image(my_integer)
beispiel:
zahl := 2;
put_line("das kostet"&zahl'img&" geld");
oder
put_line("das kostet"&integer'image(2)&" geld")
ausgabe:
das kostet 2 geld
[bearbeiten] Wieso macht 'img vorne immer ein Leerzeichen rein? Geht das auch ohne?
Das Leerzeichen ist reserviert für ein eventuelles Vorzeichen.
zahl := 2;
put("das kostet"&zahl'img&" geld");
new_line;
zahl := -2;
put("das kostet"&zahl'img&" geld");
ausgabe:
das kostet 2 geld das kostet -2 geld
Die guten Leute von Ada haben eine Möglichkeit gegeben, dieses Verhalten zu unterbinden. Siehe unten - Stichwort: ,0
[bearbeiten] Wie kann ich dann ein Integer im text ausgeben?
zahl := 2;
put("das kostet ");
put(zahl);
put(" geld");
ausgabe:
das kostet 2 geld
(beachte anzahl der leerzeichen)
[bearbeiten] Wieso die vielen Leerzeichen? Kann man die diesmal unterbinden?
Da sind genau 11 Stellen reserviert für die gröste (kleinste) darstellbare Integer Zahl (10 Stellen) und ein vorzeichen (1 Stelle).
Die gröste darstellbare Integer Zahl ist 2147483647.
Die kleinste ist -2147483647.
put("das kostet ");
put(integer'last);
put(" geld");
new_line;
zahl := 2;
put("das kostet ");
put(zahl);
put(" geld");
new_line;
put("das kostet ");
put(integer'first);
put(" geld");
ausgabe
das kostet 2147483648 geld das kostet 2 geld das kostet -2147483648 geld
Glücklicherweise haben die guten Leute von Ada hier eine möglichkeit gegeben.
zahl := 2;
put("das kostet ");
put(zahl,0);
put(" geld");
ausgabe
das kostet 2 geld
das zweite argument "0" bedeutet das vor der Zahl keine weiteren Leerzeichen reserviert werden sollen.
noch ein beispiel:
put(512,3); new_line; put(64,3); new_line; put(8,3); new_line;
ausgabe
512 64 8
