Programación en Ada/Unidades predefinidas/Ada.Float Text IO

De Wikilibros, la colección de libros de texto de contenido libre.

Ada.Float_Text_IO es un paquete predefinido de la biblioteca estándar para la entrada/salida de datos de tipo Float.

Lo primero que hay que hacer es importar este paquete:

with Ada.Float_Text_IO;

use Ada.Float_Text_IO;

Están predefinidos dentro de esta biblioteca los siguientes procedimientos:

Put (Item, Fore, Aft, Exp);

Put (File, Item, Fore, Aft, Exp);

Donde:

  • Item es el número en coma flotante a mostrar.
  • Fore el número de caracteres antes del punto. Si es mayor que el número de dígitos, se rellenan con espacios. Este parámetro es ideal para justificar varios números en una columna.
  • Aft cuantos dígitos decimales queremos que se muestren.
  • Exp cuantos dígitos dejamos para exponente en notación científica. Si es cero no se usa la notación científica.
  • File es un fichero abierto con Ada.Text_IO.Open para salida.

Podemos dejar parámetros en blanco y se tomarían por defecto los valores que tenga el procedimiento en la biblioteca:

Put (Número);

Put (Número,X);

Put (Número, ,Y,Z); -- ¡¡NO!! Error

-- La siguiente es la manera correcta de dejar el número de dígitos
-- decimales al valor por defecto.
Put (Item => Número,
     Aft  => Y,
     Exp  => Z);

Lo más usual es que usemos Put dentro de otro procedimiento, seleccionando los parámetros a nuestro gusto:

with Ada.Float_Text_IO;
use Ada.Float_Text_IO;

procedure Escribir_Real (X: float) is

begin
    Put (X, 8, 2, 2);
end Escribir_Real;

Si llamamos a Escribir_Real (-100.0) obtendremos por pantalla lo siguiente:

      -1.00E+2

(que al ser notación científica es ).

Obsérvese que el signo usa uno de los espacios en blanco con lo cual no dejamos 8 espacios entre números sino 7, usamos un blanco para el signo.

Para una representación tradicional de un número real podemos dejar el parámetro de Exp a 0 y el de Fore a 0, en tal caso no se usará notación científica ni espacios en blanco antes del número.

with Ada.Float_Text_IO;
use Ada.Float_Text_IO;

procedure Escribir_Decimales (X: float) is

begin
    Put (X, 0, 4, 0); -- Notación tradicional con 4 decimales.
end Escribir_Decimales;


Si llamamos a Escribir_Decimales (-125.720498) obtendremos por pantalla lo siguiente:

-125.7205

(nótese el redondeo en el último dígito).

Especificación[editar]

Este paquete es equivalente a una instanciación del paquete genérico Float_IO, anidado dentro de Ada.Text_IO.

Según el manual de referencia, la especificación de este paquete puede ser la siguiente (en rigor no se requiere que sea realmente una instanciación):

with Ada.Text_IO;
package Ada.Float_Text_IO is new Ada.Text_IO.Float_IO(Float);

Manual de referencia de Ada[editar]