Sabemos que enfrentarse a los exámenes de programación en la carrera de Ingeniería de Telecomunicación impone respeto. Pasar de la sintaxis estricta de Java a la flexibilidad de Python en un mismo examen (¡y en 4 horas!) requiere tener los conceptos muy claros.
Como siempre os comento a mis alumnos, la clave para dominar la Programación Orientada a Objetos (POO) no es memorizar, sino entender el porqué de cada línea de código.
Hoy, desde el equipo de la academia, traemos la resolución completa y explicada del simulacro de examen centrado en la gestión de Celdas y Estaciones Base. ¡Vamos a por ese 20/20!
PARTE A: JAVA (10 Puntos)
En esta parte se evalúa la lógica algorítmica clásica y la solidez construyendo clases. Recuerda la norma de oro del examen: prohibido usar streams.
Pregunta 1: Desplazamiento en array (2 puntos)
(a) Teoría: Desplazamiento vs Rotación Circular
- Desplazamiento (Shift): Consiste en mover los elementos de un array hacia una dirección. Los elementos que “salen” por el extremo se pierden, y los huecos que quedan suelen rellenarse con ceros o nulos.
- Rotación circular: Es similar, pero los elementos que “salen” por el lado derecho no se pierden, sino que vuelven a entrar por el lado izquierdo, formando un ciclo infinito.
(b) Implementación de rotarDerecha El truco aquí es usar el operador módulo (%) para normalizar el valor de k (por si nos piden rotar 10 posiciones en un array de 5, que equivaldría a rotar 0) y para calcular la nueva posición circular.
public class UtilidadesArray {
public static int[] rotarDerecha(int[] a, int k) {
if (a == null || a.length == 0) return a;
int n = a.length;
k = k % n; // Normalizamos k si es mayor que la longitud
int[] resultado = new int[n];
for (int i = 0; i < n; i++) {
// Calculamos la nueva posición con aritmética modular
int nuevaPosicion = (i + k) % n;
resultado[nuevaPosicion] = a[i];
}
return resultado;
}
}
Pregunta 2 y 3: Implementación de la clase Celda y sus cálculos (6 puntos)
Aquí unimos la creación de la clase con sus métodos de cálculo (pasar de dBm a mW y calcular el margen de ruido). Es vital validar en el constructor y lanzar la excepción IllegalArgumentException si la frecuencia no es válida.

Pregunta 4: EstacionBase y las pruebas (2 puntos)
Esta clase gestiona un array estático de objetos Celda. Ojo con lanzar IllegalStateException cuando el array está lleno.

PARTE B: PYTHON (10 Puntos)
Cambiamos el “chip” a Python. Aquí se busca código limpio, idiomático (“pythonic”) y un buen manejo de diccionarios y listas.
Pregunta 1: Conocimientos básicos (2 puntos)
(a) Diferencia entre list y tuple: La diferencia principal es la mutabilidad. Una lista (list) se puede modificar tras su creación (añadir, borrar, cambiar elementos) y usa corchetes []. Una tupla (tuple) es inmutable (no se puede alterar una vez definida) y usa paréntesis ().
(b) Mini-ejercicios:
# 1. Lambda porcentaje
porcentaje = lambda num, pct: num * (pct / 100)
# 2. f-string
nombre = "TuNombre" # Puedes cambiarlo
print(f"{nombre} - Asignatura: Python se aprende escribiendo codigo todos los dias.")
# 3. Recorrer frecuencias
frecuencias = [700, 800, 900, 1800, 2100, 2600]
for f in frecuencias:
print(f"f={f} MHz")
# 4. Recorrer claves diccionario
mod = {'QPSK': 2, '16QAM': 4, '64QAM': 6}
for clave in mod.keys():
print(clave)
Pregunta 2 y 3: Clase Celda en Python (6 puntos)
Fíjate en cómo implementamos el método dunder __str__ para el formateo y usamos isinstance para validar que el ruido sea numérico en el método margen.

Pregunta 4: Listas, diccionarios y mejor celda (2 puntos)
Para encontrar la mejor celda, Python nos ofrece la maravillosa función integrada max(), pasándole una función lambda como key.

Conclusión
¡Y con esto tendríamos el 20/20! Si te has atascado en algún paso, no te desanimes. La fluidez en programación se consigue tecleando mucho y equivocándose aún más.
Si necesitas ayuda extra, en nuestra academia tenemos grupos reducidos donde resolvemos exámenes de convocatorias anteriores paso a paso. ¿Qué parte te ha parecido más difícil, la rigidez de Java o la abstracción de Python? ¡Déjanoslo en los comentarios!
Aa
Contenido restringido

Comments are closed