Laboratorio de Programación II Examen Junio 2001 UNIVERSIDAD DE MÁLAGA Dpto. Lenguajes y CC. Computación ETSI Telecomunicación Alumno: _________________________________________________ Grupo 1º _____ Código de ordenador: __________ ENUNCIADO : A) Implementar el tipo abstracto de datos ListaPosicional con el siguiente interfaz: DEFINITION MODULE ListaPos; TYPE TLista; PROCEDURE Crear(VAR l:TLista); PROCEDURE Insertar(VAR l:TLista;pos:CARDINAL; elem:ARRAY OF CHAR); PROCEDURE Eliminar(VAR l:TLista; pos: CARDINAL); PROCEDURE Consultar(l:TLista;pos:CARDINAL;VAR elem:ARRAY OF CHAR); PROCEDURE Longitud(l:TLista): CARDINAL; PROCEDURE Destruir(VAR l: TLista); END ListaPos. Se ha de comprobar que se cumplen las precondiciones de los procedimientos. Si no se cumplen, se acaba el procedimiento sin hacer la tarea. B) Construir un diccionario de palabras haciendo uso del tipo definido en el apartado A). La estructura de este diccionario está pensada para mejorar el rendimiento. Las palabras se guardan ordenadas dentro de la lista. Además, la estructura cuenta con una entrada por cada letra que indique cuál es la posición de la lista posicional donde empiezan las palabras que comienzan por esa letra. Cuando se quiera ver si una palabra está incluida en el diccionario, se empezará a buscar a partir de esta posición. Si la palabra no está, se dejará de buscar cuando se llegue a la posición de inicio de las palabras que empiezan por la siguiente letra. Un ejemplo de un diccionario con esta estructura sería: 1 0 3 5 ... 0 0 20 A B C D ... X Y Z dicc abuelo avellana casado centro dedal ... zarpa Sobre el diccionario se pueden ejecutar las siguientes operaciones: PROCEDURE Crear(VAR dic: TDicc); (* Este procedimiento crea el diccionario vacío. *) PROCEDURE Incluir(VAR dic: TDicc; pal: ARRAY OF CHAR; VAR ok: BOOLEAN); (* Este procedimiento añade una nueva palabra al diccionario. Si la palabra ya está, no se incluye y al parámetro ok se le asigna el valor FALSE. *) PROCEDURE Borrar(VAR dic: TDicc; pal: ARRAY OF CHAR; VAR ok: BOOLEAN); (* Este procedimiento borra la palabra si está en el diccionario. Si no está *) PROCEDURE Volcar(dic: TDicc; nfich: ARRAY OF CHAR); (* Este procedimiento copia la información del diccionario en un fichero de forma que se pueda recuperar posteriormente. *) PROCEDURE Palabras(dic:TDicc; iniciales: ARRAY OF CHAR); (* Este procedimiento imprime por pantalla todas las palabras que estén en el diccionario y que empiecen por cualquiera de las letras contenidas en el parametro “iniciales”. *) PROCEDURE Leer(VAR dic:TDicc; nfich:ARRAY OF CHAR); (* Este procedimiento recupera la información guardada fichero para reconstruir el estado del diccionario. *) en un Notas: − Los datos personales de cada alumno deben encabezar los ficheros con el fuente que presente el alumno. − Con cada aparición del menú durante la ejecución del programa aparecerán los datos académicos personales del alumno (identificando así el programa ejecutable): <Apellidos, nombre> <Curso, grupo> <Código del Equipo>, <TURNO> − Se debe trabajar y tener los ficheros en el directorio: C:\TS\DICC (si no existe la ruta, se crea). − El programa cliente se llamará "PRUEBA.MOD " que se entregará en un disquete junto con los ficheros: *.MOD , *.DEF. − Se pueden utilizar todas las librerías del TopSpeed que se estimen oportunas. − Para aprobar se ha de hacer correctamente la Lista Posicional y los cuatro primeros apartados del diccionario. Los dos últimos son para subir nota.