Practicum · Quiz de repaso R5

Bucles while y for

Cuándo usar cada uno, sintaxis en Python/JS/Java, scope, for-while y 4 laboratorios.

27Preguntas
4Opciones c/u
27Respuestas verificadas

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).

Índice

Preguntas

1 Repaso

¿Cuándo conviene usar while en lugar de for?

  1. ACuando se conoce el número exacto de iteraciones
  2. BCuando las iteraciones son impredecibles o la parada depende de un evento externo
  3. CSiempre, el for está obsoleto
  4. DSolo cuando hay que contar del 1 al 10

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.

2 Repaso

¿Para qué está diseñado el bucle for?

  1. APara iterar un número desconocido de veces
  2. BPara iterar un número conocido o predecible de veces, con la lógica en una sola línea
  3. CPara ejecutar el bloque al menos una vez siempre
  4. DPara recorrer solo arreglos

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).

3 Repaso

En el for clásico (herencia de C), ¿qué separa las tres secciones?

  1. AComas
  2. BPunto y coma (;)
  3. CDos puntos
  4. DSaltos de línea

Respuesta correcta: B) Punto y coma (;)

Por qué: for (let i = 0; i < 5; i++). Python no usa este for: itera con range().

4 Repaso

Todo for se puede reescribir como while. Dado for ([A]; [B]; [C]) { [D] }, ¿cuál es la traducción correcta?

  1. Awhile ([B]) { [A]; [D]; [C]; }
  2. B[A]; while ([B]) { [D]; [C]; }
  3. C[A]; while ([C]) { [D]; [B]; }
  4. Dwhile ([A]) { [B]; [C]; [D]; }

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].

5 Repaso

En Python, si dentro de un for reasignas i (ej.: i = i + 3), ¿qué pasa en la siguiente vuelta?

  1. AEl bucle salta 3 vueltas
  2. Bi recupera invariablemente el siguiente valor del range (generador estricto)
  3. CEl bucle termina
  4. DLanza un error

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.

6 Repaso

Según el matiz del scope, ¿en qué lenguaje la variable i del for sigue existiendo después del bucle?

  1. AJava
  2. BJavaScript con let
  3. CPython
  4. DEn ninguno

Respuesta correcta: C) Python

Por qué: JS con let muere al cerrar la llave (con var sobrevive en la función); Java muere estrictamente.

7 Repaso

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);

  1. A5 3
  2. B4 2
  3. C10 4
  4. DBucle infinito

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.

8 Repaso

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")

  1. A0,1,2,Finiquito
  2. B0,1,Finiquito
  3. CFiniquito
  4. D0,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=",".

9 Repaso

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; }

  1. A8
  2. B3
  3. C13
  4. D35

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.

10 Repaso

Laboratorio 4 (JS): con contador=0, valor=0, texto="0", bandera=false y seis if con == / ===, ¿qué muestra la consola?

  1. A3
  2. B21
  3. C0
  4. D63

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.

11 Repaso

¿Cuál es la precaución obligatoria dentro del bloque de un while?

  1. ADeclarar siempre el contador con var
  2. BModificar las variables que participan en la condición, o el bucle nunca terminará
  3. CUsar solo números pares
  4. DCerrar siempre con break

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.

12 Repaso

¿Cómo es el while que imprime del 0 al 4 en Python según el material?

  1. Acontador = 0 / while contador < 5: / print(contador) / contador = contador + 1
  2. Bfor (contador = 0; contador < 5; contador++)
  3. Cwhile contador < 5 print(contador)
  4. Ddo { print(contador) } while (contador < 5)

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).

13 Repaso

¿Cómo es el mismo while (0 al 4) en Java según el material?

  1. Aint contador = 0; while (contador < 5) { System.out.println(contador); contador = contador + 1; }
  2. Bwhile contador < 5: print(contador)
  3. Cfor i in range(0, 5, 1): print(i)
  4. Dloop contador < 5 { print(contador) }

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).

14 Repaso

En for (Inicialización; Condición; Actualización), ¿qué es la segunda sección?

  1. AEl punto de partida
  2. BLa condición de permanencia
  3. CEl paso o avance
  4. DEl cuerpo del bucle

Respuesta correcta: B) La condición de permanencia

Por qué: 1ª = punto de partida, 2ª = permanencia, 3ª = paso o avance.

15 Repaso

