Fundamentos de Programación 2 Grupo D - Facultad de Informática - UCM
Profesora: Eva Ullán

Página de soporte de la asignatura Fundamentos de la Programación 2 (grupo D) del GIDIA de la Facultad de Informática de la UCM.

Esta página sirve para comprobar el trabajo personal de los estudiantes. Habrá pestañas para practicar distintos aspectos de programación utilizando el juez ¡Acepta el reto!.

Home
Sesión  
#1   Arrays multidimensionales
#2   Recursión
#3   Entretenimiento
#4   Ordenación y búsqueda

Problemas de apoyo a las clases de Fundamentos de la Programación 2

Aquí puedes ver el resumen/resultado de todos los envíos realizados a lo largo del segundo cuatrimestre del curso 2024-2025 por parte del grupo de 1ºD de la Facultad de Informática de la UCM.

Los envíos están divididos en distintos periodos que se corresponden con "secciones temáticas" o conceptuales de la asignatura.

Cada periodo tiene su propia pestaña donde se ven los detalles (entre ellos el intervalo de fechas correspondiente a ese periodo y los problemas aconsejados en él).

Para cada periodo se muestra una clasificación con los usuarios que han resuelto más ejercicios (en caso de empate, ganan los que los hayan resuelto en menos tiempo). Ten en cuenta que en la clasificación aparecen solamente los usuarios de Acepta el Reto matriculados en la asignatura. Si formas parte de la asignatura, has hecho envíos en los intervalos de tiempo adecuados y tu nombre no aparece en rojo, ponte en contacto con la profesora.

Ranking general

La tabla que aparece a continuación condensa el número total de problemas resueltos de cada periodo por cada usuario.

#1

La idea de esta primera tanda de problemas es practicar con arrays multidimensionales, aprovechando que repasando y reforzando el material necesario para abordar estos problemas.

Sería bueno que fuerais teniendo una colección de funciones implementadas para poder ir usándolas. Por ejemplo: leer una matriz de la entrada estándar, mostrarla por filas en la salida estándar, sumar dos matrices, multiplicarlas, etcétera.

Lo anterior os permitirá ir tirando de funciones ya implementadas en los distintos problemas, y también os dará opción a mejorar vuestras implementaciones a fuerza de usarlas, así como a poner atención a la diferencia en el paso de parámetros entre la representación de matrices como estructuras o como arrays.

#2

Nuestro siguiente maratón con Acepta el Reto se va a centrar en familiarizarnos con el pensamiento recursivo. En estas semanas dedicaremos algunas horas de clase a debatir cómo plantear algoritmos recursivos para resolver algunos problemas seleccionados.

Como ocurre casi siempre, podrías zafarte de usar el concepto elegido para practicar, pero intenta darle una buena oportunidad a la recursión, ya que pillarle el punto te vendrá de perlas tanto este curso como en cursos posteriores a este.

En esta ocasión, el orden de los primeros problemas sí es importante. Empezaremos debatiendo algunos de ellos en presencial y dejaré otros para que practiques por tu cuenta.

El primer ejercicio (¡Mío!) no es estrictamente de recursión; lo he puesto porque se resuelve usando un algoritmo que hemos visto implementado de forma recursiva.

El problema 357 - La prueba de las cajas y las bolas no es un ejercicio de divide y vencerás como tal, pero la estrategia seguida por el protagonista del concurso sí sigue esa idea.

Por su parte, el problema 342 - ¡No lo puedes saber! NO es de divide y vencerás, pero la temática es el juego de adivinar el número, por lo que se incluye aquí como testigo de que el juego es un ejemplo típico de divide y vencerás y búsqueda binaria.

Algunos de los ejercicios que aparecen aquí pueden implementarse también de forma iterativa. Pero para familiarizarte cuanto antes con el pensamiento recursivo, es mejor que los resuelvas con recursión y practiques así los conceptos del tema. Mejor aún sería que dieras varias pasadas por cada problema: empezando con recursión, que luego conviertes a recursión final, para terminar con la versión iterativa del algoritmo.

#3

Para no perder práctica ni facultades mientras llega la última tanda, unos pocos problemas de temática y dificultad variada.

#4

En esta ocasión, nos centramos en problemas cuya solución involucra algún tipo de ordenación de los datos. Aunque algunos de ellos puedan resolverse sin utilizar algoritmos de ordenación, intenta aplicar alguno de los algoritmos vistos en clase en una primera aproximación. Esto te permitirá, además, comparar tiempos al aplicar uno u otro.

También podrá aparecer en esta colección algún problema más específico de búsqueda.