domingo, 16 de marzo de 2025

LOS BUCLES O CICLOS


 🌀 BUCLES EN PROGRAMACIÓN 

 MICRO:BIT Y MAKECODE

🔄 ¿Qué son los bucles o ciclos en programación?

Un bucle es una estructura de control que permite repetir un bloque de código varias veces, ya sea un número específico de veces o mientras se cumpla una condición.


Ejemplo cotidiano:

Imagina que quieres hacer 10 sentadillas. En lugar de decir:

➡️ "Baja y sube. Baja y sube. Baja y sube..." (10 veces)
Podrías decir simplemente:

➡️ "Repite 10 veces: baja y sube."

En programación, los bucles hacen exactamente eso: reducen la repetición de código y lo hacen más eficiente.

⚙️ Tipos de bucles en MakeCode para Micro:bit

En MakeCode, hay tres tipos principales de bucles:

1️⃣ Bucle "para" (for)

  • Se ejecuta un número determinado de veces.

  • Ejemplos

Contar del 1 al 5.

 for (let i = 1; i <= 5; i++) {
    basic.showNumber(i)
    basic.pause(500)
}

📌 Explicación:

  • i = 1 → Inicia en 1.
  • i <= 5 → Se repite mientras i sea menor o igual a 5.
  • i++ → Se incrementa en 1 en cada repetición.

👉 Usos comunes:
✅ Contar números.
✅ Ejecutar un código un número fijo de veces.
✅ Crear animaciones con repeticiones definidas.


2️⃣ Bucle "mientras" (while)
  • Se ejecuta mientras una condición sea verdadera.

  • Ejemplo: 

Mostrar números hasta que se presione el botón A.

let contador = 0
while (!(input.buttonIsPressed(Button.A))) {
    basic.showNumber(contador)
    contador += 1
    basic.pause(500)
}

📌 Explicación:

  • Se inicia contador = 0.
  • Mientras el botón A NO esté presionado, sigue mostrando números.
  • Cuando se presiona A, el bucle termina.

👉 Usos comunes:
✅ Sensores que esperan una condición (ej: detectar un obstáculo).
✅ Juegos donde el usuario interactúa hasta cumplir un objetivo.
✅ Procesos que dependen de datos en tiempo real.


3️⃣ Bucle "por siempre" (forever)

  • Se ejecuta infinitamente mientras la Micro:bit esté encendida.
  • Ejemplo: Mostrar un patrón en la pantalla LED.
  • Bloque en MakeCode: por siempre

Mostrar un corazón parpadeante.

basic.forever(function () {
    basic.showIcon(IconNames.Heart)
    basic.pause(500)
    basic.clearScreen()
    basic.pause(500)
})
📌 Explicación:
  • Se muestra un ícono de corazón.
  • Se espera 500 ms.
  • Se borra la pantalla y se espera nuevamente.
  • Este ciclo nunca se detiene.

👉 Usos comunes:
✅ Animaciones constantes en pantalla.
✅ Monitoreo de sensores.
✅ Sonidos o efectos visuales repetitivos.


🎯 3. Optimización de bucles

Los bucles pueden optimizarse para hacer el código más eficiente y rápido. Algunas estrategias incluyen:

Evitar bucles innecesarios: Si un bucle no es necesario, puede ralentizar el código.


Reducir la cantidad de cálculos dentro del bucle: Realizar operaciones complejas fuera del bucle cuando sea posible.


Usar variables adecuadas: Evitar el uso de variables globales dentro de bucles si no es necesario.


Usar "break" o "continue" cuando sea necesario:

  • break detiene el bucle antes de tiempo.
  • continue salta una iteración y pasa a la siguiente.

🔸 Ejemplo de uso de break y continue:

for (let i = 1; i <= 10; i++) {

    if (i == 5) {

        break // Detiene el bucle en 5

    }

    if (i == 3) {

        continue // Salta el número 3

    }

    basic.showNumber(i)

}

📌 Salida esperada: 1, 2, 4 (se salta el 3 y se detiene en 5).

🚀 4. Aplicaciones de los bucles en el mundo real

Los bucles se usan en muchísimas áreas de la tecnología:

🎮 Videojuegos:

  • Movimientos de personajes (ejemplo: repetir un salto hasta que el personaje toque el suelo).
  • Contar puntos en un marcador.

🚗 Automóviles inteligentes:

  • Sensores que miden distancia y activan el freno si hay un obstáculo.

📡 Internet y redes sociales:

  • Los servidores ejecutan ciclos infinitos para recibir y enviar datos constantemente.

🎵 Música digital:

  • Reproducción en bucle de efectos de sonido.

🎥 5. Mini-Proyecto: Reloj digital con bucles en Micro:bit

🔹 Objetivo: Simular un reloj que cuente cada segundo y reinicie en 60.

🔸 Código en MakeCode:

let segundos = 0

basic.forever(function () {

    basic.showNumber(segundos)

    segundos += 1

    basic.pause(1000)

    if (segundos == 60) {

        segundos = 0

    }

})

📌 Explicación:

  • Se inicia segundos = 0.
  • Cada segundo se incrementa en 1.
  • Cuando llega a 60, vuelve a 0.

