El manejo de archivos es una parte esencial de la programación en Ada, ya que permite a los programas leer y escribir datos en archivos, lo que es crucial para la persistencia de datos y la comunicación con otros sistemas. En esta sección, aprenderemos cómo trabajar con archivos en Ada, incluyendo la apertura, lectura, escritura y cierre de archivos.
Contenido
Tipos de Archivos en Ada
Ada proporciona varios tipos de archivos que se pueden utilizar dependiendo de las necesidades del programa:
- Text_IO: Para archivos de texto.
- Sequential_IO: Para archivos secuenciales de datos binarios.
- Direct_IO: Para archivos de acceso directo.
En esta sección, nos centraremos en el manejo de archivos de texto utilizando el paquete Ada.Text_IO
.
Apertura y Cierre de Archivos
Para trabajar con archivos en Ada, primero debemos abrir el archivo y, una vez que hayamos terminado de trabajar con él, debemos cerrarlo.
Apertura de Archivos
Para abrir un archivo, utilizamos el procedimiento Open
del paquete Ada.Text_IO
. Este procedimiento requiere especificar el modo de apertura del archivo:
In_File
: Para abrir un archivo en modo lectura.Out_File
: Para abrir un archivo en modo escritura.Append_File
: Para abrir un archivo en modo de adición.
with Ada.Text_IO; use Ada.Text_IO; procedure Open_File_Example is File : File_Type; begin -- Abrir un archivo en modo escritura Open(File, Out_File, "example.txt"); -- Aquí irían las operaciones de escritura Close(File); end Open_File_Example;
Cierre de Archivos
Para cerrar un archivo, utilizamos el procedimiento Close
del paquete Ada.Text_IO
.
Lectura de Archivos
Para leer datos de un archivo de texto, utilizamos los procedimientos Get
y Get_Line
del paquete Ada.Text_IO
.
Lectura de una Línea
with Ada.Text_IO; use Ada.Text_IO; procedure Read_File_Example is File : File_Type; Line : String(1 .. 100); Last : Natural; begin Open(File, In_File, "example.txt"); Get_Line(File, Line, Last); Put_Line(Line(1 .. Last)); Close(File); end Read_File_Example;
Lectura de un Carácter
with Ada.Text_IO; use Ada.Text_IO; procedure Read_Char_Example is File : File_Type; Char : Character; begin Open(File, In_File, "example.txt"); Get(File, Char); Put(Char); Close(File); end Read_Char_Example;
Escritura en Archivos
Para escribir datos en un archivo de texto, utilizamos los procedimientos Put
y Put_Line
del paquete Ada.Text_IO
.
Escritura de una Línea
with Ada.Text_IO; use Ada.Text_IO; procedure Write_File_Example is File : File_Type; begin Open(File, Out_File, "example.txt"); Put_Line(File, "Hello, Ada!"); Close(File); end Write_File_Example;
Escritura de un Carácter
with Ada.Text_IO; use Ada.Text_IO; procedure Write_Char_Example is File : File_Type; begin Open(File, Out_File, "example.txt"); Put(File, 'A'); Close(File); end Write_Char_Example;
Ejemplo Práctico
A continuación, se presenta un ejemplo completo que combina la lectura y escritura de archivos.
with Ada.Text_IO; use Ada.Text_IO; procedure File_Handling_Example is Input_File : File_Type; Output_File : File_Type; Line : String(1 .. 100); Last : Natural; begin -- Abrir el archivo de entrada en modo lectura Open(Input_File, In_File, "input.txt"); -- Abrir el archivo de salida en modo escritura Open(Output_File, Out_File, "output.txt"); -- Leer y escribir cada línea del archivo de entrada al archivo de salida while not End_Of_File(Input_File) loop Get_Line(Input_File, Line, Last); Put_Line(Output_File, Line(1 .. Last)); end loop; -- Cerrar ambos archivos Close(Input_File); Close(Output_File); end File_Handling_Example;
Ejercicios Prácticos
Ejercicio 1: Contar Líneas en un Archivo
Escribe un programa en Ada que cuente el número de líneas en un archivo de texto.
Solución
with Ada.Text_IO; use Ada.Text_IO; procedure Count_Lines is File : File_Type; Line : String(1 .. 100); Last : Natural; Count : Natural := 0; begin Open(File, In_File, "example.txt"); while not End_Of_File(File) loop Get_Line(File, Line, Last); Count := Count + 1; end loop; Close(File); Put_Line("Number of lines: " & Natural'Image(Count)); end Count_Lines;
Ejercicio 2: Copiar Contenido de un Archivo a Otro
Escribe un programa en Ada que copie el contenido de un archivo de texto a otro archivo.
Solución
with Ada.Text_IO; use Ada.Text_IO; procedure Copy_File is Source_File : File_Type; Dest_File : File_Type; Line : String(1 .. 100); Last : Natural; begin Open(Source_File, In_File, "source.txt"); Open(Dest_File, Out_File, "destination.txt"); while not End_Of_File(Source_File) loop Get_Line(Source_File, Line, Last); Put_Line(Dest_File, Line(1 .. Last)); end loop; Close(Source_File); Close(Dest_File); end Copy_File;
Conclusión
En esta sección, hemos aprendido cómo manejar archivos en Ada utilizando el paquete Ada.Text_IO
. Hemos cubierto cómo abrir, leer, escribir y cerrar archivos, y hemos visto ejemplos prácticos y ejercicios para reforzar estos conceptos. El manejo de archivos es una habilidad fundamental en la programación, y dominar estos conceptos te permitirá crear aplicaciones más robustas y funcionales.
En la siguiente sección, exploraremos cómo Ada puede interactuar con otros lenguajes de programación, lo que ampliará aún más tus habilidades como programador.
Curso de Programación en Ada
Módulo 1: Introducción a Ada
Módulo 2: Conceptos Básicos
- Variables y Tipos de Datos
- Operadores y Expresiones
- Estructuras de Control
- Bucles en Ada
- Subprogramas: Procedimientos y Funciones
Módulo 3: Tipos de Datos Avanzados
Módulo 4: Programación Modular
Módulo 5: Concurrencia y Programación en Tiempo Real
Módulo 6: Temas Avanzados
Módulo 7: Mejores Prácticas y Optimización
- Estilo de Código y Mejores Prácticas
- Depuración y Pruebas
- Optimización del Rendimiento
- Consideraciones de Seguridad