Programación en Ada/Entrada-salida
Ada tiene cinco bibliotecas predefinidas independientes para operaciones de entrada/salida. Por tanto, la lección más importante a aprender es elegir la más adecuada en cada caso.
Direct I/O
editarDirect I/O se usa para acceso directo a archivos que contienen únicamente elementos del mismo tipo. Con Direct_IO el cursor del archivo se puede situar en cualquier elemento de ese tipo (el concepto conocido en inglés como random access). El tipo de los elementos ha de ser un subtipo definitivo (definite subtype), es decir, un subtipo cuyos objetos tienen un tamaño definido.
Sequential I/O
editarSequential I/O se usa para el acceso secuencial a archivos que únicamente contienen elementos de un tipo especificado.
Con Sequential I/O es posible elegir entre tipos definitivos y no definitivos, pero los elementos se han de leer uno tras otro.
Storage I/O
editarStorage I/O nos permite almacenar un único elemento en un buffer de memoria. El elemento ha de ser de un subtipo definitivo. Storage I/O se usa en la programación concurrente para trasladar elementos de una tarea a otra.
Stream I/O
editarStream I/O es el paquete de entrada/salida más potente de Ada. Stream I/O permite mezclar objetos de diferentes tipos en un archivo secuencial. Para leer/escribir de/en un stream (un flujo de datos) cada tipo provee un atributo 'Read y otro 'Write. Estos atributos están definidos por el compilador para cada tipo que declaremos.
Estos atributos tratan los elementos como datos sin interpretar. Son ideales tanto para entrada/salida de bajo nivel como para interoperar con otros lenguajes de programación.
Los atributos 'Input y 'Output añaden información de control adicional al archivo, tal como el atributo 'First y el 'Last de un array.
En programación orientada a objetos es posible usar los atributos 'Class'Input y 'Class'Output para almacenar y recuperar correctamente un tipo concreto de la misma clase.
Stream I/O es también el paquete de entrada/salida más flexible. Todos los atributos de E/S pueden sobrescribirse con subprogramas definidos por el usuario y es posible definir nuestros propios tipos de Stream I/O usando técnicas avanzadas de orientación a objetos.
Text I/O
editarText I/O probablemente sea el tipo de entrada/salida más usada. Todos los datos del archivo se representan en formato de texto legible. Text I/O provee la posibilidad de definir el layout de líneas y páginas, pero el estándar es texto de forma libre.
Biblioteca predefinida
editarExisten varios paquetes predefinidos para la entrada/salida en Ada:
- Paquete Ada.Direct_IO
- Paquete Ada.Sequential_IO
- Paquete Ada.Storage_IO
- Paquete Ada.Streams
- Paquete Ada.Text_IO, con sus paquetes genéricos anidados: Complex_IO, Decimal_IO, Enumeration_IO, Fixed_IO, Float_IO, Integer_IO y Modular_IO.
- Paquete Ada.Float_Text_IO
- Paquete Ada.Integer_Text_IO