Lição 3: Fluxo do Projeto com Vários Loops While
Agora que você criou um projeto de texto para navegar o Robô de RV até a letra ‘A’ no Wall Maze Playground, expandirá suas habilidades usando condicionais e valores de sensores. Nesta lição, você navegará pelo robô VR até o número ‘2‘ no Wall Maze Playground e, em seguida, explorará por que comandos adicionais são necessários para dirigir até a letra ‘B.’ No mini-desafio, você aplicará essas habilidades para navegar desde o início do Labirinto da Parede até o número ‘3’.

Resultados de Aprendizagem
- Descreva o fluxo do programa num projeto que tenha uma unidade de robô VR para a frente até que o sensor do pára-choques seja pressionado.
Mudar o nome do projeto
- Se o projeto da lição anterior ainda não estiver carregado, carregue o projeto Unit4Lesson2.
-
Renomeie o projeto Unit4Lesson3.
Fluxo do Projeto a Conduzir à Letra ‘A’
Na lição anterior, o robô de RV dirigiu até a letra ‘A’ no Wall Maze Playground. Vamos detalhar o fluxo do projeto enquanto nos preparamos para navegar para um novo local no Labirinto da Parede.

-
Para entender melhor o fluxo do projeto para dirigir com a letra ‘A’ no Wall Maze Playground, comece modificando o seu projeto anterior ou crie um novo projeto para corresponder a este projeto base.
def main(): while not left_bumper.pressed (): drivetrain.drive (FORWARD) wait(5, MSEC) drivetrain.turn_for (LEFT, 90, DEGREES) while not left_bumper.pressed (): drivetrain.drive (FORWARD) wait(5, MSEC) drivetrain.turn_for (LEFT, 90, DEGREES) while not left_bumper.pressed (): drivetrain.drive (FORWARD) wait(5, MSEC) drivetrain.stop()
- Quando um projeto utiliza um ciclo enquanto com uma condição e não , o fluxo do programa do projeto ainda segue a mesma sequência de cima para baixo. O ciclo while permite que o fluxo do programa “pause” num determinado ponto, enquanto uma condição é satisfeita. O operador not permite que o projeto permaneça no ciclo até que a condição seja reportada como False. Em seguida, o projeto fluirá para o próximo comando fora do loop. Uma condição booleana, como o Amortecedor Esquerdo sendo pressionado, relatará um valor Verdadeiro ou Falso. Neste código para conduzir o Robô VR à letra ‘A’, o Robô VR avançará até que a condição Booleana do Para-choque Esquerdo sendo pressionada seja Verdadeira.
O fluxo do projeto para conduzir à letra 'A' seria assim:
O comportamento do VR Robot mostra como cada ciclo while está a ser executado. Dividido ao lado do movimento do Robô de RV, podemos ver claramente para onde o Robô de RV se dirigiu depois que cada loop no projeto foi executado.
Dirija para o número '2'
Nesta Lição, o projeto será editado para que o Robô VR dirija para o número ‘2’ no Wall Maze Playground!

-
O projeto da Lição 2 tem o Robô VR virando à esquerda para dirigir à letra ‘A’. Para navegar até o número ‘2‘, o Robô VR terá que virar à direita, dirigir para frente e depois virar à esquerda.
-
Mude a direção do segundo comando turn_for para a direita em vez de para a esquerda. O seu projeto deve agora ter este aspeto:
def main(): while not left_bumper.pressed (): drivetrain.drive (FORWARD) wait(5, MSEC) drivetrain.turn_for (LEFT, 90, DEGREES) while not left_bumper.pressed (): drivetrain.drive (FORWARD) wait(5, MSEC) drivetrain.turn_for (RIGHT, 90, DEGREES) while not left_bumper.pressed (): drivetrain.drive (FORWARD) wait(5, MSEC) drivetrain.stop()
- Inicie o Wall Maze Playground, se ainda não estiver aberto, e execute o projeto.
-
Veja o robô VR começar a conduzir até ao número "2", mas pare numa parede. Assim, o Robô VR precisa virar à esquerda assim que pressionar contra a parede em vez de parar.
-
Selecione o botão "Reset" para reiniciar o Playground e mover o Robô VR de volta para a posição inicial.
-
Edite o código removendo o comando stop e substituindo-o pelos seguintes comandos para levar o robô VR ao número '2'.
def main(): while not left_bumper.pressed (): drivetrain.drive (FORWARD) wait(5, MSEC) drivetrain.turn_for (LEFT, 90, DEGREES) while not left_bumper.pressed (): drivetrain.drive (FORWARD) wait(5, MSEC) drivetrain.turn_for (RIGHT, 90, DEGREES) while not left_bumper.pressed (): drivetrain.drive (FORWARD) wait(5, MSEC) drivetrain.turn_for (LEFT, 90, DEGREES) while not left_bumper.pressed (): drivetrain.drive (FORWARD) wait(5, MSEC) drivetrain.turn_for (LEFT, 90, DEGREES) while not left_bumper.pressed (): drivetrain.drive (FORWARD) wait(5, MSEC) drivetrain.stop ()
- Inicie o Wall Maze Playground, se ainda não estiver aberto, e execute o projeto.
-
Assista ao robô VR dirigir para o número ‘2’ no Wall Maze Playground!
- Selecione o botão "Reset" para reiniciar o Playground e mover o Robô VR de volta para a posição inicial.
Selecione o botão Seguinte para continuar com o resto desta lição.