¿Qué valores toma i en for i in range(0, 5, 1)?

  1. A1, 2, 3, 4, 5
  2. B0, 1, 2, 3, 4
  3. C0, 1, 2, 3, 4, 5
  4. D5, 4, 3, 2, 1

Respuesta correcta: B) 0, 1, 2, 3, 4

Por qué: range(inicio, fin, paso): el fin es exclusivo.

16 Repaso

Matiz 1, columna flujo alterable: si haces i = i + 3 dentro del bloque, ¿qué pasa?

  1. ANada, el generador lo ignora
  2. BAlteras el flujo real y el bucle saltará vueltas
  3. CEl bucle termina de inmediato
  4. DLanza un error

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.

17 Repaso

En JavaScript, ¿qué diferencia hay entre declarar el contador con let y con var en un for?

  1. ANo hay diferencia
  2. BCon let i muere al cerrar la llave (scope de bloque); con var i sobrevive y se filtra a toda la función
  3. CCon var muere y con let sobrevive
  4. DAmbas mueren estrictamente como en Java

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.

18 Repaso

En Java, ¿qué pasa con la variable i del for cuando termina el bucle?

  1. ASigue existiendo como en Python
  2. BMuere estrictamente al cerrar la llave: es imposible usarla fuera
  3. CSe convierte en global
  4. DSe reinicia a 0

Respuesta correcta: B) Muere estrictamente al cerrar la llave: es imposible usarla fuera

Por qué: Scope más estricto de los tres lenguajes comparados.

19 Repaso

Laboratorio 1: ¿por qué el bucle sale justo en la tercera revisión?

  1. APorque a llega a 10
  2. BPorque con a=4, b=2: !(2==2) es false y (4==10) es false
  3. CPorque b supera a 5
  4. DPorque la condición siempre es verdadera y sale por break

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.

20 Repaso

Laboratorio 3: ¿qué valores de i llegan a entrar al cuerpo del for?

  1. A1, 2, 3, 4, 5
  2. B1, 3, 5 (los pares se saltan por el doble incremento)
  3. C2, 4
  4. DSolo 1

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.

21 Repaso

En el diagrama del while, si la condición booleana es falsa, ¿qué pasa?

  1. AEjecuta el bloque una vez más
  2. BSalta el bucle y continúa el programa
  3. CVuelve a preguntar infinitamente
  4. DLanza un error

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í.

22 Repaso

¿Cómo es el while que imprime del 0 al 4 en JavaScript según el material?

  1. Acontador = 0 / while contador < 5: / print(contador)
  2. Blet contador = 0; while (contador < 5) { console.log(contador); contador = contador + 1; }
  3. Cfor i in range(0, 5, 1): print(i)
  4. Dwhile contador < 5 { print(contador) }

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.

23 Repaso

El ejemplo genérico for (let i = 0; i < 5; i++) { console.log(i); } ¿qué imprime?

  1. A1, 2, 3, 4, 5
  2. B0, 1, 2, 3, 4
  3. C5, 4, 3, 2, 1
  4. D0, 1, 2, 3, 4, 5

Respuesta correcta: B) 0, 1, 2, 3, 4

Por qué: Verificado ejecutándolo: inicia en 0 y para antes del 5.

24 Repaso

Aplicando el criterio del slide, ¿qué bucle usarías para "contar del 1 al 10"?

  1. Awhile, porque contar es impredecible
  2. Bfor, porque conoces el número exacto de iteraciones
  3. Cdo-while
  4. DNinguno, se hace a mano

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).

25 Repaso

Aplicando el criterio del slide, ¿qué bucle usarías con una condición como "while usuario_no_ha_salido"?

  1. Afor, porque es más compacto
  2. Bwhile, porque la parada depende de un evento externo impredecible
  3. Cdo-while siempre
  4. DUn if

Respuesta correcta: B) while, porque la parada depende de un evento externo impredecible

Por qué: Ejemplo literal del slide: NO conoces las iteraciones -> while.

26 Repaso

Laboratorio 2: ¿qué valores toma y durante la ejecución?

  1. A3, 3, 3
  2. B3, 2 y sale con 1
  3. C0, 1, 2
  4. D3, 2, 1, 0

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.

27 Repaso

Laboratorio 4: ¿cuántas vueltas completas da el while?

  1. A3 vueltas
  2. BUna sola vuelta: contador llega a 21 y 21 < 3 es falso
  3. CCero vueltas
  4. DInfinitas

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.