Caixa de Ferramentas do Professor
-
O Propósito desta Atividade
Esta atividade apresentará aos alunos o uso de instruções while e if para que o robô avance, a menos que a tela seja pressionada.
- Esta atividade apresentará aos alunos as condicionais e as instruções que fazem o robô avançar, a menos que a tela seja pressionada.
- Para obter mais informações sobre declarações if e if-else ou outras usadas nesta atividade, visite as informações de ajuda no VEXcode V5. Para obter mais informações sobre essa ferramenta de ajuda integrada, confira o artigo sobre ajuda em Python.
Caixa de Ferramentas do Professor
Para sugestões sobre estratégias de ensino para esta seção, consulte a coluna Entrega do Guia Para Fazer ou Não Fazer! (Google Doc / .docx / .pdf)
O Clawbot está pronto para tomar decisões!
Esta exploração lhe dará as ferramentas para poder começar a criar alguns projetos interessantes que usam instrução if-else.s
- Comandos VEXcode V5 Python que serão usados nesta exploração:
- drivetrain.drive_for(PARA FRENTE)
- brain.screen.pressing()
- drivetrain.stop()
- se condição:
- else:
- while True:
- aguarde(5, SEGUNDOS)
Você pode usar as informações de Ajuda dentro do VEXcode V5 para aprender sobre os comandos do Python.

Certifique-se de ter o hardware necessário, seu notebook de engenharia e o VEXcode V5 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 |
Modelo de Clawbot (Drivetrain 2-motor, sem giroscópio) |
Dicas para Professores
Se esta for a primeira vez que o aluno usa o VEXcode V5, ele pode consultar os Tutoriais a qualquer momento durante esta exploração. Os Tutoriais estão localizados na barra de ferramentas.

Passo 1: Vamos começar com uma compreensão das declarações condicionais
Antes de começar a programar com condicionais, leia o artigo que explica as instruções if-else. O artigo pode ser encontrado aqui (Google Doc / .docx / .pdf).
Para obter uma lista de operadores a serem usados nas instruções if-else, leia o artigo que explica os booleanos. Este artigo pode ser encontrado aqui (Google Doc/.docx/.pdf).
Passo 2: Vamos começar a programar com instruções condicionais.
-
Abra o projeto de exemplo de modelo Clawbot (Drivetrain 2-motor, No Gyro).

