with ada.strings.unbounded, ustrings; use ada.strings.unbounded, ustrings; package dicc is type diccionario is private; -- permite almacenar en memoria central hasta un -- maximo de 40000 palabras junto con sus -- definiciones; tanto las palabras como las -- definiciones seran de tipo "ustring" procedure vacio(d:out diccionario); -- devuelve un diccionario vacio procedure busca(d:in diccionario; palabra:in ustring; definicion:out ustring); -- si la palabra esta en el diccionario devuelve su definicion; -- en caso contrario, devuelve la cadena vacia procedure inserta(d:in out diccionario; palabra,definicion:in ustring); -- inserta una nueva palabra con su definicion en el diccionario; -- si la palabra ya estaba, actualiza su definicion; -- si la palabra no cabe en el diccionario, lo deja igual procedure borra(d:in out diccionario; palabra:in ustring); -- borra la palabra (y su definicion) del diccionario; -- si la palabra no estaba en el diccionario, lo deja igual -- estas que siguen las añadi para generar ficheros de palabras no ordenados procedure baraja(dout:out diccionario; din:in out diccionario); -- baraja el diccionario aleatoriamente; procedure graba(d:in diccionario); -- guarda el dicc en un fichero private maxnumpal:constant integer:= 40000; subtype rango is integer range 1..maxnumpal; type vector is array(rango) of ustring; type diccionario is record numpal:integer; clave,info:vector; end record; -- -- ATENCIÓN: el diseño anterior NO es muy recomendable. -- Clave e info están estrechamente relacionadas, y por lo tanto es más -- adecuado que estén juntas (englobadas dentro del mismo tipo de dato). -- -- type palabra is record -- clave,info:ustring; -- end record; -- type entradas is array(rango) of palabra; -- type diccionario is record -- numpal:integer; -- datos:entradas; -- end record; -- end dicc;