Respuestas modelo
Consulta aquí las respuestas correctas y explicaciones de las autoevaluaciones y los tests del manual. Ideal para repasar antes de un test o aclarar dudas.
2.02 · Selectivas Anidadas y `switch`
16 preguntas con respuesta en este tema.
🎯 Autoevaluación (3)
¿Para qué sirve `switch`?
- A. Para bucles
- B. Para seleccionar entre múltiples caminos según el valor de una variable ✓ CORRECTA
- C. Para funciones
- D. Para errores
switch compara una variable contra múltiples valores (case) y ejecuta el bloque correspondiente.
En C++, ¿qué hace `break` dentro de un switch?
- A. Termina el programa
- B. Sale del switch después de ejecutar un case ✓ CORRECTA
- C. Salta al siguiente case
- D. No tiene efecto
break evita el "fall-through" (que se ejecuten los cases siguientes). Sin break, se ejecutan todos los cases debajo.
¿Cuándo es preferible switch sobre if-else anidados?
- A. Siempre
- B. Cuando comparas una variable contra muchos valores discretos ✓ CORRECTA
- C. Solo con strings
- D. Solo con números decimales
switch es más legible y eficiente cuando hay muchas comparaciones de igualdad contra valores discretos.
📝 Test · Sección A · Opción múltiple (10)
¿Para qué sirve switch?
- A. Repetir
- B. Seleccionar entre múltiples caminos según un valor ✓ CORRECTA
- C. Definir función
- D. Compilar
switch compara una variable contra varios valores.
¿Qué hace break en un switch?
- A. Termina el programa
- B. Sale del switch después de un case ✓ CORRECTA
- C. Salta al siguiente case
- D. No tiene efecto
break evita el "fall-through" entre cases.
¿Qué pasa si olvidas break en un case?
- A. Error
- B. Fall-through: ejecuta los cases siguientes ✓ CORRECTA
- C. Termina el switch
- D. El case se ignora
Sin break, la ejecución continúa al siguiente case hasta encontrar break o fin.
switch se puede usar con:
- A. Solo enteros
- B. En C++: enteros, char, enum; en JS/PHP también string ✓ CORRECTA
- C. Solo strings
- D. Solo floats
En C++ clásico: enteros, char, enum. En JS/PHP: cualquier tipo.
¿Cuál es la sintaxis correcta de switch?
- A. switch (x) { case 1: ... break; } ✓ CORRECTA
- B. switch x case 1: ...
- C. switch { x case 1 }
- D. switch (x) -> case 1
switch (expresión) { case valor: ...; break; }.
¿Cuándo es mejor if-else que switch?
- A. Siempre
- B. Para rangos o condiciones complejas ✓ CORRECTA
- C. Solo con strings
- D. Nunca
switch: comparaciones discretas. if-else: rangos, condiciones complejas.
¿switch puede tener un case default?
- A. No
- B. Sí, es el caso por defecto si no hay match ✓ CORRECTA
- C. Solo en Java
- D. Solo en C++
default es opcional pero recomendado para casos no contemplados.
¿Qué pasa si ningún case coincide y no hay default?
- A. Error
- B. No se ejecuta ningún bloque ✓ CORRECTA
- C. Se ejecuta el último case
- D. Se repite el switch
Sin default y sin match, simplemente no se ejecuta nada.
switch con float: ¿es válido en C++?
- A. Sí
- B. No (en C++ clásico) ✓ CORRECTA
- C. Solo en C++20
- D. Solo con double
switch en C++ clásico no acepta float/double (solo enteros, char, enum).
¿Cuántos cases puede tener un switch?
- A. Máximo 10
- B. Sin límite práctico ✓ CORRECTA
- C. Máximo 255
- D. Solo 1
No hay un límite práctico en el número de cases.
✍️ Test · Sección B · Preguntas abiertas (3)
¿Cuándo es preferible switch sobre if-else? Da un ejemplo donde switch es claramente mejor.
Switch: cuando comparas una variable contra muchos valores discretos (ej: menú con 5 opciones, días de la semana). Más legible, el compilador puede optimizar (jump table). If-else: rangos, condiciones complejas, comparaciones de strings.
Explica qué es "fall-through" en switch y por qué a veces se usa intencionalmente.
Fall-through: cuando un case no tiene break, la ejecución continúa al siguiente case. Intencional: cuando varios cases comparten el mismo código. Ej: case 1: case 2: case 3: "primer trimestre"; break;
Diseña un switch que imprima el número de días de un mes (considerando año no bisiesto).
switch(mes) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: 31; break; case 4: case 6: case 9: case 11: 30; break; case 2: 28; break; default: "mes inválido"; }
📝 ¿Listo para evaluarte?
Regístrate o inicia sesión para tomar la autoevaluación o el test de este tema y registrar tu puntaje.