Junio 2001 - Universidad de Málaga

Anuncio
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.
Descargar