- Construa o projeto abaixo.
# Comece o código do projeto
enquanto
True: drivetrain.drive (FORWARD)
ifbrain.screen.pressing ()
:drivetrain.stop ()
whilebrain.screen.pressing ():
wait(5, MSEC)
wait(5, MSEC)Faça o seguinte no seu caderno de engenharia:
- Explique o que o Clawbot faz no projeto. Terá de explicar mais do que o facto de criar um botão de paragem. Explique quais instruções fazem o Clawbot fazer o quê.
- Escreva um resumo de uma frase que capte o que o projeto faz.
- Teste para ver se a sua previsão do que o Clawbot faz no projeto está correta.
- Nomeie o projeto CreatingAStopButton. Baixe e execute o projeto no Clawbot.
- Verifique as suas explicações sobre o projeto e adicione notas para corrigi-las conforme necessário.
Caixa de Ferramentas do Professor
-
Respostas
Este projeto faz com que o robô avance continuamente, mas pare se a tela for pressionada. Ele faz isso usando uma instrução "para sempre" (enquanto True) para conduzir e verificar continuamente. Se a tela estiver sendo pressionada (Verdadeiro), o Clawbot para de dirigir.
Não se espera que os alunos entendam por que os comandos while brain.screen.pressing (): e wait(5, MSEC) são usados. Explique que esses comandos são necessários devido à velocidade do fluxo do programa do robô. Se não estivesse lá, os motores do Clawbot se comportariam como se o usuário estivesse pressionando a tela repetidamente enquanto percorria o projeto. Em vez disso, estas instruções interrompem o fluxo do programa e não permitem que o projeto inicie o ciclo novamente até que o utilizador pare de pressionar o ecrã.
A linha do pseudocódigo pode ser tão simples quanto: Dirija para a frente até que a tela seja pressionada.
Os cadernos de engenharia dos alunos podem ser mantidos e pontuados individualmente (Google Doc / .docx / .pdf) ou em equipe (Google Doc / .docx / .pdf). 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.
Etapa 3: Entenda as declarações while e wait().
Observe que se a tela do Cérebro for pressionada, o fluxo do projeto se move rapidamente e o projeto passará para a próxima instrução, que é o comandodrivetrain.stop ().
Assim, o projeto precisa dos comandos while e wait que dizem ao robô para permanecer parado até que a tela do Cérebro seja liberada. Caso contrário, a instrução forever faria com que o projeto começasse novamente.
while brain.screen.pressing():
espera(5, MSEG)Os comandos while e wait são necessários devido à velocidade do fluxo do projeto. Se eles não estivessem lá, o projeto passaria para a próxima instrução antes que o robô tivesse tempo de responder.
Passo 4: Alterar o projeto.
Nosso próximo passo é alterar a instrução if para uma instrução if-else.
- Comece salvando CreatingAStopButton como o novo projeto, StopOrDrive.
- Se precisar de ajuda para salvar um projeto, veja estes artigos.
- Em seguida, crie o projeto StopOrDrive mostrado abaixo.
# Comece o código do projeto
enquanto True:
if brain.screen.pressing ()
:drivetrain.stop ()
whilebrain.screen.pressing ():
wait(5, MSEC)
else:
drivetrain.drive(FORWARD)
wait(5, MSEC)- Baixe StopOrDrive para o Slot 2 no seu Clawbot.
- Para obter ajuda para baixar e executar um projeto, consulte este artigo.
- Teste CreatingAStopButton (Slot 1) e, em seguida, teste StopOrDrive (Slot 2) e compare-os para ver se há alguma diferença no comportamento do robô. Anote quaisquer diferenças no seu bloco de anotações de engenharia
Caixa de Ferramentas do Professor
-
Resposta
Em relação ao comportamento do robô, não deve haver diferença entre os projetos CreatingAStopButton e StopOrDrive.
Se os alunos precisarem de mais ajuda para entender as declarações if-else, consulte este artigo (Google Doc / .docx / .pdf).
Os dois projetos fazem com que o Clawbot se comporte da mesma maneira. A única diferença é o uso da instrução if-else no projeto StopOrDrive.
Usar a instrução if-else permitirá que você adicione botões adicionais à tela nas próximas atividades.
Estenda a sua aprendizagem
À medida que este Laboratório STEM avança, os alunos desenvolverão projetos que permitam que o ecrã do Clawbot funcione como uma interface de utilizador. Em preparação para isso, desafie os alunos a descobrir como desenhar um retângulo colorido na tela que funcione como um botão. Como pressionar em qualquer lugar da tela é atualmente a condição, o botão deve ocupar toda a tela. Os alunos devem fazer com que o projeto transmita um evento para desenhar o botão quando iniciado.
Oriente os alunos a aprender primeiro como a tela do cérebro é organizada em um sistema de coordenadas. Eles precisarão entender isso para definir parâmetros dentro dos comandos que usarão. As coordenadas usadas correspondem ao número de pixels e não ao número da coluna ou linha. Aqui está o layout da tela:
Os alunos devem planejar, testar e refinar essas alterações no projeto enquanto o documentam em seus cadernos de engenharia. Para a rubrica de bloco de anotações de engenharia individual, clique em um dos seguintes links (Google Doc / .docx / .pdf) ou clique em um dos seguintes links para blocos de anotações de equipe (Google Doc / .docx / .pdf).
Aqui está um exemplo de solução:
# Begin project code
draw = Event()
def draw_button():
brain.screen.set_fill_color (Color.RED)
brain.screen.draw_rectangle (0, 0, 480, 240)
wait(1, SECONDS)
draw(draw_button)
while True:
draw.broadcast ()
drivetrain.drive (FORWARD)
if brain.screen.pressing ():
drivetrain.stop ()
while brain.screen.pressing ():
wait(5, MSEC)
else:
drivetrain.drive (FORWARD)
wait(5, MSEC)Como você pode ver, o botão é desenhado para ocupar toda a tela, começando na origem (0, 0) e preenchendo todos os 480 pixels horizontais (eixo x) e 240 pixels verticais (eixo y).
