Skip to main content

Lección 4: Uso de bucles While infinitos

Resolución del problema del laberinto de discos

Construyendo el proyecto

  • Cargue el proyecto Unit7Lesson3 de la lección anterior o vuelva a crear el proyecto que se muestra aquí para comenzar.
def main():
	# Si el ojo delantero detecta verde, entonces gire a la derecha
    si front_eye.detect (VERDE)
        : drivetrain.turn_for (DERECHA, 90, GRADOS)

    # Si el ojo delantero detecta azul, entonces gire a la izquierda
    si front_eye.detect (AZUL)
        : drivetrain.turn_for (IZQUIERDA, 90, GRADOS)

    # Si el ojo delantero detecta rojo, entonces pare
    si front_eye.detect (ROJO): 
        drivetrain.stop ()

    # Si el ojo delantero no detecta ninguno, entonces conduzca hacia adelante
    si front_eye.detect (NINGUNO) 
        : drivetrain.drive (ADELANTE)
  • Cambie el nombre del proyecto Unit7Lesson4.Barra de herramientas VEXcode VR con el cuadro de nombre del proyecto en voz alta. El proyecto se llama Unidad 7 Lección 4.

     

  • Arrastre o escriba un bucle infinito while hasta la parte superior del proyecto y establezca la condición en Verdadero.
def main():
    while True:
    	wait(5, MSEC)
  • Mueva el comando wait para hacer espacio para los comandos que irán dentro del bucle infinito while .
def main():
    while True:
    
    
    	wait(5, MSEC)
  • Dentro del bucle infinito while , copie y pegue las declaraciones if anteriores dentro del bucle. No elimine el comando wait en la parte inferior del bucle while. Tu proyecto puede verse así. Tenga en cuenta que copiar y pegar comandos de esta manera no da como resultado una sangría correcta.
def main():
    while True:
        
    # Si el ojo frontal detecta verde, entonces gire a la derecha
    si front_eye.detect (VERDE)
        : drivetrain.turn_for (DERECHA, 90, GRADOS)

    # Si el ojo frontal detecta azul, entonces gire a la izquierda
    si front_eye.detect (AZUL)
        : drivetrain.turn_for (IZQUIERDA, 90, GRADOS)

    # Si el ojo frontal detecta rojo, entonces pare
    si front_eye.detect (ROJO): 
        drivetrain.stop ()

    # Si el ojo frontal no detecta ninguno, entonces conduzca hacia adelante
    si front_eye.detect (NINGUNO) 
        : drivetrain.drive (ADELANTE)

    espere(5, MSEC)
  • Recuerde, la sangría es MUY importante en VEXcode VR Python. Para que el flujo del proyecto se ejecute según lo previsto, las declaraciones if deben estar sangradas dentro del bucle infinito while . Seleccione las declaraciones if y presione 'Tab' para sangrarlas dentro del bucle infinito while . Cuando tenga la sangría adecuada, su proyecto debe verse así: 
def main():
    while True:
        
        # Si el ojo frontal detecta verde, entonces gire a la derecha
        si front_eye.detect (VERDE)
            : drivetrain.turn_for (DERECHA, 90, GRADOS)

        # Si el ojo frontal detecta azul, entonces gire a la izquierda
        si front_eye.detect (AZUL)
            : drivetrain.turn_for (IZQUIERDA, 90, GRADOS)

        # Si el ojo frontal detecta rojo, entonces pare
        si front_eye.detect (ROJO): 
            drivetrain.stop ()

        # Si el ojo frontal no detecta ninguno, entonces conduzca hacia adelante
        si front_eye.detect (NINGUNO) 
            : drivetrain.drive (ADELANTE)

        espere(5, MSEC)
  • Con el bucle infinito while agregado al proyecto, todas las declaraciones if tendrán sus condiciones verificadas repetidamente. Abra Disk Maze Playground y ejecute el proyecto.
  • Cuando se ejecute este proyecto, el VR Robot navegará por el Disk Maze Playground de principio a fin. Una vez que el robot VR detecte el rojo, dejará de conducir.

    Robot de realidad virtual en el patio de recreo del laberinto de discos con el robot de realidad virtual detenido frente al disco rojo cerca de la esquina inferior derecha del patio de recreo.

En resumen

  • En el proyecto de la lección anterior, las condiciones dentro de las declaraciones si solo se verificaron una vez. Dado que las condiciones dentro de las declaraciones si solo se verificaron una vez, el robot VR avanzó para siempre porque la condición de "no detectar color" se informó como Verdadera al comienzo del proyecto.
  • Ahora que se ha agregado el bucle infinito while , cada condición de las declaraciones if se verificará repetidamente. La condición del bucle while siempre es Verdadero y, por lo tanto, el código dentro del bucle while siempre se ejecutará. Esto comprobará repetidamente las condiciones de las declaraciones si mientras el proyecto se está ejecutando. 
  • Durante el flujo del proyecto, si la condición de las declaraciones if es Verdadera, se ejecutan los comandos dentro de la declaración if . Si la condición de la declaración if es Falso, los comandos dentro de la declaración if no se ejecutan y el flujo del proyecto continuará con el siguiente comando. Esto permite que el robot VR realice comportamientos discretos, como girar o detenerse una vez que detecta un determinado color.
  • Si se utilizan instrucciones con bucles infinitos while  para garantizar que las condiciones se comprueben constantemente.

Preguntas

Seleccione un enlace a continuación para acceder al cuestionario de la lección.

Google Doc / .docx / .pdf