Lição 4: Usando loops enquanto infinitos
Resolver o problema do labirinto de discos
Construção do projecto
- Carregue o projeto Unit7Lesson3 da lição anterior ou recrie o projeto mostrado aqui para começar.
def main():
# Se o olho frontal detectar verde, vire à direita
se front_eye.detect (VERDE):
drivetrain.turn_for (DIREITA, 90, GRAUS)
# Se o olho frontal detectar azul, vire à esquerda
se front_eye.detect (AZUL):
drivetrain.turn_for (ESQUERDA, 90, GRAUS)
# Se o olho frontal detectar vermelho, pare
se front_eye.detect (VERMELHO): drivetrain.stop (
)
# Se o olho frontal não detectar nenhum, dirija para frente
se front_eye.detect (NENHUM): drivetrain.drive
(PARA FRENTE)
-
Renomeie o projeto Unit7Lesson4.
- Arraste ou digite um while loop infinito no topo do projeto e defina a condição como True.
def main():
while True:
wait(5, MS)
- Mova o comando wait para abrir espaço para os comandos que irão dentro do ciclo infinito while .
def main():
while True:
wait(5, MS)
- Dentro do ciclo infinito while , copie e cole as instruções if anteriores dentro do ciclo. Não apague o comando wait na parte inferior do ciclo while. O seu projeto pode ser assim. Observe que copiar e colar comandos dessa maneira não resulta em recuo correto.
def main():
while True:
# Se o olho frontal detectar verde, vire à direita
se front_eye.detect (VERDE):
drivetrain.turn_for (DIREITA, 90, GRAUS)
# Se o olho frontal detectar azul, vire à esquerda
se front_eye.detect (AZUL):
drivetrain.turn_for (ESQUERDA, 90, GRAUS)
# Se o olho frontal detectar vermelho, pare
se front_eye.detect (VERMELHO): drivetrain.stop
()
# Se o olho frontal não detectar nenhum, dirija para frente
se front_eye.detect (NENHUM):
drivetrain.drive (PARA FRENTE)
aguarde(5, MSEC)
- Lembre-se, a indentação é MUITO importante no VEXcode VR Python. Para que o fluxo do projeto seja executado como planeado, as instruções if necessitam de ser indentadas dentro do ciclo infinito while . Selecione as instruções if e prima 'Tab' para as recuar dentro do ciclo infinito while . Quando devidamente recuado, o seu projeto deve ter a seguinte aparência:
def main():
while True:
# Se o olho frontal detectar verde, vire à direita
se front_eye.detect (VERDE):
drivetrain.turn_for (DIREITA, 90, GRAUS)
# Se o olho frontal detectar azul, vire à esquerda
se front_eye.detect (AZUL):
drivetrain.turn_for (ESQUERDA, 90, GRAUS)
# Se o olho frontal detectar vermelho, pare
se front_eye.detect (VERMELHO): drivetrain.stop
()
# Se o olho frontal não detectar nenhum, dirija para frente
se front_eye.detect (NENHUM):
drivetrain.drive (PARA FRENTE)
aguarde(5, MSEC)
- Com o ciclo infinito while adicionado ao projeto, todas as instruções if terão as suas condições verificadas repetidamente. Abra o Disk Maze Playground e execute o projeto.
-
Quando este projeto for executado, o robô VR navegará pelo Disk Maze Playground do início ao fim. Assim que o Robô VR detetar vermelho, irá parar de conduzir.
Em resumo
- No projeto da Lição anterior, as condições dentro das instruções if foram verificadas apenas uma vez. Como as condições nas instruções if foram verificadas apenas uma vez, o VR Robot avançou para sempre porque a condição de 'sem cor' detetada foi reportada como True no início do projeto.
- Agora que o ciclo infinito while foi adicionado, cada condição das instruções if será verificada repetidamente. A condição do ciclo while é sempre True e, por isso, o código dentro do ciclo while será sempre executado. Isto verificará repetidamente as condições das instruções if enquanto o projeto estiver a ser executado.
- Durante o fluxo do projeto, se a condição das instruções if for True, serão executados os comandos dentro da instrução if . Se a condição da instrução if for Falsa, os comandos dentro da instrução if não serão executados e o fluxo do projeto continuará para o comando seguinte. Isso permite que o robô VR execute comportamentos discretos, como girar ou parar, uma vez que detecta uma determinada cor.
- If instruções são utilizadas com infinito while ciclos para garantir que as condições são constantemente verificadas.
Perguntas
Selecione uma ligação abaixo para aceder ao questionário da aula.
Google Doc / .docx / .pdf