¿Cuándo conviene usar while en lugar de for?
Respuesta correcta: B) Cuando las iteraciones son impredecibles o la parada depende de un evento externo
Por qué: Ej. del material: while usuario_no_ha_salido. Si conoces el número exacto, usa for.
Practicum · Quiz de repaso R5
Cuándo usar cada uno, sintaxis en Python/JS/Java, scope, for-while y 4 laboratorios.
Nota: preguntas de repaso generadas a partir de la transcripción (../transcripciones/transcripcion-whilefor.txt). Las respuestas se verificaron ejecutando el código (Python/JS) o por traza rigurosa (Java/R/booleanos).
¿Cuándo conviene usar while en lugar de for?
Respuesta correcta: B) Cuando las iteraciones son impredecibles o la parada depende de un evento externo
Por qué: Ej. del material: while usuario_no_ha_salido. Si conoces el número exacto, usa for.
¿Para qué está diseñado el bucle for?
Respuesta correcta: B) Para iterar un número conocido o predecible de veces, con la lógica en una sola línea
Por qué: Concentra inicialización, condición y actualización: for (init; cond; update).
En el for clásico (herencia de C), ¿qué separa las tres secciones?
Respuesta correcta: B) Punto y coma (;)
Por qué: for (let i = 0; i < 5; i++). Python no usa este for: itera con range().
Todo for se puede reescribir como while. Dado for ([A]; [B]; [C]) { [D] }, ¿cuál es la traducción correcta?
Respuesta correcta: B) [A]; while ([B]) { [D]; [C]; }
Por qué: La inicialización va fuera y antes; dentro del cuerpo primero el bloque [D] y luego la actualización [C].
En Python, si dentro de un for reasignas i (ej.: i = i + 3), ¿qué pasa en la siguiente vuelta?
Respuesta correcta: B) i recupera invariablemente el siguiente valor del range (generador estricto)
Por qué: El generador ignora los cambios locales. En un while con flujo alterable sí saltaría vueltas.
Según el matiz del scope, ¿en qué lenguaje la variable i del for sigue existiendo después del bucle?
Respuesta correcta: C) Python
Por qué: JS con let muere al cerrar la llave (con var sobrevive en la función); Java muere estrictamente.
Laboratorio 1: ¿qué imprime en consola?
let a = 1; let b = 0;
while ((a < 5) && !(b == 2) || (a == 10)) { b++; a += b; }
console.log(a, b);
Respuesta correcta: B) 4 2
Por qué: Vuelta 1: a=2,b=1. Vuelta 2: a=4,b=2. Vuelta 3: !(2==2)=false y (4==10)=false, sale.
Laboratorio 2 (Python): ¿qué se imprime al final?
x = 0; y = 3
while (x < y) and (not (y == x) or (x == 0)):
print(x, end=",")
x += 1; y -= 1
print("Finiquito")
Respuesta correcta: B) 0,1,Finiquito
Por qué: (0,3): entra, imprime 0. (1,2): entra, imprime 1. (2,1): (2<1) falso, sale. Todo en una línea por end=",".
Laboratorio 3 (Java): el for lleva i = i + 1 dentro del cuerpo además del i++ del for. ¿Qué imprime?
int total = 0;
for (int i = 1; i <= 5; i++) { if (i % 2 == 0) { total += 10; } else { total += 1; } i = i + 1; }
Respuesta correcta: B) 3
Por qué: i=1: total=1, salta a 3. i=3: total=2, salta a 5. i=5: total=3, salta a 7 y sale. Revisar bien: el doble incremento salta los pares.
Laboratorio 4 (JS): con contador=0, valor=0, texto="0", bandera=false y seis if con == / ===, ¿qué muestra la consola?
Respuesta correcta: B) 21
Por qué: Solo la 1ª vuelta suma: (0==false)=true +1; ("0"==false)=true +4; (0=="0")=true +16 = 21. Los === dan false. Luego 21<3 es falso y sale.
¿Cuál es la precaución obligatoria dentro del bloque de un while?
Respuesta correcta: B) Modificar las variables que participan en la condición, o el bucle nunca terminará
Por qué: Sin avance hacia la salida: bucle infinito.
¿Cómo es el while que imprime del 0 al 4 en Python según el material?
Respuesta correcta: A) contador = 0 / while contador < 5: / print(contador) / contador = contador + 1
Por qué: Inicialización fuera, condición con dos puntos, incremento dentro (la precaución del slide 2).
¿Cómo es el mismo while (0 al 4) en Java según el material?
Respuesta correcta: A) int contador = 0; while (contador < 5) { System.out.println(contador); contador = contador + 1; }
Por qué: Misma lógica en los tres lenguajes; cambia la sintaxis (tipado, llaves, punto y coma, salida).
En for (Inicialización; Condición; Actualización), ¿qué es la segunda sección?
Respuesta correcta: B) La condición de permanencia
Por qué: 1ª = punto de partida, 2ª = permanencia, 3ª = paso o avance.
¿Qué valores toma i en for i in range(0, 5, 1)?
Respuesta correcta: B) 0, 1, 2, 3, 4
Por qué: range(inicio, fin, paso): el fin es exclusivo.
Matiz 1, columna flujo alterable: si haces i = i + 3 dentro del bloque, ¿qué pasa?
Respuesta correcta: B) Alteras el flujo real y el bucle saltará vueltas
Por qué: La variable i es directamente modificable (estilo while / for clásico). Lo contrario del generador estricto de Python.
En JavaScript, ¿qué diferencia hay entre declarar el contador con let y con var en un for?
Respuesta correcta: B) Con let i muere al cerrar la llave (scope de bloque); con var i sobrevive y se filtra a toda la función
Por qué: Matiz 2 del material: Python sobrevive, Java muere estrictamente, JS depende de let/var.
En Java, ¿qué pasa con la variable i del for cuando termina el bucle?
Respuesta correcta: B) Muere estrictamente al cerrar la llave: es imposible usarla fuera
Por qué: Scope más estricto de los tres lenguajes comparados.
Laboratorio 1: ¿por qué el bucle sale justo en la tercera revisión?
Respuesta correcta: B) Porque con a=4, b=2: !(2==2) es false y (4==10) es false
Por qué: (T && F) || F = F. No hay break: sale por condición falsa.
Laboratorio 3: ¿qué valores de i llegan a entrar al cuerpo del for?
Respuesta correcta: B) 1, 3, 5 (los pares se saltan por el doble incremento)
Por qué: El i++ del for más el i = i + 1 del cuerpo avanzan de 2 en 2; total = 1+1+1 = 3.
En el diagrama del while, si la condición booleana es falsa, ¿qué pasa?
Respuesta correcta: B) Salta el bucle y continúa el programa
Por qué: Rama No del diagrama: [Salta el bucle y continúa el programa]. Solo entra con Sí.
¿Cómo es el while que imprime del 0 al 4 en JavaScript según el material?
Respuesta correcta: B) let contador = 0; while (contador < 5) { console.log(contador); contador = contador + 1; }
Por qué: Misma lógica que Python y Java; cambia let, paréntesis, llaves, punto y coma y console.log.
El ejemplo genérico for (let i = 0; i < 5; i++) { console.log(i); } ¿qué imprime?
Respuesta correcta: B) 0, 1, 2, 3, 4
Por qué: Verificado ejecutándolo: inicia en 0 y para antes del 5.
Aplicando el criterio del slide, ¿qué bucle usarías para "contar del 1 al 10"?
Respuesta correcta: B) for, porque conoces el número exacto de iteraciones
Por qué: Ejemplo literal del slide: SÍ conoces el número -> for (compacto, sin olvidar el incremento).
Aplicando el criterio del slide, ¿qué bucle usarías con una condición como "while usuario_no_ha_salido"?
Respuesta correcta: B) while, porque la parada depende de un evento externo impredecible
Por qué: Ejemplo literal del slide: NO conoces las iteraciones -> while.
Laboratorio 2: ¿qué valores toma y durante la ejecución?
Respuesta correcta: B) 3, 2 y sale con 1
Por qué: y -= 1 por vuelta: se usa 3, luego 2, y al salir vale 1. x sube 0, 1, 2.
Laboratorio 4: ¿cuántas vueltas completas da el while?
Respuesta correcta: B) Una sola vuelta: contador llega a 21 y 21 < 3 es falso
Por qué: Verificado ejecutándolo: 1 + 4 + 16 = 21 en la primera vuelta.