Programación en Ada/Unidades predefinidas/Ada.Float Text IO
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
editarEste 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_IOis
new
Ada.Text_IO.Float_IO(Float);