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


22 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

An贸nimo dijo...

https://studio.code.org/s/express-2024?redirect_warning=true