Skip to main content

Lección 4: Uso de bucles anidados

En la lección anterior, creaste un proyecto para instruir al robot de realidad virtual para que conduzca, recoja y mueva los tres discos azules en el Disk Mover Playground al objetivo azul. ¡En esta Lección, crearás un proyecto para recoger y mover un disco de cada color a su objetivo de color correspondiente en el Disk Mover Playground usando bucles anidados!

Una vista de arriba hacia abajo de Disk Mover Playground con el primer disco de cada color en el objetivo de color correspondiente. El VR Robot está orientado hacia la pared lateral derecha en el borde de la portería verde, en la esquina inferior derecha.

Resultados de aprendizaje

  • Identificar cómo anidar bucles.
  • Describir el flujo de un proyecto a través de bucles anidados.
  • Explica por qué se usarían bucles anidados en un proyecto.

¿Qué son los bucles anidados?

En unidades y lecciones anteriores de este curso, ha utilizado bucles de la categoría Control, como el bucle for , el bucle while y los bucles infinitos while para repetir comportamientos. Colocar un bucle dentro de otro bucle se llama "anidación". Los bucles anidados son útiles en proyectos en los que un robot de realidad virtual repite los mismos comportamientos más de una vez, como mover varios discos en el patio de recreo. Los bucles de anidación pueden organizar y condensar un proyecto, para que sea más fácil de entender. Esto puede ser útil para comprender mejor el contexto y el propósito del código, así como para facilitar la identificación de errores y la solución de problemas de un proyecto. 

Por ejemplo, para mover los tres discos azules hacia el objetivo azul, se puede utilizar un bucle para para repetir el proceso de recolectar un disco varias veces. El proyecto que se muestra aquí coloca el proyecto de la Lección 3 para mover el primer disco azul al objetivo azul dentro de un bucle para , con el parámetro establecido en 3. Observe cómo las cuatro secciones del proyecto anterior están sangradas dentro del bucle for.

def main():
    for repeat_count in range(3):
        #1. Conduzca hasta el primer disco
        sin down_eye.near_object (): drivetrain.drive
            (FORWARD)
            wait(5, MSEC)
        drivetrain.stop()

        # 2. Recoge el disco magnet.energize
        (BOOST)

        # 3. Conduzca hasta la meta
        drivetrain.turn_to_heading(180, GRADOS)
        mientras front_distance.get_distance(MM) > 200:
            drivetrain.drive(FORWARD)
            espere(5, MSEC)
        drivetrain.stop()

        # 4. Deje caer el disco en la
        metamagnet.energize (DROP

        )drivetrain.drive_for (REVERSE, 100, MM)
        drivetrain.turn_to_heading(0, GRADOS)

    espere(5, MSEC)

Al "anidar" bucles, el bucle externo controla la cantidad de veces que se ejecuta el bucle interno.  En este proyecto, el bucle para es el bucle externo y repetirá los comportamientos del bucle tres veces.

El proyecto desde arriba con el bucle for resaltado en un cuadro rojo. Con sangría debajo de la definición principal, el recuento de guiones bajos para repetición en el rango (3) dos puntos es el comienzo del bucle, y las cuatro secciones del proyecto tienen sangría debajo de eso. Alineado con el comando for Loop en la parte inferior del proyecto hay un comando wait, que muestra dónde termina el bucle.

Los bucles interiores son aquellos bucles contenidos dentro del bucle exterior. En este ejemplo, cada uno de los bucles while (para llegar al disco y al objetivo) son 'bucles internos' que se ejecutan cada vez que el proyecto pasa por el bucle for .El mismo proyecto desde arriba, con cada uno de los bucles while interiores resaltados en un cuadro rojo. La primera y tercera secciones de comentarios del proyecto contienen bucles while para usar los sensores del robot para conducir hasta que se detecte un disco, luego hasta que se detecte la pared.

Para su información

La sangría es importante en los proyectos de VEXcode VR Python. Puede usar las líneas indicadoras grises en el espacio de trabajo como ayuda visual al anidar bucles, para asegurarse de que su proyecto funcione según lo previsto. Cada línea indica el inicio y el final de un bucle.

El mismo proyecto desde arriba con las líneas guía resaltadas en recuadros rojos, mostrando la alineación de indentación de cada uno de los bucles interiores en relación con el resto del proyecto. La línea de bucle for se extiende directamente hasta el comando de espera final. Y cada una de las líneas de bucle while se extiende hasta los comandos stop.

Flujo de un proyecto de bucle anidado 

En este ejemplo, cada vez que se itera el bucle para , se recoge un disco azul y se devuelve al objetivo azul. 

Después de la primera iteración, el primer disco azul vuelve a la meta azul y el robot VR se gira para estar listo para recoger el segundo disco.

Una imagen lado a lado del proyecto desde arriba que se muestra en el espacio de trabajo a la izquierda, y la ventana del patio de recreo que se muestra a la derecha. El proyecto tiene una flecha naranja que se envuelve desde el comando for Loop alrededor de todo el proyecto, ilustrando la primera iteración del bucle for. En el patio de recreo, el primer disco azul está en la portería azul, y el robot VR se coloca frente a los discos azules restantes, en la parte delantera de la portería, lo que indica la posición del robot después de la primera iteración.

Después de la segunda iteración, se recoge el segundo disco azul y se gira el robot VR para que esté listo para recoger el tercer disco.

Una imagen lado a lado del proyecto desde arriba que se muestra en el espacio de trabajo a la izquierda, y la ventana del patio de recreo que se muestra a la derecha. El proyecto tiene una flecha naranja que se envuelve desde el comando for Loop alrededor de todo el proyecto, ilustrando la segunda iteración del bucle for. En el patio de recreo, 2 discos azules están en la portería azul, y el robot VR se coloca frente al disco azul restante, en la parte delantera de la portería, lo que indica la posición del robot después de la segunda iteración.

Después de la tercera iteración, se recoge el tercer disco azul y el robot VR deja de moverse. El bucle para ya ha completado su alcance, por lo que el proyecto está completado. 

Una imagen lado a lado del proyecto desde arriba que se muestra en el espacio de trabajo a la izquierda, y la ventana del patio de recreo que se muestra a la derecha. El proyecto tiene una flecha naranja que se envuelve desde el comando for Loop alrededor de todo el proyecto, ilustrando la tercera iteración del bucle for. En el patio de recreo, los tres discos azules están en la portería azul, y el robot de realidad virtual está colocado de espaldas a la portería justo fuera de la caja de la portería, lo que indica la posición del robot después de la iteración final.

 

Seleccione el botón Siguiente para continuar con el resto de esta lección.