Está en la página 1de 4

Estructura De Datos - 2023 Trabajo Práctico N.

º 3

Cátedra: Estructuras de Datos

Carrera: Licenciatura en Sistemas

Año: 2023 – 1er Cuatrimestre


Facultad de Ciencias de la Administración
Trabajo Práctico N.º 3: Universidad Nacional de Entre Ríos

Strings, Regex y Colecciones


Lineales

Condiciones de Entrega
• El trabajo práctico deberá ser:
◦ Realizado en forma individual o en grupos de no más de tres alumnos.
◦ Publicado en un repositorio en GitHub creado por el equipo de trabajo cuya URL
deberá especificarse en la Actividad del Campus Virtual o cargado en la sección del
Campus Virtual correspondiente, junto con los archivos de código fuente que requieran
las consignas. Cada uno de ellos en sus respectivos formatos pero comprimidos en un
único archivo con formato zip, rar, tar.gz u otro.
▪ En caso de realizar el Trabajo Práctico en grupo, deberá indicarse el apellido y
nombre de los integrantes del mismo.
◦ Ser entregado el Lunes 08 de Mayo de 2023..
• El práctico será evaluado con nota numérica y conceptual (Excelente, Muy Bueno, Bueno,
Regular y Desaprobado), teniendo en cuenta la exactitud y claridad de las respuestas, los
aportes adicionales fuera de los objetivos de los enunciados y la presentación estética.
• Las soluciones del grupo deben ser de autoría propia. Aquellas que se detecten como
idénticas entre diferentes grupos serán clasificadas como MAL para todos los involucrados
en esta situación que será comunicada en la devolución.
• Los ejercicios que exijan codificación se valorarán de acuerdo a su exactitud, prolijidad
(identación y otras buenas prácticas).

Consideraciones
El equipo de cátedra considera que la corrección de los Trabajos Prácticos presentados
por los alumnos es más ágil si no se programan interfaces de consola de comandos que
exigen al usuario interactuar con la aplicación. Por tanto, se solicita no programar clases
cliente que hagan uso de la función input() o similares.

Página 1 de 4
Estructura De Datos - 2023 Trabajo Práctico N.º 3

Ejercicios

1. Programe la función verificar_cuit que utilizando una único patrón de expresión regular,
verifique si un str se corresponde con un número de CUIT/CUIL. Valores de prueba:

30-56225215-7 (válido).
27-38426233-9 (válido).
23-33016244-9 (válido).
A0-330B6244-C (no válido).
30562252157 (no válido).
305622157 (no válido).

2. Programe el archivo cuit_cliente donde se ponga a prueba la función creada en el punto


anterior.

3. Programe la clase ArrayStackExt como clase derivada de ArrayStack y establezca para la


pila una capacidad máxima como límite. Para ello, agregue al constructor un parámetro
opcional de nombre maxlen con valor por defecto None de forma que cuando se realice un
push() a la pila si la capacidad está completa arroje una Excepción. C-6.16

4. Programe el archivo array_stack_ext_cliente donde se ponga a prueba la clase creada


en el punto anterior.

5. En algunas aplicaciones que hacen uso de estructuras de datos Cola es común que un
elemento recientemente removido se inserte nuevamente al final de la estructura para ser
procesado posteriormente. Cree la clase ArrayQueueExt como clase derivada de
ArrayQueue y en ella programe el método rotate(). Su semántica deberá ser idéntica a la
combinación q.enqueue(q.dequeue()) pero más eficiente que realizar las dos
invocaciones separadas. C-6.29.

6. Programe el archivo array_queue_ext_cliente donde se ponga a prueba la clase creada


en el punto anterior.

7. Implemente, en una clase con nombre QueueBasedStack, una pila utilizando como única
variable de instancia una cola. Deberá implementar los métodos push(), pop() y top(). C-
6.24

8. Programe el archivo queue_base_stack_cliente donde se ponga a prueba la clase creada

Página 2 de 4
Estructura De Datos - 2023 Trabajo Práctico N.º 3

en el punto anterior.

9. Cree la clase LinkedQueueExt como clase derivada de LinkedQueue y programe en ella el


método concatenate(q2) que tome todos los elementos de la q2 (de tipo LinkedQueue) y
los agregue al final de la estructura original. La operación deberá ejecutarse en el orden
O(1) resultar en que q2 quede vacía. C-7.26

10. Programe el archivo linked_queue_ext_cliente donde se ponga a prueba la clase creada


en el punto anterior.

11. Programe la clase LinkedListExt de forma que extienda la clase LinkedList agregando
los métodos:
a) reverse(): invierte el orden de los elementos en la lista utilizando un enfoque
recursivo.
b) pop(): quita el último elemento de la estructura.
c) add_first(): agrega un elemento al principio de la estructura. C-5.16 y C-7.28

12. Programe el archivo linked_list_ext_cliente donde se ponga a prueba la clase creada


en el punto anterior.

Proyectos de programación (opcional)

1. Utilizando expresiones regulares en el ejercicio 1 verificamos si un CUIT/CUIL era


sintácticamente válido ¿Es suficiente este control para asegurar que el CUIT/CUIL es
válido? En caso negativo, programe un programa Python que complete la verificación.
2. Procesar utilizando expresiones regulares el código fuente de la página Web que muestra
la altura de los ríos de la Prefectura Naval Argentina. Para ello deberá:
a) Abrir un navegador Web y en la barra de direcciones ingresar el texto: “view-
source:https://contenidosweb.prefecturanaval.gob.ar/alturas/index.php”
b) Guardar el código de la página Web en el sistema de archivos local. (Generalmente
botón derecho y luego “Guardar como...”)
c) Construir un nuevo proyecto Java en donde se realicen las siguientes tareas:
i. Abrir el archivo de la página Web (utilizar conjunto de caracteres re.UNICODE) y
procesar una línea a la vez.
ii. Utilizando una expresiones regulares procesar cada string obteniendo los
campos: Puerto, Río, Último Registro, Fecha Hora, y Estado:

Página 3 de 4
Estructura De Datos - 2023 Trabajo Práctico N.º 3

iii. Guardar en una lista de objetos de tipo RegistroAlturaRio los datos.


d) Programe los siguientes métodos para filtrar resultados:
i. filtrar_por_puerto(nombrePuerto: str) → List[RegistroAlturaRio].
ii. filtrar_por_rio(rio: Rio) → List[RegistroAlturaRio].
iii. filtrar_por_estado(estado: EstadoEnum) → List[RegistroAlturaRio].

Página 4 de 4

También podría gustarte