Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Reglas y recomendaciones
Durante el parcial, deben observarse las siguientes reglas:
1. El parcial se debe desarrollar en el computador, escribiendo las respuestas en los campos designados
dentro del cuestionario de BrightSpace.
2. Archivos adicionales se aceptarán sólo en el caso del diseño, de acuerdo a las instrucciones que
se encuentran en el enunciado del parcial. Guarde regularmente su trabajo (para evitar posibles
pérdidas de información), con los nombres de archivo
par2_apellido1_apellido2_nombre1_nombre2.txt (para el diseño de los TADs) y
par2_apellido1_apellido2_nombre1_nombre2_dis.pdf (para el diagrama de relación entre TADs)
Tenga en cuenta que los nombres y apellidos van todos en minúsculas, los espacios se reemplazan
por guiones bajos y no se utilizan ni tildes ni ’ñ’. Estos archivos deben enviarse únicamente dentro
de la pregunta correspondiente en el cuestionario de BrightSpace.
3. El parcial tiene una duración de dos horas, contadas a partir del inicio normal de la clase (9:00a.m.).
El cuestionario en BrightSpace está programado para cerrarse al terminar las dos horas (11:00a.m.),
por lo que no enviarlo dentro de ese lapso de tiempo se considerará como parcial no presentado y
tendrá una calificación de 0.0.
6. Puede utilizar sus apuntes, libros, e Internet para obtener la información que necesite para el parcial.
Puede utilizar también herramientas de inteligencia artificial (tipo ChatGPT), bajo su propio riesgo
y corroborando la información obtenida.
7. Sin embargo, está absolutamente prohibido comunicarse con cualquier otro ser humano para obtener
información sobre el parcial, a través de cualquier medio (conversación directa, Teams, Skype, Zoom,
Gtalk, Whatsapp, etcétera). También está totalmente prohibido copiar o transcribir texto o código
de enunciados y respuestas de parciales anteriores, o de diseños e implementaciones que no sean
propias.
8. Los celulares deben permanecer apagados, y no se debe enviar ni recibir ningún mensaje de texto.
9. La única excepción a lo anterior son los profesores y monitores de la asignatura, quienes sólo respon-
derán consultas respecto a la claridad de las preguntas del parcial y no responderán consultas sobre
la materia.
10. Si el estudiante incumple con cualquiera de las reglas, será evaluado con nota 0.0
2. AVL.
3. Rojo-Negro (RN).
1.3 Para una imagen binaria de tamaño 8 × 8 que representa un patrón de tablero
de ajedrez, el tamaño del quadtree asociado es:
1. 64.
2. 85.
3. 84.
4. 68.
En este árbol, cada nodo almacena un símbolo del alfabeto de 26 letras utilizado en la transmisión de
un mensaje en clave Morse. Este árbol se utiliza para codificar y decodificar los símbolos de un mensaje.
Cada arista entre un nodo padre y sus hijos se etiqueta con un “.” para el hijo izquierdo y con un “-”
para el hijo derecho. Cada camino entre el nodo raíz y los nodos con símbolos se puede representar como
la concatenación de las etiquetas de las aristas que lo conforman. Esta representación corresponde a la
codificación para cada uno de los símbolos. En este caso, por ejemplo, para el símbolo “C” su codificación
es “-.-.”, el cual corresponde a las etiquetas de las aristas del camino desde la raíz hasta el nodo con el
símbolo “C”. Así mismo, la “S” se codifica como “...”, la “O” se codifica como “---” y la “Z” se codifica
como “--..”.
Para desarrollar un sistema de codificación y decodificación de mensajes utilizando el código Morse,
se utilizará una implementación basada en los árboles vistos en clase. Dentro de este sistema, se ha
identificado inicialmente una operación muy importante: la que permite codificar un texto dado. Esta
operación debe recibir un conjunto de palabras (cadenas de caracteres) y utilizar el árbol con el código
Morse para codificar, caracter a caracter, cada palabra; generando un conjunto de cadenas de caracteres
(conjunto de códigos Morse) para cada palabra. Se garantiza que el árbol ya se encuentra poblado con la
información necesaria, sin embargo, si algún caracter no se encuentra en el árbol no es posible codificarlo.
1
https://en.wikipedia.org/wiki/Morse_code
3.1 (22%) Diseño
Diseñe el sistema y el (los) TAD(s) solicitado(s). Utilice la plantilla de especificación de TADs vista en
clase para el diseño. Recuerde que diseñar es un proceso previo a la implementación, por lo que no debería
contener ninguna referencia a lenguajes de programación (es decir, si escribe encabezados o código fuente,
el punto no será evaluado y tendrá una calificación de cero). Para simplicidad del diseño, no es necesario
incluir los métodos obtener y fijar (get/set) del estado de cada TAD.
TAD NodoMorse
Datos mínimos:
- dato, caracter, información a almacenar en el nodo del árbol.
- hijoIzq, apuntador a NodoMorse, referencia al hijo izquierdo del nodo.
- hijoDer, apuntador a NodoMorse, referencia al hijo derecho del nodo.
Operaciones:
- fijarDato(n_dato), cambiar el dato actual a n_dato.
- fijarHijoIzq(n_hijoI), cambiar la referencia al hijo izquierdo por h_hijoI.
- fijarHijoDer(n_hijoD), cambiar la referencia al hijo derecho por n_hijoD.
- obtenerDato(), retornar el dato actual.
- obtenerHijoIzq(), retornar el hijo izquierdo actual.
- obtenerHijoDer(), retornar el hijo derecho actual.
- esHoja(), retorna si el nodo es actualmente una hoja del árbol o no.
- codificar(car), retorna la codificación correspondiente al caracter dado.
TAD ArbolMorse
Datos mínimos:
- raiz, apuntador a NodoMorse, referencia al nodo raíz del árbol.
Operaciones:
- fijarRaiz(n_raiz), cambiar la raíz actual a n_raiz.
- obtenerRaiz(), retornar la raíz actual.
- esVacio(), identifica si el árbol está vacío o no.
- vaciar(), elimina todos los nodos del árbol.
- codificar(car), retorna la codificación correspondiente al caracter dado.
TAD SistemaMorse
Datos mínimos:
- arbolCod, ArbolMorse, representa el árbol que almacena el código Morse.
Operaciones:
- fijarArbolCod(n_arbol), cambiar el árbol de codificación actual a n_arbol.
- obtenerArbolCod(), retornar el árbol actual.
- codificarPalabras(conjunto), se encarga de gestionar la codificación caracter a
caracter para un conjunto de palabras.
Pasos a seguir:
1. Moverse sobre el contenedor de palabras, para realizar el proceso para cada
palabra.
2. Para cada palabra, moverse sobre cada uno de los caracteres de la palabra, para
realizar el proceso de codificación para cada caracter.
3. Para codificar, realizar un recorrido sobre el árbol, de forma sistemática y en
profundidad.
4. En cada nodo de avance en el recorrido, ir almacenando el camino de puntos y
guiones recorrido, es decir: por cada hijo izquierdo que se use para avanzar,
agregar un punto; y por cada hijo derecho que se use para avanzar, agregar un
guión.
5. Al llegar al nodo que contiene el caracter dado, retornar el camino de puntos y
guiones actual.
6. Tomar la codificación de cada caracter y agregarla a un contenedor de códigos.
7. Una vez terminada de codificar una palabra, tomar el contenedor de códigos y
agregarlo a un contenedor de códigos por palabra.
8. Una vez terminadas de codificar todas las palabras, retornar el contenedor de
códigos por palabra con el resultado de todas las codificaciones realizadas.
• la definición apropiada de los prototipos de los métodos/funciones (i.e. recibir/retornar los datos
suficientes y necesarios para su correcta ejecución),
• el NO uso de salidas/entradas por pantalla/teclado (i.e. paso/retorno correcto de valores y/o obje-
tos),
• la escritura de todo el código que pueda llegar a necesitar que no esté incluido en la STL.
return res;
}
bool ArbolMorse::esVacio () {
return raiz == NULL;
}