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.
Dicas para Professores
Se esta é a primeira vez que o aluno usa o VEXcode V5, ele pode ler uma variedade de artigos na Biblioteca VEX.
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.
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.
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.
- 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.
-
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.
-
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?
- Escreva a sua previsão, mas não divida o projeto curto em mais de duas partes.
Caixa de Ferramentas do Professor
-
Respostas
-
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.
-
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.
- 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ô
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.
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!
- 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.
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.
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.