with Ada.Text_Io, Ada.Command_Line, Ada.Direct_Io; use Ada.Text_Io, Ada.Command_Line; procedure Programa2 is Caracter:Character; Indice:Integer:=1; --Definición de la estructura que usamos Alfabeto:String:=" abcdefghijklmnopqrstuvwxyz"; type Matriz is array(1..2,1..3) of Boolean; Palabra:Matriz; --Instanciación de Direct_IO package Lista_Braille is new Ada.Direct_Io(Matriz); use Lista_braille; --Declaración de enlaces logicos --F:lectura fichero texto F:Ada.Text_Io.File_Type; --G: lectura fichero "tabla_de_equivalencias.tde" G:Lista_Braille.File_Type; --H: fichero de salida .dat H:Lista_Braille.File_Type; --Para acceder de manera directa a una posicion del fichero Indice_Tabla:Lista_braille.positive_Count:=1; begin --Apertura y creación de los ficheros. Open(G,In_File,"tabla_de_equivalencias.tde"); Open(F,In_File,Argument(1)); Create(H,Out_File, Argument(2)); --Mientras no fin del fichero de texto while not End_Of_File(F) loop --leemos Get(F,Caracter); --Mientras el caracter no sea el mismo que en el array "alfabeto" while Caracter/=Alfabeto(Indice) loop --Actualizar contador Indice_Tabla:=Indice_Tabla+1; --Buscarlo Indice:=Indice+1; end loop; --Apuntamos a la posición del fichero de tabla_de_equivalencias.tde Set_Index(G,Indice_Tabla); --Leemos esa posicion Read(G,Palabra,Indice_Tabla); --Escribimos en el fichero de salida Write(H,Palabra); --Reiniciamos los contadores de programa Indice_Tabla:=1; Indice:=1; end loop; --Cierre de ficheros Close(F); Close(G); Close(H); exception when Name_Error=> PUT_LINE("Fallo al introducir en nombre del archivo"); end Programa2;