Diferencia entre revisiones de «Programación en Ada/Unidades predefinidas/Ada.Text IO»

Contenido eliminado Contenido añadido
Paquetes anidados
Sin resumen de edición
Línea 3:
Tiene procedimientos Get y Put para strings y caracteres; y varios paquetes genéricos anidados para la entrada/salida de otros tipos en formato texto: Decimal_IO, Enumeration_IO, Fixed_IO, Float_IO, Integer_IO y Modular_IO.
 
==Ejemplo de E/S por consola==
 
{{Ada/Reservada|with}} Ada.Text_IO;
Línea 51:
{{Ada/"| es demasiado largo para almacenarse}});
{{Ada/Reservada|end}} Leer_Entero;
==Ficheros de texto==
'''<tt>Ada.Text_IO</tt>''' también permite el acceso y modificación de ficheros de texto de forma secuencial.
 
La mayoría de funciones de Ada.Text_IO están disponibles para ser usadas con ficheros de texto.
Para eso, se usan variables de tipo <tt>File_type</tt>, necesarias para especificar a que archivo acceder.
Muchas de las funciones conocidas para consola de '''<tt>Ada.Text_IO</tt>''' se pueden usar en archivos de texto pasando por parámetro una variable <tt>File_type</tt>.
 
Algunas funciones y procedimientos para el manejo de ficheros con '''<tt>Ada.Text_IO</tt>''':
 
# Open(F,Modo,Ruta): Permite abrir un fichero. Si el fichero no existe, devuelve una excepción 'Name_error'. 'F' es una variable <tt>File_type</tt>, 'Ruta' es la ruta del sistema donde se localiza el fichero y 'Modo' especifica como abrir el fichero: 'In_file' significa lectura, 'Out_file' significa escritura (borrando lo anterior) y 'Append_file' significa escritura empezando desde el final. Para acceder a este archivo, lo haremos a través de la variable <tt>File_type</tt> 'F'.
# Create(F,Modo,Ruta): Crea un fichero en la ruta del sistema elegida. Si no existe, se crea, y si existe, se sobreescribe. Los parámetros son los mismos que en 'Open', pero por defecto el modo es 'Out_file' (si creas un archivo, suele ser para escribir en él). Para acceder a este archivo, lo haremos a través de la variable <tt>File_type</tt> 'F'.
# Close(F): Cierra el archivo referido por la variable 'F'. Es necesario hacer esto cuando dejemos de leer o escribir en un fichero.
# Get(F,C): Lee un caracter de un fichero, siendo F una variable <tt>File_type</tt> y 'C' una variable <tt>character</tt>. Para leer se debe haber hecho un 'Open' previamente.
# Put(F,C): Escribe un caracter en un fichero, siendo siendo F una variable <tt>File_type</tt> y 'C' una variable <tt>character</tt>. Para escribir se debe haber hecho un 'Open' en modo escritura o un 'Create' previamente
 
Para encontrar la lista completa de operaciones sobre ficheros de '''<tt>Ada.Text_IO</tt>''', se puede ver el manual de referencia del paquete [http://www.adaic.com/standards/95lrm/html/RM-A-10-1.html Text_IO]
 
 
 
==Ejemplo de E/S por fichero==
 
{{Ada/Reservada|with}} Ada.Command_Line,Ada.Text_Io;
{{Ada/Reservada|use}} Ada.Command_Line,Ada.Text_Io;
{{Ada/Reservada|procedure}} Visor_texto {{Ada/Reservada|is}}
{{Ada/--|Lee de un fichero de texto cuya ruta se pasa por parámetro o se pregunta}}
{{Ada/--|explícitamente, y se visualiza por pantalla, tomando como 'estandard' una consola}}
{{Ada/--|de 24 lineas de largo y 80 caracteres de ancho}}
Caracteres_Por_Linea : {{Ada/Reservada|constant}} Natural := 79;
Lineas_Por_Pantalla : {{Ada/Reservada|constant}} Natural := 24;
F : File_Type;
Linea : String (1 .. Caracteres_Por_Linea);
Indice : Natural;
Contador : Natural := 0;
{{Ada/Reservada|procedure}} Esperar_Tecla {{Ada/Reservada|is}}
C : Character;
{{Ada/Reservada|begin}}
Get_Immediate(C);
{{Ada/Reservada|end}} Esperar_Tecla;
{{Ada/Reservada|begin}}
{{Ada/Reservada|if}} Argument_Count>0 {{Ada/Reservada|then}}
{{Ada/--|Si hay parametros, usamos el primero como ruta del archivo}}
Open(F,In_File,Argument(1));
Put_Line({{Ada/"|-----------------------------------}});
Put_Line({{Ada/"|- Visor de texto - }} & Argument(1));
Put_Line("{{Ada/"|-----------------------------------}});
New_Line(2);
{{Ada/Reservada|else}}
{{Ada/--|Si no hay parámetros, preguntamos explícitamente la ruta del archivo}}
Put_Line({{Ada/"|Introduzca la ruta del archivo a abrir: }});
Get_Line(Linea,Indice);
Open(F,In_File,Linea(1..Indice));
New_Line(3);
Put_Line({{Ada/"|-----------------------------------}});
Put_Line({{Ada/"|- Visor de texto - }} & Linea(1..Indice));
Put_Line({{Ada/"|-----------------------------------}});
New_Line(2);
{{Ada/Reservada|end}} {{Ada/Reservada|if}};
{{Ada/Reservada|while}} {{Ada/Reservada|not}} End_Of_File(F) {{Ada/Reservada|loop}} {{Ada/--|Leemos hasta llegar al final del fichero}}
{{Ada/Reservada|if}} Contador>=Lineas_Por_Pantalla-2 {{Ada/Reservada|then}}
New_Line;
Put_Line({{Ada/"|---- Presione una tecla para continuar}});
Esperar_Tecla;
New_Line;
Contador:=0;
{{Ada/Reservada|end}} {{Ada/Reservada|if}} ;
{{Ada/--|Leemos una linea desde el archivo, tomando su longitud en 'Indice' y guardando la linea en un string}}
Get_Line(F,Linea,Indice);
{{Ada/--|Visualizamos la linea obtenida por pantalla, pero solo hasta la longitud obtenida}}
Put_Line(Linea(1..Indice));
Contador:=Contador+1;
{{Ada/Reservada|end}} {{Ada/Reservada|loop}} ;
Close(F);
{{Ada/--|Controlamos posibles errores que puede haber con ficheros}}
{{Ada/Reservada|exception}}
{{Ada/Reservada|when}} Name_Error=>
New_line(2);
Put_Line({{Ada/"|**** Error ****}});
Put_Line({{Ada/"|Nombre de archivo no valido}});
{{Ada/Reservada|when}} Use_Error=>
New_line(2);
Put_Line({{Ada/"|**** Error ****}});
Put_Line({{Ada/"|Archivo ya abierto o inaccesible}});
{{Ada/Reservada|end}} Visor_texto;
 
 
==Manual de referencia de Ada==