Skip to main content

Lição 4: Fluxo do Projeto com Loops Aninhados

Recolha os próximos dois discos

  • Agora que o Robô VR está voltado para os discos vermelhos, o Robô VR precisará repetir os mesmos comportamentos que foram usados para coletar o disco azul, a fim de pegar e mover o disco vermelho. Os comportamentos de avançar para pegar o disco, virar e voltar para o mesmo objetivo colorido de soltar o disco.

    Vista de cima para baixo do Disk Mover Playground com setas pontilhadas indicando o caminho do Robô VR da meta vermelha para coletar o disco vermelho e soltá-lo na meta, apontando para a direita para mover para a meta verde.
  • Uma vez que o primeiro disco vermelho é movido, o Robô VR precisará então dirigir para a meta verde e executar as mesmas ações que foram usadas para mover o disco azul e vermelho, para mover o primeiro disco verde.

    Vista de cima para baixo do Disk Mover Playground no início, com setas pontilhadas indicando o caminho que o robô precisa percorrer para coletar cada Disco. As setas apontam para e de cada meta para o primeiro disco, e setas adicionais para a direita apontam entre cada uma das áreas de meta.
  • Para repetir comportamentos várias vezes, pode ser utilizado um ciclo para.
    VEXcode VR Python para comando loop dentro da definição principal. O comando lê o valor no intervalo com 10 entre parênteses dois pontos na primeira linha e, em seguida, recua sob um comando wait lê wait com 5, MS entre parênteses.
  • Adicione um ciclo for ao topo do projeto, acima do primeiro comentário, e defina o parâmetro da função intervalo para '3'. Certifique-se de que o ciclo for está indentado na definição principal.

    def main():
        for repeat_count in range(3):
            wait(5, MSEC)
  • Para copiar o código para o loop for, será necessário prestar muita atenção ao recuo. Primeiro, adicione espaço antes do comando wait , para que o ciclo fique assim:

    def main():
        for repeat_count in range(3):
    
    
            
            wait(5, MSEC)
  • De seguida, seleccione os comandos a colocar no ciclo for e copie e cole-os por cima do comando wait . Observe que o recuo estará incorreto após simplesmente copiar e colar. A linha indicadora cinzenta do ciclo for está quebrada e desligada do comando wait . Esta é uma sugestão visual de que o seu projeto não será executado como pretendido.O projeto de cima, cópia colada no loop for, com indentação incorreta. O recuo correto é mostrado no próximo bloco de código.
  • Selecione os comandos dentro do ciclo for e utilize o 'Tab' para recuar corretamente os comandos dentro do ciclo. Quando corretamente recuada, a linha indicadora cinzenta deve ligar o ciclo for com o comando wait  para mostrar os limites do ciclo externo. Quando concluído, o seu projeto deve ter a seguinte aparência: 

    def main():
        for repeat_count in range(3):
            # 1. Dirija para o disco usando o Down Eye Sensor
            enquanto não estiver down_eye.near_object (
                ): drivetrain.drive (FORWARD)
                wait(5, MSEC
            )          drivetrain.stop()
    
            # 2. Pegue o disco
            magnet.energize(BOOST)
    
            # 3. Dirija para a meta usando o sensor
            de distância drivetrain.turn_to_heading (180, GRAUS)
            enquanto front_distance.get_distance (MM) > 200
                :drivetrain.drive (FORWARD)
                wait(5, MSEC)
            drivetrain. stop()
    
            # 4. Drop disk in goal
            magnet.energize(DROP)
            drivetrain.drive_for(REVERSE, 100, MM)
    
            # 5. Vire e dirija para a próxima meta
            drivetrain.turn_to_heading(90, GRAUS)
            drivetrain.drive_for(PARA FRENTE, 800, MM)
    
            # 6. Gire para discos
            drivetrain.turn_to_heading(0, GRAUS)  
    
        aguarde(5, MS)
  • Assista ao vídeo abaixo para ver como mover os comandos e ajustar a indentação conforme descrito acima. No videoclipe, as seis seções de comentários do projeto são destacadas e o Menu de Contexto é aberto. A opção ‘Cut’ é selecionada e, em seguida, o cursor é colocado abaixo do comando for loop. O Menu de Contexto é aberto novamente e a opção "Colar" é selecionada. Os comandos estão então dentro do ciclo for , mas mal recuados. As seis seções de comentários são destacadas novamente e ‘Tab’ no teclado é pressionado para recuar corretamente o projeto dentro do loop.
Ficheiro de vídeo
  • Abra o Disk Mover Playground, se ainda não estiver aberto, e execute o projeto.
  • Quando este projeto é executado, o Robô VR pega e solta um disco de cada cor no seu objetivo colorido correspondente.

    Uma vista de cima para baixo do Robô VR no final do projeto, com um de cada disco de cores na meta correspondente, e o Robô VR voltado para a parede lateral direita na borda da meta verde no canto inferior direito.

Para sua informação

Observe que o robô VR continuou a bater na parede. Este comportamento é esperado, uma vez que o projeto instruiu o Robô VR a virar à direita e dirigir em direção ao próximo objetivo, três vezes. A primeira vez é de azul para vermelho. A segunda é do vermelho para o verde, e a terceira é do verde para a parede, já que não há outra meta colorida. Interrompa o projeto assim que o robô de RV bater na parede. O projeto poderia ser melhorado para que o Robô VR pare depois de pegar e mover o disco verde, mas isso aumentaria a complexidade geral do projeto.

Uma visão de cima para baixo do Robô VR no final do projeto, com o botão Stop na janela Playground destacado no canto esquerdo. No Playground, um de cada disco de cores no gol correspondente e o Robô VR voltado para a parede lateral direita no centro do gol verde, quando o botão parar foi pressionado.

 

 

Perguntas

Selecione uma ligação abaixo para aceder ao questionário da aula.

Google Doc / .docx / .pdf