Skip to main content

Ícone da Caixa de Ferramentas do Professor Caixa de Ferramentas do Professor - Esboço da Atividade

  • Esta exploração apresentará aos alunos a programação de comportamentos repetitivos usando loops de repetição ou para sempre.

  • Aprender a programar usando loops de repetição e para sempre permite que os alunos economizem tempo ao construir um projeto que usa as mesmas ações repetidas. Para obter mais informações sobre as instruções usadas em um projeto de texto, visite as informações de ajuda.

O Clawbot V5 está pronto para avançar!

Esta exploração lhe dará as ferramentas para poder começar a criar alguns projetos interessantes que usam loops.

  • Instruções do VEXcode V5 que serão usadas nesta exploração:

    • Drivetrain.driveFor(para frente, 300, mm);

    • Drivetrain.turnFor(direita, 90, graus);

    • ClawMotor.spinFor(reverso, 70, graus);

    • ArmMotor.spinFor(para frente, 360, graus);

    • while (true) {}

    • repetir (4) {}

    • aguarde(5, segundos);

Para aceder a informações adicionais, clique com o botão direito do rato num nome de comando no seu espaço de trabalho para ver a ajuda desse comando.

Ícone Dicas para Professores Dicas para Professores - Usando o Preenchimento Automático

O preenchimento automático é um recurso do VEXcode V5 que prevê o restante do comando que você está digitando. Como os alunos estão trabalhando no VEXcode V5, incentive-os a usar o recurso de preenchimento automático para ajudar com a sintaxe.

O artigo Preenchimento automático - Tutoriais aborda como usar o recurso Preenchimento automático. Para obter mais informações, explore os vídeos tutoriais no VEXcode V5.

Seleccione o tutorial de Preenchimento Automático.

 

Certifique-se de ter o hardware necessário, seu notebook de engenharia e o VEXcode V5 baixados e prontos.

Materiais Necessários:
Quantidade Materiais necessários
1

VEX V5 Classroom Starter Kit (com firmware atualizado)

1

VEXcode V5 (versão mais recente, Windows, macOS)

1

Caderno de Engenharia

1

Projeto de exemplo de modelo Clawbot (Drivetrain 2-motor, sem giroscópio)

Etapa 1:  Vamos começar a programar com loops

  • Antes de iniciar o seu projeto, selecione o modelo de projeto correto. O projeto de exemplo Clawbot Template (Drivetrain 2-motor, No Gyro) contém a configuração do motor do Clawbot. Se o modelo não for usado, o seu robô não executará o projeto corretamente.

    Imagem que mostra o menu Arquivo aberto no VEXcode V5 mostrando a opção Abrir Exemplos

     

  • Seleccione Ficheiro e Abra Exemplos.
  • Percorra os diferentes projetos de exemplo. Estes projetos demonstram uma variedade de ações que o seu Clawbot pode realizar. Selecione e abra o projeto de exemplo Clawbot Template (Drivetrain 2-motor, No Gyro).

     

  • Nomeie o projeto RepeatingActions.

    Imagem que mostra o nome do projeto Repeating Actions no VEXcode V5

  • Digite o seguinte código:

    int main() {
      // Inicialização da Configuração do Robô. NÃO REMOVA!
      vexcodeInit();
    
      // Drives forward and turns 90 degrees for 4 iterations 
      repeat(4){
        Drivetrain.driveFor(forward, 300, mm);
        Drivetrain.turnFor(right, 90, degrees);
        wait(5, seconds);
    
      }
    }

Examine o projeto e, em seguida, faça o seguinte no seu caderno de engenharia.

  1. Preveja o que o Clawbot fará no projeto. Explique mais do que o facto de o projeto se repetir.

    O que ele está repetindo? O que o Clawbot está fazendo?

  2. Escreva a sua previsão, mas não divida o projeto curto em mais de duas partes.

Ícone da Caixa de Ferramentas do Professor Caixa de Ferramentas do Professor - Respostas

  1. Este projeto terá o robô: avançar 300 milímetros , virar à direita 90 graus e esperar 5 segundos 4 vezes para completar um quadrado. Em vez de usar as mesmas 3 instruções 4 vezes, a instrução de repetição reduz a quantidade para apenas 1 vez. A instrução de repetição repete as ações de avançar e depois virar.

  2. A previsão pode ser simplesmente "O Clawbot se move num quadrado". Esta seria uma maneira sucinta de capturar os movimentos repetidos do Clawbot sem qualquer contexto.

Os cadernos de engenharia dos alunos podem ser mantidos e pontuados individualmente ou em equipe. Os links anteriores fornecem uma rubrica diferente para cada abordagem. Sempre que uma rubrica for incluída no planejamento educacional, é uma boa prática explicar a rubrica ou pelo menos dar cópias aos alunos antes do início da atividade.

  • Salve, baixe e execute o projeto Repeating Actions.

    Imagem do nome do projeto de Ações Repetidas na Barra de Ferramentas no VEXcode V5

  • Verifique as suas explicações do projeto no seu caderno de engenharia e adicione notas para corrigi-las conforme necessário.

Passo 2: Executar o projeto e observar o robô

Uma comparação de dois trechos de código C++ no VEXcode. O snippet esquerdo usa a entrada do sensor para determinar quando girar, com um loop while que verifica se o interruptor do para-choque está pressionado; se pressionado, o robô gira para a direita 90 graus, caso contrário, ele avança. O snippet direito usa uma distância fixa para determinar quando girar, com um loop de repetição que impulsiona o robô para frente por 300 mm, vira à direita por 90 graus e espera por 5 segundos, repetindo essa sequência quatro vezes

