La Papa Explosiva Digital

Has usado bucles for para contar un número exacto de pasos. Pero, ¿qué pasa si no sabes cuántas veces necesitas repetir una acción? Imagina el juego de "la papa caliente": el temporizador es aleatorio y el suspenso es la clave. No sabes si explotará en 5 segundos o en 15. En esta misión, aprenderás a usar el último de los grandes bucles, el bucle "while" (repetir mientras), para crear tu propia versión digital de este emocionante juego.

Bucle While Condicionales de Bucle Aleatoriedad Juego Temporizador

Nivel Intermedio

Abrir en Protobject

¿Qué haremos?

¿Eres un profesor?

Cursos

  • Grados 6-12

Materiales

  • Celular, tableta o computador
  • Conexión a Internet
  • Cartón, tijeras y un par de elásticos para sujetar el celular al cartón

Descripción

Esta actividad introduce el bucle "while", la estructura de bucle fundamental para situaciones donde el número de iteraciones es desconocido. Los estudiantes construirán un juego de "la papa caliente" con un temporizador aleatorio, un escenario perfecto que demuestra la necesidad de un bucle que se ejecute mientras una condición sea verdadera, en lugar de un número fijo de veces.

Objetivos Educativos

  • Comprender la estructura y el propósito de un bucle "while".
  • Diferenciar claramente entre los casos de uso de un bucle "for" y un bucle "while".
  • Utilizar números aleatorios para crear un comportamiento impredecible en un programa.
  • Gestionar el flujo de un programa que depende de una condición que cambia en tiempo de ejecución.

Inicio (10 minutos) - El Bucle del Misterio

  1. Da la bienvenida a la clase: "Hemos aprendido el bucle 'for', que es como correr una carrera de 100 metros: sabes exactamente dónde está la meta. Pero, ¿y si estás en un laberinto? No sabes cuántos pasos te tomará salir; solo sabes que debes seguir caminando mientras no hayas encontrado la salida."
  2. Introduce el concepto: "Ese 'mientras' es la clave de nuestro último tipo de bucle: el bucle 'while'. Se ejecuta no por un número de veces, sino mientras una condición sea verdadera."
  3. Presenta el juego: "Hoy usaremos esta idea para crear un juego de 'la papa caliente'. El temporizador será aleatorio, así que no sabemos cuándo terminará. El juego continuará mientras el tiempo restante sea mayor que cero."

Cuando No Sabes Cuándo Parar

El bucle for es genial cuando sabes de antemano el número exacto de repeticiones (por ejemplo, "repite 10 veces" o "recorre los 7 píxeles de una fila"). Pero en muchos casos, como en un juego con un temporizador aleatorio o al esperar que un usuario presione una tecla, no sabes cuánto tiempo tomará. Necesitas un bucle que pueda seguir funcionando mientras se cumpla una condición, sin importar cuántas repeticiones sean.

El Bucle 'While' (Repetir Mientras)

El bucle "while" (o "repetir mientras") es la solución perfecta para estos casos. Funciona con una lógica simple:

  1. Primero, comprueba una condición (por ejemplo, ¿es tiempoRestante > 0?).
  2. Mientras esa condición sea verdadera, ejecuta el código que tiene dentro una y otra vez.
  3. En cada repetición, vuelve al paso 1 y comprueba la condición de nuevo.
  4. En el momento en que la condición se vuelve falsa, el bucle se detiene inmediatamente y el programa continúa con el siguiente bloque.

La Lógica de la Papa Caliente

Nuestro juego combina varias ideas que ya conoces de una manera nueva:

  • Evento: Presionar la pantalla inicia una nueva ronda — si no hay una en curso.
  • Bandera: La variable listo recuerda si el juego está libre. Parte en verdadero en al iniciar; el evento solo arranca una ronda si listo, y lo primero que hace es ponerla en falso, para que un segundo toque no reinicie la ronda en curso.
  • Variable y Aleatoriedad: La variable tiempoRestante almacena un número aleatorio para que cada ronda sea impredecible.
  • Bucle While: El bucle principal del juego se ejecuta mientras tiempoRestante > 0. Dentro del bucle, restamos 1 a tiempoRestante cada segundo.
  • Final: Cuando tiempoRestante llega a 0, la condición del bucle se vuelve falsa, el bucle termina, ¡y la papa "explota"!

Desarrollo (20-30 minutos) - Programando el suspenso

  1. Ahora que los estudiantes entienden la diferencia conceptual entre for y while, es hora de construir el juego.
  2. Guíalos a través de las instrucciones para crear el juego, enfocándose en la estructura del bucle 'while' y su condición de parada (tiempoRestante > 0), como se detalla a continuación. Es crucial que entiendan por qué este bucle es la herramienta correcta para este trabajo.

