← Volver a actividades
Autoevaluación

Autoevaluación: Control de Flujo y Estructuras Repetitivas

Control de Flujo y Estructuras Repetitivas · 15 min aprox.

Respondé todas las preguntas y presioná Calificar para ver tu puntaje.

1. ¿Qué salida genera este bucle for que utiliza la instrucción continue?
for (int i = 1; i <= 4; i++) {
    if (i == 2) {
        continue;
    }
    System.out.print(i + " ");
}
Correcto Incorrecto Sin responder

Respuesta correcta: 1 3 4

¿Por qué? La instrucción continue salta inmediatamente el resto del cuerpo del bucle en la iteración actual y avanza a la siguiente (ejecutando el paso de incremento i++). Cuando i == 2, la sentencia System.out.print se omite, imprimiéndose únicamente 1 3 4 .

2. El bucle do-while garantiza que su cuerpo de instrucciones se ejecutará al menos una vez, incluso si la condición booleana es inicialmente falsa.
Correcto Incorrecto Sin responder

Respuesta correcta: Verdadero

¿Por qué? A diferencia de while y for, que evalúan la condición antes de ingresar al bloque (*pre-test*), do-while es un bucle de post-condición (*post-test*): ejecuta primero el bloque y recién al final evalúa la condición lógica para decidir si debe repetir.

3. ¿Qué sucede si se omite la sentencia break en un bloque case de una estructura switch tradicional en Java?
Correcto Incorrecto Sin responder

Respuesta correcta: Se produce el fenómeno de fall-through y la ejecución continúa evaluando los casos siguientes.

¿Por qué? En el switch clásico heredado de C, omitir break provoca una caída en cascada (*fall-through*): la JVM continúa ejecutando secuencialmente las instrucciones de los siguientes case (e incluso el default), sin importar si coinciden con el valor original, hasta hallar un break o cerrar el bloque.

4. En un bucle while (condicion), la condición se comprueba por primera vez únicamente después de que el cuerpo completó su primera iteración.
Correcto Incorrecto Sin responder

Respuesta correcta: Falso

¿Por qué? El bucle while evalúa su condición **antes** de ejecutar cualquier instrucción de su cuerpo. Si la condición es false al inicio, el bloque del bucle no se ejecutará ninguna vez.

5. ¿Cuál es el valor final de la variable mensaje tras evaluar este operador ternario anidado?
int puntaje = 65;
String mensaje = (puntaje >= 70) ? "Aprobado" : (puntaje >= 60) ? "Recuperatorio" : "Reprobado";
Correcto Incorrecto Sin responder

Respuesta correcta: Recuperatorio

¿Por qué? La condición inicial puntaje >= 70 (65 >= 70) es false, por lo que se evalúa la rama negativa: (puntaje >= 60) ? "Recuperatorio" : "Reprobado". Como 65 >= 60 es true, el operador asigna "Recuperatorio".

6. ¿Cuántas veces se ejecuta el cuerpo del siguiente bucle while?
int k = 10;
while (k < 5) {
    k++;
}
Correcto Incorrecto Sin responder

Respuesta correcta: 0 veces

¿Por qué? La condición evaluada es 10 < 5, la cual es estrictamente falsa desde el primer momento. Como while valida la condición antes de entrar, el cuerpo no se ejecuta ni una sola vez.

7. Una instrucción break invocada dentro de un bucle anidado interrumpe todos los bucles exteriores que lo envuelven.
Correcto Incorrecto Sin responder

Respuesta correcta: Falso

¿Por qué? Un break sin etiqueta solo interrumpe el bucle más inmediato (más interno) en el cual se encuentra escrito. El bucle exterior continúa con su curso normal de iteraciones a menos que se utilicen etiquetas de salto (*labeled break*).

8. ¿Qué secuencia numérica imprime en la terminal este fragmento con break?
for (int i = 0; i < 5; i++) {
    if (i == 3) {
        break;
    }
    System.out.print(i);
}
Correcto Incorrecto Sin responder

Respuesta correcta: 012

¿Por qué? En las iteraciones con i = 0, i = 1 e i = 2 la condición i == 3 es falsa y se imprime cada número. Cuando i alcanza el valor 3, se ejecuta break, que cancela de forma inmediata el bucle sin llegar al System.out.print, obteniendo 012.

9. ¿Cuál es el rol de la sección default en una sentencia switch?
Correcto Incorrecto Sin responder

Respuesta correcta: Se ejecuta cuando el valor de la variable evaluada no coincide con ninguno de los valores de los bloques case.

¿Por qué? La cláusula default actúa como camino residual o de escape: si ninguna de las constantes especificadas en los case coincide con el valor evaluado, el control se transfiere al bloque default. Aunque no es estrictamente obligatoria, es una buena práctica de ingeniería incluirla siempre para manejar casos imprevistos.

10. Una variable declarada en la cabecera de un bucle for, como en for (int i = 0; ... ), puede ser leída fuera del bucle una vez que este finaliza.
Correcto Incorrecto Sin responder

Respuesta correcta: Falso

¿Por qué? El ámbito (*scope*) de la variable de control i declarada en la cláusula de inicialización del for queda restringido estrictamente al encabezado y al cuerpo del propio bucle. Al terminar el ciclo, la variable deja de ser visible y cualquier intento de leerla fuera producirá un error de compilación.