Veja o projeto Repeating Actions (à direita) novamente. Este projeto repetirá o comportamento para a frente e, em seguida, girará quatro vezes. Uma estrutura de loop "repetir" é usada quando você deseja usar um conjunto de comportamentos um determinado número de vezes.

Se a estrutura de repetição for substituída por uma estrutura de loop "enquanto", o robô repetirá os comportamentos de avanço e, em seguida, girará "enquanto" a condição for verdadeira. Você também pode definir a condição como "true" para que o loop "while" continue para sempre.

No projeto à esquerda, a entrada de um sensor é usada para determinar quando começar a girar. O projeto à direita usa uma distância de transmissão fixa para determinar quando começar a girar.

Para verificar continuamente a entrada de um sensor, uma instrução "if/else" é usada em conjunto com um loop "while". No projeto à esquerda, o robô girará para a direita quando o sensor "BumperB" for pressionado, caso contrário, o robô avançará para sempre se o sensor "BumperB" não for pressionado. Para verificar continuamente o valor do sensor BumperB, a instrução "if" está dentro de um loop "while true".

O projeto acima à esquerda é um caso de uso prático de uma estrutura que se repete para sempre - usando loops while e  if juntos. Imagine uma vassoura autónoma que continua a avançar até colidir com uma parede ou objeto e, em seguida, vira antes de continuar a conduzir.

Ícone Estenda a sua aprendizagem Estenda a sua aprendizagem

Para explorar ainda mais como usar loops com condicionais, peça aos alunos que construam um projeto de Varredor de Piso no VEXcode V5.

  • Comece fazendo com que os alunos montem e liguem os interruptores do para-choque.
  • Peça aos alunos que abram o projeto de exemplo Clawbot Template (Drivetrain 2-motor, No Gyro).

     

  • Peça aos alunos que nomeiem o projeto como Varredor de Piso.

  • Peça aos alunos que construam o seguinte projeto.

    // Include the V5 Library
    #include "vex.h"
      
    // Permite o uso mais fácil da Biblioteca VEX
    usando o namespace Vex;
    
    // A função pickRandom retorna um número inteiro aleatório entre os valores min e
    // max passados como parâmetros.
    int pickRandom(int min, int max) {
      return min + rand() / (RAND_MAX / (max - min + 1));
    }
    
    int main() {
      // Inicializando Configuração do Robô. NÃO REMOVA!
      vexcodeInit();
    
      //Inicialize o gerador de números aleatórios.
      srand(randomSeed);
    
      while (true) {
        while (!BumperB.pressing()) {
          Drivetrain.drive(forward);
          wait(5, msec);
        }
        Drivetrain.stop();
        Drivetrain.turnFor((90 + pickRandom(0, 90)), degrees);
        wait(5, msec);
      }
    }

Se os alunos precisarem de ajuda com alguma das instruções, encaminhe-os para as informações de Ajuda.

Peça aos alunos que 
baixem e executem o projeto para observar como o robô se move. Em seguida, inicie uma discussão em sala de aula e peça aos alunos que expliquem por que a estrutura para sempre foi usada em vez de uma estrutura de repetição.

Os alunos devem observar que uma estrutura para sempre é usada porque este projeto verifica continuamente se o interruptor do para-choque está sendo pressionado.

Passo 3: O Desafio dos Loops Quadrados!

Um diagrama que mostra um caminho quadrado verde com setas indicando a direção do movimento em torno do quadrado. Setas laranja adicionais fora do ponto quadrado em diferentes direções, correspondendo às voltas e movimentos necessários para seguir o caminho

  • Peça ao seu Clawbot para conduzir num quadrado.
  • Antes de cada turno, a garra deve ser aberta e fechada, e o braço deve ser levantado e abaixado.
  • O Clawbot não pode dirigir ao longo de um lado da praça mais de uma vez.
  • Você pode usar o projeto RepeatingActions de cima como ponto de partida, mas salvá-lo como SquaredLoops  antes de fazer qualquer alteração.

Imagem do nome do projeto Squared Loops na barra de ferramentas VEXcode V5

No seu caderno de engenharia, planeie o seguinte:

  • Planeie a sua solução e preveja o que cada instrução no seu projeto fará com o Clawbot.
  • Baixe e execute o seu projeto para testá-lo antes de enviá-lo.
  • Faça alterações no projeto conforme necessário e anote o que foi alterado durante o teste.

Ícone da Caixa de Ferramentas do Professor Caixa de Ferramentas do Professor - Solução

A seguir, uma possível solução para o Desafio dos Ciclos Quadrados:

int main() {
  // Inicialização da Configuração do Robô. NÃO REMOVA!
  vexcodeInit();

  repeat(4){
    Drivetrain.driveFor (forward, 300, mm);
    ClawMotor.spinFor (reverse, 70, degrees);
    ArmMotor.spinFor (forward, 360, degrees);
    ClawMotor.spinFor (forward, 70, degrees);
    ArmMotor.spinFor (reverse, 360, degrees);
    Drivetrain.turnFor (right, 90, degrees);
    wait(5, msec);
  }
}

Pode fornecer aos alunos uma rubrica de programação para pontuar os seus projetos. Os cadernos de engenharia dos
alunos podem ser mantidos e pontuados individualmente ou em equipe.