Ada/FAQ

Aus StudiWiki

< Ada
Wechseln zu: Navigation, Suche

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
Persönliche Werkzeuge