Cierre (5-10 minutos) - La Herramienta Correcta para el Trabajo

  1. Una vez que todos estén pasando la "papa caliente", es el momento de la reflexión final sobre los bucles.
  2. Inicia la discusión: "Comparemos las herramientas que conocemos. ¿Cuándo usarían un bucle 'for'? ¿Y cuándo usarían un bucle 'while'? ¿Por qué era un 'while' perfecto para este juego y por qué un 'for' no hubiera funcionado tan bien?" (Porque el tiempo restante es aleatorio y desconocido cuando el bucle comienza).

Reflexiona

¿Cuál es la principal diferencia entre un bucle "for" y un bucle "while"? ¿Por qué era "while" la mejor opción para este juego?

Dentro de un bucle "while", es muy importante asegurarse de que la condición eventualmente se vuelva falsa para evitar un bucle infinito. ¿Qué bloque dentro de nuestro bucle garantiza que el juego siempre termine?

¿Qué pasaría si el número aleatorio generado pudiera ser 0? ¿Funcionaría el juego correctamente?

Presenta Plan de Lección Modelo de cartón

Cuando No Sabes Cuándo Parar

El bucle for es genial cuando sabes de antemano el número exacto de repeticiones (por ejemplo, "repite 10 veces" o "recorre los 7 píxeles de una fila"). Pero en muchos casos, como en un juego con un temporizador aleatorio o al esperar que un usuario presione una tecla, no sabes cuánto tiempo tomará. Necesitas un bucle que pueda seguir funcionando mientras se cumpla una condición, sin importar cuántas repeticiones sean.

El Bucle 'While' (Repetir Mientras)

El bucle "while" (o "repetir mientras") es la solución perfecta para estos casos. Funciona con una lógica simple:

  1. Primero, comprueba una condición (por ejemplo, ¿es tiempoRestante > 0?).
  2. Mientras esa condición sea verdadera, ejecuta el código que tiene dentro una y otra vez.
  3. En cada repetición, vuelve al paso 1 y comprueba la condición de nuevo.
  4. En el momento en que la condición se vuelve falsa, el bucle se detiene inmediatamente y el programa continúa con el siguiente bloque.

La Lógica de la Papa Caliente

Nuestro juego combina varias ideas que ya conoces de una manera nueva:

  • Evento: Presionar la pantalla inicia una nueva ronda — si no hay una en curso.
  • Bandera: La variable listo recuerda si el juego está libre. Parte en verdadero en al iniciar; el evento solo arranca una ronda si listo, y lo primero que hace es ponerla en falso, para que un segundo toque no reinicie la ronda en curso.
  • Variable y Aleatoriedad: La variable tiempoRestante almacena un número aleatorio para que cada ronda sea impredecible.
  • Bucle While: El bucle principal del juego se ejecuta mientras tiempoRestante > 0. Dentro del bucle, restamos 1 a tiempoRestante cada segundo.
  • Final: Cuando tiempoRestante llega a 0, la condición del bucle se vuelve falsa, el bucle termina, ¡y la papa "explota"!

Crear

¡A jugar a la Papa Caliente!

Construye el modelo de cartón— también necesitas un par de elásticos para sujetar el teléfono al cartón

  1. Necesitaremos 2 componentes: BotónTactil para que actúe como nuestro botón de inicio, y ReproductorSonido para la música de suspenso y el efecto de sonido.
  2. Asegúrate de tenerlos listos en tu espacio de trabajo. Puedes abrirlos en la misma ventana.

¡Estamos listos para programar el suspenso!

Composición del Código

Casi toda la lógica vive dentro del evento cuando es tocado, protegida por un si listo. Primero la bandera pasa a falso, luego se sortea tiempoRestante y comienza la música. Luego, el bucle mientras tiempoRestante > 0 se activa. Es crucial que dentro del bucle modifiquemos la variable que se está comprobando (con el bloque añadir -1 a tiempoRestante). Si olvidáramos este paso, tiempoRestante nunca llegaría a 0, la condición siempre sería verdadera, ¡y el bucle se ejecutaría para siempre!

Reflexiona

¿Cuál es la principal diferencia entre un bucle "for" y un bucle "while"? ¿Por qué era "while" la mejor opción para este juego?

Dentro de un bucle "while", es muy importante asegurarse de que la condición eventualmente se vuelva falsa para evitar un bucle infinito. ¿Qué bloque dentro de nuestro bucle garantiza que el juego siempre termine?

¿Qué pasaría si el número aleatorio generado pudiera ser 0? ¿Funcionaría el juego correctamente?