Debe introducir al menos 3 caracteres en el buscador.
Inicio / Wikis / Cursos gratis / Curso de Ada - Paquete Ada.Text_IO

Curso de Ada - Paquete Ada.Text_IO

 ****- (10 opiniones)
GNU Free Documentation License Curso gratis de José Alfonso Malo Romero - 16 de Marzo de 2006
Temas Relacionados: Programación estructurada
65. Paquete Ada.Text_IO
Ada.Text_IO es un paquete predefinido para la entrada y salida de texto.

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


with Ada.Text_IO; with Ada.Characters.Handling; -- Lee de entrada un número entero no dejando al usuario escribir -- caracteres que no sean dígitos. Esta versión sólo funciona -- correctamente en Windows. Para que funcione en Linux y otros -- sistemas Unix, hay que cambiar los valores de Intro y Back. procedure Leer_Entero is -- Para Linux cambiar por ASCII.LF Intro : constant Character := ASCII.CR; -- Para Linux cambiar por ASCII.Del Back : constant Character := ASCII.BS; Char : Character; Fin : Boolean := False; Número : Natural := 0; -- Cadena para leer el número carácter a carácter -- El máximo de caracteres es Integer'Width - 1 porque no leemos signo Cadena_Número : String (1 .. Integer'Width - 1); begin Ada.Text_IO.Put ("Escriba un número y pulse Enter: "); while not Fin loop Ada.Text_IO.Get_Immediate (Char); if Ada.Characters.Handling.Is_Digit (Char) then Número := Número + 1; Cadena_número(Número) := Char; Ada.Text_IO.Put (Char); elsif Char = Intro then Fin := True; elsif Número>0 and Char = Back then -- Si el usuario ha pulsado la tecla backspace -- borra el dígito escrito anteriormente Ada.Text_IO.Put (ASCII.BS & ' ' & ASCII.BS); Número:=Número-1; end if; end loop; Número := Integer'Value (Cadena_Número (1 .. Número)); Ada.Text_IO.New_line; Ada.Text_IO.Put_Line ("Has escrito:" & Integer'Image (Número)); exception when Constraint_Error => Ada.Text_IO.New_line; Ada.Text_IO.Put_Line ("Lo siento: " & Cadena_Número & " es demasiado largo para almacenarse"); end Leer_Entero;

Ficheros de texto


Ada.Text_IO 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 File_type, necesarias para especificar a qué archivo acceder. Muchas de las funciones conocidas para consola de Ada.Text_IO se pueden usar en archivos de texto pasando por parámetro una variable de tipo File_type.

Algunas funciones y procedimientos para el manejo de ficheros con Ada.Text_IO:

Open(F,Modo,Ruta) Permite abrir un fichero. Si el fichero no existe, devuelve una excepción 'Name_error'. 'F' es una variable File_type, '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 File_type '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 File_type '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 carácter de un fichero, siendo F una variable File_type y 'C' una variable character. Para leer se debe haber hecho un 'Open' previamente. Put(F,C) Escribe un carácter en un fichero, siendo F una variable File_type y 'C' una variable Character. Para escribir se debe haber hecho un 'Open' en modo escritura o un 'Create' previamente. End_of_file(F) Esta función devuelve 'True' (boolean) si hemos llegado al final del fichero y 'False' si quedan elementos por leer. Es importante saber usar esta función, ya que si intentamos leer un elemento del fichero habiendo llegado al final de éste, saltará la excepción 'End_Error'. Reset(F) Reinicia el cursor; para saber que elemento estamos leyendo, se guarda un cursor con la posición del elemento actual; esta operación lo reinicia, como si cerrásemos el fichero y lo volviésemos a abrir.

Para encontrar la lista completa de operaciones sobre ficheros de Ada.Text_IO, se puede ver en el manual de referencia: A.10.1 Text_IO.

Ejemplo de E/S por fichero