👉 Retos para los estudiantes:
✅ Agregar minutos y horas al reloj.
✅ Hacer que muestre una animación cada 10 segundos.
✅ Añadir un botón para reiniciar el reloj manualmente.

MAS EJEMPLOS

🚶‍♂️ 1. Rutinas diarias (Bucle "Para")

📌 Ejemplo: Cepillarse los dientes.
🔹 Explicación: Lo hacemos siempre de la misma manera, con un número fijo de repeticiones.
🔹 Código equivalente en pseudocódigo:

for i in range(1, 3):  # Repetimos dos veces (arriba y abajo)

    cepillar_dientes()

🏋️‍♂️ 2. Ejercicio (Bucle "Para" o "Mientras")

📌 Ejemplo: Hacer 20 sentadillas.
🔹 Explicación: Si queremos hacer 20, es un bucle "para"; pero si las hacemos hasta cansarnos, es un bucle "mientras".
🔹 Código equivalente:

repeticiones = 0

while no_estoy_cansado():

    hacer_sentadilla()

    repeticiones += 1

🚦 3. Semáforos (Bucle "Por Siempre")

📌 Ejemplo: Un semáforo cambia de luces en un ciclo infinito.
🔹 Explicación: Se repite en un bucle infinito, siempre con los mismos pasos.
🔹 Código equivalente:

while True:

    encender_luz("verde")

    esperar(30)  # 30 segundos

    encender_luz("amarillo")

    esperar(5)

    encender_luz("rojo")

    esperar(30)


🎮 4. Videojuegos (Bucle "Por Siempre")

📌 Ejemplo: En Flappy Bird, el juego sigue ejecutándose hasta que el jugador pierda.
🔹 Explicación: Se usa un bucle infinito que solo se detiene si hay "Game Over".
🔹 Código equivalente:

while jugador_vivo:

    mover_pajaro()

    detectar_colision()


🏦 5. Cajero automático (Bucle "Mientras")

📌 Ejemplo: Un cajero sigue pidiendo que ingreses tu PIN hasta que sea correcto.
🔹 Explicación: No sabemos cuántas veces el usuario intentará, por eso usamos "mientras".
🔹 Código equivalente:

pin_correcto = "1234"

pin_ingresado = ""

while pin_ingresado != pin_correcto:

    pin_ingresado = input("Ingresa tu PIN: ")

print("Acceso concedido")


🤖 6. Robots aspiradora (Bucle "Mientras")

📌 Ejemplo: Un robot sigue limpiando hasta que la batería se agote.
🔹 Explicación: Usa un bucle "mientras" para seguir limpiando hasta que la batería llegue a 0.
🔹 Código equivalente:

while bateria > 0:

    limpiar()

    mover()

    bateria -= 1

📬 7. Notificaciones de redes sociales (Bucle "Por Siempre")

📌 Ejemplo: Facebook revisa constantemente si hay nuevas notificaciones.
🔹 Explicación: Se usa un bucle infinito que consulta el servidor cada cierto tiempo.
🔹 Código equivalente:

while True:

    revisar_nuevas_notificaciones()

    esperar(5)  # Esperar 5 segundos antes de volver a revisar


21 comentarios:

Anónimo dijo...

Juan Acencio https://makecode.microbit.org/_bC9Wgo3J0f35

Anónimo dijo...

SHARONhttps://makecode.microbit.org/_Kx6TC4TPTaob

Anónimo dijo...

Victoria B 402: https://makecode.microbit.org/_YtR0x8Jkahii

Anónimo dijo...

SHALY DAYANA:https://makecode.microbit.org/_Vt1e6PdD3T2u

Anónimo dijo...

matias y oliver 402:https://makecode.microbit.org/_cDxVVdHWF9CJ

Anónimo dijo...

https://makecode.microbit.org/_7Cd1cuUvU1ct

Anónimo dijo...

pines ANDRES 402

Anónimo dijo...

DERECK VALENCIAhttps://makecode.microbit.org/_4qViefUWbb5f

Anónimo dijo...

angel402

Anónimo dijo...

Sarah C https://makecode.microbit.org/_K2hcfvdEiWTX

Anónimo dijo...

eliana rincon jimenez 402

Anónimo dijo...

LINDA 402 https://makecode.microbit.org/_arRV1p8ACF1U

Anónimo dijo...

leandrohttps://makecode.microbit.org/_RAh4DTKgV5U8

Anónimo dijo...

Aaron molinahttps://makecode.microbit.org/_0VPLjRHrKWRf

Anónimo dijo...

emily 402https://makecode.microbit.org/_Tax2h5fivR4ahttps://makecode.microbit.org/_Tax2h5fivR4a

Anónimo dijo...

ELIANA RINCON JIMENEZ :https://makecode.microbit.org/_25sTUAYXz5CP

Anónimo dijo...

DAMIAN BERRERA 402

Anónimo dijo...

DANIEL MATEO 402https://makecode.microbit.org/_4CkThe99HbrF

Anónimo dijo...

pine jean:https://makecode.microbit.org/_Kwq472D9fitq

Anónimo dijo...

emly sofia402vhttps://makecode.microbit.org/_YkTDspJt9WDb

Anónimo dijo...

https://www.youtube.com/watch?v=QA48wTGbU7A