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

  1. Introducción a la Entrada/Salida en Ada
  2. Entrada/Salida Estándar
  3. Entrada/Salida con Archivos
  4. Ejemplos Prácticos
  5. Ejercicios

  1. 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.

  1. 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 en Input_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.

  1. 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 archivo input.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 archivo output.txt en modo escritura (Out_File).
  • Put_Line escribe una línea de texto en el archivo.
  • Close cierra el archivo.

  1. 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;

  1. Ejercicios

Ejercicio 1: Leer y Mostrar Texto

Instrucciones:

  1. 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:

  1. 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.

© Copyright 2024. Todos los derechos reservados