Suche…


Einführung

Die Standardpakete von Ada ermöglichen die Ausgabe aller numerischen Typen. Das Ausgabeformat kann auf viele Arten angepasst werden.

Bemerkungen

Beachten Sie, wie jedes Mal ein generisches Paket mit einem numerischen Typ instanziiert wird. Auch gibt es die beiden Standardwerte für die gesamte Instanz festgelegt werden, und auch Möglichkeiten , außer Kraft zu setzen Width , sagen wir, wenn Sie anrufen Put Sie mit diesem Parameter.

Ganzzahlen mit großzügigem Platzbedarf drucken

Integer_IO von Integer_IO verfügen über eine Einstellungsvariable Default_Width die die Anzahl der Zeichen, die jede Ausgabennummer benötigt.

with Ada.Text_IO;   use Ada.Text_IO;

procedure Print_Integer is
    subtype Count is Integer range -1_000_000 .. 1_000_000;

    package Count_IO is new Integer_IO (Count);
    X : Count;
begin
    Count_IO.Default_Width := 12;

    X := Count'First;
    while X < Count'Last loop
        Count_IO.Put (X);
        Count_IO.Put (X + 1);
        New_Line;

        X := X + 500_000;
    end loop;
end Print_Integer;

Ergebnis

    -1000000
     -500000
           0
      500000

Ganzzahlen drucken, Basis 16 (Hexadezimal) verwenden

Eine Einstellungsvariable Default_Base wird für die Instanz von Ada.Text_IO.Integer_IO . Außerdem ist Default_Width so festgelegt, dass die Ausgabe keinen führenden Platz haben kann.

with Ada.Text_IO;   use Ada.Text_IO;

procedure Print_Hex is
    subtype Count is Integer range -1_000_000 .. 1_000_000;

    package Count_IO is new Integer_IO (Count);
    X : Count;
begin
    Count_IO.Default_Width := 1;
    Count_IO.Default_Base := 16;

    X := Count'First;
    while X < Count'Last loop
        Count_IO.Put (X);
        New_Line;

        X := X + 500_000;
    end loop;
end Print_Hex;

Ergebnis

-16#F4240#
-16#7A120#
16#0#
16#7A120#

Dezimale Festkommazahlen, auch bekannt als Money

Ada.Text_IO.Editing bietet die Formatierung dezimaler Festkommawerte unter Verwendung von "Bildfolgen" an. Diese beschreiben die Ausgabe mit „magischen“ Zeichen für Trennzeichen, Währungszeichen usw.

with Ada.Text_IO.Editing;   use Ada.Text_IO;

procedure Print_Value is

    Max_Count      : constant := 1_000_000;

    type Fruit is (Banana, Orange, Pear);
    subtype Count is Integer range -Max_Count .. +Max_Count;

    type Money is delta 0.001 digits 10;

    package Fruit_IO is new Enumeration_IO (Fruit);
    package Money_IO is new Editing.Decimal_Output
      (Money,
       Default_Currency => "CHF",
       Default_Separator => ''');

    Inventory : constant array (Fruit) of Count :=
      (Banana => +27_420,
       Orange => +140_600,
       Pear   => -10_000);

    Price_List : constant array (Fruit) of Money :=
      (Banana => 0.07,
       Orange => 0.085,
       Pear   => 0.21);

    Format : constant Editing.Picture :=
      Editing.To_Picture ("<###BZ_ZZZ_ZZ9.99>");
begin
    Fruit_IO.Default_Width := 12;

    for F in Inventory'Range loop
        Fruit_IO.Put (F);
        Put          (" | ");
        Money_IO.Put (Item => Inventory (F) * Price_List (F),
                      Pic => Format);
        New_Line;
    end loop;
end Print_Value;

Ergebnis

BANANA       |  CHF     1'919.40 
ORANGE       |  CHF    11'951.00 
PEAR         | (CHF     2'100.00)

Mehrere Artikel in einer Zeile drucken

Kombinieren Sie die Instanzen der _IO Pakete, verwenden Sie die rechte Instanz mit ihrem numerischen Typ.

with Ada.Text_IO;   use Ada.Text_IO;

procedure Print_Inventory is
    type Fruit is (Banana, Orange, Pear);
    subtype Count is Integer range -1_000_000 .. 1_000_000;

    package Fruit_IO is new Enumeration_IO (Fruit);
    package Count_IO is new Integer_IO (Count);

    Inventory : constant array (Fruit) of Count :=
      (Banana => 27_420,
       Orange => 140_600,
       Pear   => -10_000);

begin
    Fruit_IO.Default_Width := 12;

    for F in Inventory'Range loop
        Fruit_IO.Put (F);
        Put          (" | ");
        Count_IO.Put (Inventory (F));
        New_Line;
    end loop;
end Print_Inventory;

Ergebnis

BANANA       |    27420
ORANGE       |   140600
PEAR         |   -10000


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow