En este módulo, aprenderemos sobre las operaciones de entrada y salida (I/O) en Ada. La entrada y salida son fundamentales para interactuar con el usuario y manipular datos. Ada proporciona un conjunto robusto de bibliotecas para manejar I/O de manera eficiente y segura.
Contenido
- Introducción a la Entrada/Salida en Ada
- Entrada/Salida Estándar
- Entrada/Salida con Archivos
- Ejemplos Prácticos
- Ejercicios
- Introducción a la Entrada/Salida en Ada
Ada utiliza paquetes estándar para manejar operaciones de entrada y salida. Los paquetes más comunes son:
Ada.Text_IO
: Para operaciones de entrada/salida de texto.Ada.Integer_Text_IO
: Para operaciones de entrada/salida con enteros.Ada.Float_Text_IO
: Para operaciones de entrada/salida con números de punto flotante.
- Entrada/Salida Estándar
Entrada Estándar
Para leer datos desde la entrada estándar (teclado), utilizamos el paquete Ada.Text_IO
. Aquí hay un ejemplo básico:
with Ada.Text_IO; use Ada.Text_IO; procedure Read_Input is Input_Line : String (1 .. 100); Last : Natural; begin Put("Enter a line of text: "); Get_Line(Input_Line, Last); Put_Line("You entered: " & Input_Line(1 .. Last)); end Read_Input;
Explicación:
Put
se utiliza para mostrar un mensaje sin un salto de línea.Get_Line
lee una línea de texto desde la entrada estándar y la almacena enInput_Line
.Put_Line
muestra el texto ingresado seguido de un salto de línea.
Salida Estándar
Para escribir datos a la salida estándar (pantalla), también utilizamos el paquete Ada.Text_IO
. Aquí hay un ejemplo:
with Ada.Text_IO; use Ada.Text_IO; procedure Write_Output is begin Put_Line("Hello, World!"); end Write_Output;
Explicación:
Put_Line
se utiliza para mostrar un mensaje seguido de un salto de línea.
- Entrada/Salida con Archivos
Ada proporciona mecanismos para trabajar con archivos de texto a través del paquete Ada.Text_IO
.
Lectura de Archivos
Para leer desde un archivo, primero debemos abrir el archivo en modo lectura:
with Ada.Text_IO; use Ada.Text_IO; procedure Read_From_File is File : File_Type; Line : String (1 .. 100); Last : Natural; begin Open (File, In_File, "input.txt"); while not End_Of_File (File) loop Get_Line (File, Line, Last); Put_Line (Line (1 .. Last)); end loop; Close (File); end Read_From_File;
Explicación:
Open
abre el archivoinput.txt
en modo lectura (In_File
).Get_Line
lee una línea del archivo.End_Of_File
verifica si hemos llegado al final del archivo.Close
cierra el archivo.
Escritura en Archivos
Para escribir en un archivo, primero debemos abrir el archivo en modo escritura:
with Ada.Text_IO; use Ada.Text_IO; procedure Write_To_File is File : File_Type; begin Open (File, Out_File, "output.txt"); Put_Line (File, "This is a line of text."); Close (File); end Write_To_File;
Explicación:
Open
abre el archivooutput.txt
en modo escritura (Out_File
).Put_Line
escribe una línea de texto en el archivo.Close
cierra el archivo.
- Ejemplos Prácticos
Ejemplo 1: Copiar Contenido de un Archivo a Otro
with Ada.Text_IO; use Ada.Text_IO; procedure Copy_File is Input_File : File_Type; Output_File : File_Type; Line : String (1 .. 100); Last : Natural; begin Open (Input_File, In_File, "input.txt"); Open (Output_File, Out_File, "output.txt"); while not End_Of_File (Input_File) loop Get_Line (Input_File, Line, Last); Put_Line (Output_File, Line (1 .. Last)); end loop; Close (Input_File); Close (Output_File); end Copy_File;
Ejemplo 2: Leer y Escribir Números Enteros
with Ada.Integer_Text_IO; use Ada.Integer_Text_IO; with Ada.Text_IO; use Ada.Text_IO; procedure Read_Write_Integers is Number : Integer; begin Put("Enter an integer: "); Get(Number); Put_Line("You entered: " & Integer'Image(Number)); end Read_Write_Integers;
- Ejercicios
Ejercicio 1: Leer y Mostrar Texto
Instrucciones:
- Escribe un programa que lea una línea de texto desde la entrada estándar y la muestre en la salida estándar.
Solución:
with Ada.Text_IO; use Ada.Text_IO; procedure Exercise_1 is Input_Line : String (1 .. 100); Last : Natural; begin Put("Enter a line of text: "); Get_Line(Input_Line, Last); Put_Line("You entered: " & Input_Line(1 .. Last)); end Exercise_1;
Ejercicio 2: Contar Líneas en un Archivo
Instrucciones:
- Escribe un programa que cuente el número de líneas en un archivo de texto.
Solución:
with Ada.Text_IO; use Ada.Text_IO; procedure Exercise_2 is File : File_Type; Line : String (1 .. 100); Last : Natural; Line_Count : Natural := 0; begin Open (File, In_File, "input.txt"); while not End_Of_File (File) loop Get_Line (File, Line, Last); Line_Count := Line_Count + 1; end loop; Close (File); Put_Line("Number of lines: " & Natural'Image(Line_Count)); end Exercise_2;
Conclusión
En esta sección, hemos cubierto los conceptos básicos de entrada y salida en Ada, incluyendo cómo leer y escribir desde y hacia la entrada/salida estándar y archivos. Estos fundamentos son esenciales para cualquier programa que necesite interactuar con el usuario o manipular datos externos. En el próximo módulo, exploraremos el manejo de archivos en mayor profundidad y aprenderemos a trabajar con diferentes tipos de datos.
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