with Ada.Command_Line,Ada.Text_Io; use Ada.Command_Line,Ada.Text_Io; procedure Visor_texto is -- Lee de un fichero de texto cuya ruta se pasa por parámetro o se pregunta -- explícitamente, y se visualiza por pantalla, tomando como 'estandard' una consola -- de 24 líneas de largo y 80 caracteres de ancho Caracteres_Por_Linea : constant Natural := 79; Lineas_Por_Pantalla : constant Natural := 24; F : File_Type; Linea : String (1 .. Caracteres_Por_Linea); Indice : Natural; Contador : Natural := 0; procedure Esperar_Tecla is C : Character; begin Get_Immediate(C); end Esperar_Tecla; begin if Argument_Count>0 then -- Si hay parametros, usamos el primero como ruta del archivo Open(F,In_File,Argument(1)); else -- Si no hay parámetros, preguntamos explícitamente la ruta del archivo Put_Line("Introduzca la ruta del archivo a abrir: "); Get_Line(Linea,Indice); Open(F,In_File,Linea(1..Indice)); New_Line(3); end if; Put_Line("
"); Put_Line("- Visor de texto - " & Name(F)); Put_Line("
"); -- La función Name() nos devuelve la ruta del archivo New_Line(2); while not End_Of_File(F) loop -- Leemos hasta llegar al final del fichero -- Si llegamos al final e intentamos leer, dará error, por lo que hay que prevenirlo if Contador>=Lineas_Por_Pantalla-2 then New_Line; Put_Line("
Presione una tecla para continuar"); Esperar_Tecla; New_Line; Contador:=0; end if ; -- Leemos una linea desde el archivo, tomando su longitud en 'Indice' -- y guardando la linea en un string Get_Line(F,Linea,Indice); -- Visualizamos la linea obtenida por pantalla, pero solo hasta la longitud obtenida Put_Line(Linea(1..Indice)); Contador:=Contador+1; end loop ; Close(F); -- Controlamos posibles errores que puede haber con ficheros exception when Name_Error=> New_line(2); Put_Line(" Error "); Put_Line("Nombre de archivo no valido"); when Use_Error=> New_line(2); Put_Line(" Error "); Put_Line("Archivo ya abierto o inaccesible"); end Visor_texto;

Portabilidad


Un programa hecho en Ada usando la librería Ada.Text_IO debería poderse compilar sin problemas (si no se usan librerías propias del sistema) tanto en sistemas Windows como en sistemas Unix (incluyendo el cada vez más popular GNU/Linux) . Sin embargo, puede que su funcionamiento no sea igual en ambos sistemas si no se tienen en cuenta ciertas diferencias en sus consolas.

Por ejemplo, todos los sistemas Unix soportan el estándar de terminal ANSI, mientras que en Windows ME, NT, 2000 y XP la consola no es compatible con ANSI (aunque es posible configurarlo cargando el driver ANSI.SYS). Además el salto de linea es diferente en Unix y en Windows: en sistemas Unix consta de un carácter y en Windows de dos. A la hora de programar, has de tener en cuentas algunas diferencias:

  • El salto de línea en sistemas Unix es ASCII.LF. En Windows es ASCII.LF & ASCII.CR. Sin embargo usando Get_Line, End_Of_Line y Put_Line se asegura portabilidad en este aspecto.
  • Algunas funciones de Ada.Text_IO no funcionan correctamente en Windows, como el procedimiento New_Page. Get_immediate(C,B) también puede dar problemas con algunas teclas en Linux.
  • El carácter de control asociado a ciertas teclas puede variar entre Unix y Windows. Por tanto si tu programa intenta detectar pulsaciones de teclas específicas, como 'Enter', etc. deberás adecuar el carácter con el que se identifica la tecla. Algunos ejemplos:

Intro: character:=ASCII.Cr; -- Windows Intro: character:=ASCII.Lf; -- Unix Backspace: character:=ASCII.Bs; -- Windows (tecla de borrar) Backspace: character:=ASCII.Del; -- Unix

Debes tener esto en cuenta si deseas hacer portable tu programa, y que funcione tanto en Unix como en Windows. Por lo tanto recomendamos que pruebes la aplicación en ambos sistemas si es posible, para asegurar su buen funcionamiento. Si deseas más funciones para la consola, y ver sus diferentes implementaciones en Linux y Windows, puedes mirar el paquete Pantalla_ansi.

Manual de referencia de Ada


Tabla de contenidos
  1. 1 - Introducción
  2. 2 - Historia
  3. 3 - Manual de referencia
  4. 4 - Instalación
  5. 5 - Hola Mundo
  6. 6 - Elementos del lenguaje
  7. 7 - Tipos
  8. 8 - Enteros
  9. 9 - Enumeraciones
  10. 10 - Coma flotante
  11. 11 - Coma fija
  12. 12 - Arrays
  13. 13 - Strings
  14. 14 - Registros
  15. 15 - Registros discriminados
  16. 16 - Registros variantes
  17. 17 - Punteros a objetos
  18. 18 - Punteros a subprogramas
  19. 19 - Tipos derivados
  20. 20 - Tipos etiquetados (orientación a objetos)
  21. 21 - Subtipos
  22. 22 - Objetos (variables y constantes)
  23. 23 - Atributos
  24. 24 - Expresiones
  25. 25 - Operadores
  26. 26 - Sentencias y estructuras de control
  27. 27 - Subprogramas
  28. 28 - Sobrecarga
  29. 29 - Entrada/salida
  30. 30 - Pragmas
  31. 31 - Interfaz con otros lenguajes
  32. 32 - Diseño y programación de sistemas grandes
  33. 33 - Paquetes
  34. 34 - Clausula use
  35. 35 - Clausula with
  36. 36 - Paquete Standard
  1. 37 - Declaraciones
  2. 38 - Ámbito
  3. 39 - Visibilidad
  4. 40 - Renombrado
  5. 41 - La biblioteca Ada (unidades y subunidades)
  6. 42 - Unidades de biblioteca
  7. 43 - Unidades hijas
  8. 44 - Subunidades
  9. 45 - Compilación separada y dependiente
  10. 46 - Tipos abstractos de datos
  11. 47 - Tipos limitados
  12. 48 - Unidades genéricas
  13. 49 - Excepciones
  14. 50 - Paquete Ada.Exceptions
  15. 51 - Concurrencia
  16. 52 - Tareas
  17. 53 - Sincronización de tareas mediante puntos de entrada o citas (entry)
  18. 54 - Aceptación de citas (accept)
  19. 55 - Selección de citas (select)
  20. 56 - Llamadas a punto de entrada complejas
  21. 57 - Tareas dinamicas: creación dinamica de tareas (tipos t
  22. 58 - Dependencia de tareas
  23. 59 - Ejemplos de tareas
  24. 60 - Programación distribuida con GLADE
  25. 61 - Novedades de Ada 2005
  26. 62 - Unidades predefinidas
  27. 63 - Paquete Ada.Strings.Fixed
  28. 64 - Paquete Ada.Strings.Unbounded
  29. 65 - Paquete Ada.Text_IO
  30. 66 - Paquete Ada.Text_IO.Editing
  31. 67 - Paquete Ada.Float_Text_IO
  32. 68 - Paquete Ada.Sequential_IO
  33. 69 - Paquete Ada.Command_Line
  34. 70 - Paquete Interfaces
  35. 71 - Recursos en la Web
Autor y licencia de 'Curso de Ada - Paquete Ada.Text_IO'
José Alfonso Malo Romero Extraído de: http://es.wikibooks.org/wiki/Programaci%C3%B3n_en_Ada_/_Introducci%C3%B3n GNU Free Documentation License
El contenido está disponible bajo los términos de GNU Free Documentation License
Licencia GNU Free Documentation License: http://www.gnu.org/copyleft/fdl.html
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.

Wikis relacionados con 'Curso de Ada - Paquete Ada.Text_IO'

Excelente curso de iniciación a la astronomía para aquellos que quieran aprender sobre esta apasionante... Más »
La idea de este curso surgió de varias conversaciones entre amig@s de la cuadrilla y... Más »
Este es un curso tremendamente completo, guiado y con ejemplos y prácticas pensadas para convertirlo... Más »
Este tutorial presenta los conceptos básicos de líneas de transmisión (Transmission lines), así como una... Más »
Publicidad, término utilizado para referirse a cualquier anuncio destinado al público y cuyo objetivo es... Más »
Gente Wiki
Eva Mas
Bailarina profesional, músico pianista, pintora, malabarista de fuego y actriz, premio de dirección teatral por la...
Hernan Duran
Soy ingeniero de diseño y automatización electrónica, me gusta la tecnologia, la programación, escuchar musica, y el diseño de paginas...
German Pomares Herrera
Escribo para televisión, diarios (el dinosaurio de papel), radio y publicidad (de algo hay que comer). En ocasiones me daba...
Campañas publicitarias, Imagen corporativa,...
Glenda Lizarazu
Soy bioquímica farmacéutica graduada de la facultad de ciencias químico farmacéuticas y bioquímicas de la universidad mayor real y pontificia...
Analisis y diagnóstico, Botánica,...
Claudio
Trabalho em produtora de video especializada em passar fitas vhs e albuns de foto para dvd, discos de vinil e...
Artur Filipe Dos Santos
Licenciado em comunicação social pela escola superior de jornalismo, mestrado em comunicação pela universidade de vigo, galiza, espanha e a...
Gabinetes de prensa, Periodismo,...
Suscribirse
¿Estás seguro de que deseas eliminar este capítulo?