Práctica 1 Diseño Modular y creación de TAD

Anuncio
ALGORITMOS Y ESTRUCTURAS DE DATOS II
Ingeniería Técnica en Informática de Gestión
Ingeniería Técnica en Informática de Sistemas
CURSO 2003/04
Práctica 1
Diseño Modular y creación de TAD
Objetivos
§
§
§
§
Familiarizarnos con el uso de los TAD como base del diseño modular.
Repasar la creación de unidades en Pascal.
Valorar la importancia de documentar, de forma correcta, la especificación de un TAD.
Valorar la importancia de proporcionar robustez a los TAD creados.
Enunciado
Se desea especificar e implementar, mediante POO, un TAD para manejar vectores de números enteros.
Dicho TAD será implementado mediante la clase TVector, que tendrá las siguientes características:
§
§
§
§
§
§
§
§
§
§
La estructura de un vector está basada en una lista simplemente enlazada. Cada nodo de la lista
corresponde a una componente del vector.
El tamaño de un TVector es variable, pero nunca superará las 10 componentes.
En un TVector se almacenará cualquier número entero. El entero cero (0) sirve para indicar que
una componente está vacía.
Se permiten elementos repetidos.
Método crearVector: si el tamaño que se le pasa por parámetro es <=0 o >10 se produce una
excepción y no se crea el TVector
Método asigna: se produce una excepción si el valor del índice i no se encuentra en el intervalo
correcto (mayor que 0 y menor que el tamaño del TVector).
Método copia: si los dos operandos tienen distinto tamaño, se vacía el TVector receptor(v) y se
crea de nuevo con el tamaño y las componentes de v1. En caso contrario se asignan las
componentes de v1 en v siempre que la componente de v1 no sea la vacía. Por ejemplo, si v[3]=-6
y v1[3]=0, entonces v[3]=-6 después de aplicar la operación.
Método suma: ambos operandos deben tener el mismo tamaño. En caso contrario, se produce una
excepción, y no se realizará la operación, devolviendo el TVector vacío. Además, si se suma una
posición cualquiera con una posición vacía, dicha posición será vacía en el TVector resultado.
Método esInverso: ambos operandos deben tener el mismo tamaño. En caso contrario, no se
asegura cual es el resultado de la operación.
Tratamiento de excepciones: todas las operaciones que controlen excepciones devolverán una
variable booleana indicando el estado final de la operación.
Para implementar el TAD TVector se diseñará la clase TVector, formada por dos atributos privados:
vector: atributo de tipo puntero a componente, donde componente es un registro formado por
un entero y un puntero a componente
tam: atributo de tipo natural (almacena el tamaño del TVector)
y un conjunto de métodos públicos, cuyas cabeceras serán las siguientes:
constructor crearVectorPorDefecto;
constructor que crea un TVector vacío de 10 componentes
constructor crearVector(n: natural; var res: booleano);
constructor que crea un TVector vacío de n componentes
función esVacío: booleano;
devuelve verdad si el TVector tiene todas sus componentes vacías y falso en caso contrario
función numComponentes: natural;
devuelve el número de posiciones que tiene un TVector
función componentesNoVacias: natural;
devuelve el número de posiciones no vacías que tiene un TVector
Página 1
función asigna(i: natural; n: entero): booleano;
inserta el entero n en la posición i del TVector self
función suma(V1,V2: TVector): booleano;
suma, componente a componente, los vectores V1 y V2, dejando el resultado en el TVector self
función esInverso(V1: TVector): booleano;
devuelve verdadero si las componentes del TVector V1 son las mismas que las del TVector self,
pero en sentido inverso, y falso en caso contrario
procedimiento copiaV(V1: TVector);
realiza una copia de V1 en self según la explicación mostrada anteriormente
destructor eliminaV;
elimina el TVector, liberando la memoria que tenía reservada
procedimiento verVector;
muestra por pantalla el contenido del TVector self, separando cada componente por un espacio
en blanco (sin guiones, saltos de línea ni mensajes). Para las componentes vacías se mostrará
la palabra VACIO, y si el TVector está vacío se imprimirá el mensaje TVECTOR VACIO.
Se pide
1. Especificar e implementar el TAD TVector en un módulo (unidad) independiente. Un a vez compilado,
dicho fichero debe llamarse tadVect.tpu
Evaluación de la práctica
La evaluación de la primera práctica consistirá simplemente en la entrega de la documentación de la
especificación semi-formal del TAD propuesto, siguiendo las normas detalladas a continuación.
Tiempo estimado de realización
2 clases (se entregará en la semana del 10 al 14 de noviembre durante la clase de prácticas)
Página 2
NORMAS PARA LA PRESENTACIÓN DE PRÁCTICAS
Cada práctica entregada deberá contener OBLIGATORIAMENTE la siguiente información:
§
Portada: Contiene el título de la práctica, nombre y apellidos del alumno, grupo de prácticas al que
pertenece (A1 .. A9) y titulación (I.T.I. de Gestión ó I.T.I. de Sistemas). (SEGÚN LA PLANTILLA QUE
TENEIS EN LA PÁGINA WEB)
§
Indice: Contiene los apartados de los que se compone la práctica, indicando el número de página
en el que se encuentran. Tipo de letra: Arial (10 pt.)
§
Documento de especificación semi-formal de cada TAD: Se hará especial hincapié en su
correcta documentación. Para definir los tipos, se indicará su nombre, su utilidad y los valores
válidos que se pueden almacenar en él. La documentación de las operaciones se realizará utilizando
las cinco cláusulas explicadas en teoría, tal como se puede ver en el siguiente ejemplo:
constructor CreaFicha (nombre: cadena; edad, hijos: byte, var res: byte);
{
Parámetros:
nombre: cadena de caracteres donde se almacena el nombre de la persona
edad: número natural que indica la edad de la persona
hijos: número natural que indica el número de hijos que tiene la persona
res: almacena el estado de realización de la operación
Devuelve:
Precondiciones:
0 £ edad £ 110
hijos £ 15
Efecto:
Crea una ficha con los valores indicados en los argumentos y almacena en res el
valor 1
Excepciones:
Si (edad < 16 y hijos > 0) no se crea la ficha y se almacena en res el valor 0
}
Tipo de letra:
§ Para las cabeceras: Arial (12 pt.) con palabras reservadas en negrita
§ Para la documentación: Arial (10 pt.)
§
Conclusiones y evaluación: Breve opinión personal de la práctica realizada. Descripción de las
situaciones "particulares" surgidas durante la realización de la misma, indicando las soluciones
adoptadas en cada caso.
NOTA
La práctica se presentará en un portafolios de plástico
Página 3
Descargar