Lição 4: Usando Loops Aninhados
Na lição anterior, você criou um projeto para instruir o robô de RV a dirigir, pegar e mover todos os três discos azuis no Disk Mover Playground para a meta azul. Nesta lição, você criará um projeto para pegar e mover um disco de cada cor para a meta colorida correspondente no playground do Disk Mover usando loops aninhados!

Resultados de Aprendizagem
- Identifique como aninhar loops.
- Descrever o fluxo de um projeto através de loops aninhados.
- Explique por que os loops aninhados seriam usados num projeto.
O que são Loops Aninhados?
Nas Unidades e Lições anteriores deste curso, você usou loops da categoria Control, como for loop, while loop e infinite while loops para repetir comportamentos. Colocar um loop dentro de outro loop é chamado de 'aninhamento'. Os loops aninhados são úteis em projetos em que um Robô de RV repete os mesmos comportamentos mais de uma vez, como mover vários discos no Playground. Os loops de aninhamento podem organizar e condensar um projeto, para torná-lo mais facilmente compreendido. Isso pode ser útil para entender melhor o contexto e a finalidade do código, além de facilitar a identificação de erros e a solução de problemas de um projeto.
Por exemplo, para mover todos os três discos azuis para a meta azul, pode ser utilizado um loop para para repetir o processo de recolha de um disco várias vezes. O projeto aqui mostrado coloca o projeto da Lição 3 para mover o primeiro disco azul para a meta azul dentro de um loop for , com o parâmetro definido como 3. Note como as quatro secções do projeto anterior estão recuadas no ciclo for.
def main():
for repeat_count in range(3):
#1. Dirija para o primeiro disco
enquanto não estiverdown_eye.near_object ()
:drivetrain.drive (FORWARD)
wait(5, MSEC)
drivetrain.stop()
# 2. Pegue o disco magnet.energize
(BOOST)
# 3. Dirija para a meta
drivetrain.turn_to_heading(180, GRAUS)
enquanto front_distance.get_distance(MM) > 200:
drivetrain.drive(FORWARD)
wait(5, MSEC)
drivetrain.stop()
# 4. Solte o disco na meta magnet.energize
(DROP) drivetrain.drive_for
(REVERSE, 100, MM)
drivetrain.turn_to_heading(0, DEGREES)
wait(5, MSEC)Quando ‘aninha’ ciclos, o ciclo externo controla o número de vezes que o ciclo interno é executado. Neste projeto, o ciclo para é o ciclo externo e irá repetir os comportamentos no ciclo três vezes.
Os loops internos são aqueles loops contidos dentro do loop externo. Neste exemplo, cada um dos ciclos while (para conduzir para o disco e para o objetivo) são ‘loops internos’ que são executados cada vez que o projeto passa pelo ciclo for .
Para sua informação
A indentação é importante em projetos VEXcode VR Python. Você pode usar as linhas indicadoras cinza no espaço de trabalho como uma ajuda visual ao aninhar loops, para garantir que o seu projeto funcione como pretendido. Cada linha indica o início e o fim de um ciclo.

Fluxo de um projeto de loop aninhado
Neste exemplo, cada vez que o loop for itera, um disco azul é apanhado e regressa ao objetivo azul.
Após a primeira iteração, o primeiro disco azul é retornado à meta azul e o Robô VR é girado para estar pronto para coletar o segundo disco.
Após a segunda iteração, o segundo disco azul é coletado e o Robô VR é girado para estar pronto para coletar o terceiro disco.
Após a terceira iteração, o terceiro disco azul é coletado e o Robô VR para de se mover. O loop para já completou o seu alcance, pelo que o projeto está concluído.

Selecione o botão Seguinte para continuar com o resto desta lição.