top of page

SP-110

SPIKE Prime

Image-empty-state.png

30-45 min

Item 1

Intermediário

Jogo de adivinhação

Observe que esta lição é baseada no código Python usado no aplicativo LEGO ® Education SPIKE ™ Legacy.
Investigue usando instruções condicionais com loops.

Aula criada por:

LEGO® Education

Suporte ao Professor

Objetivos da Aula

Os alunos irão:
• Escrever código que usa várias declarações de condição usando programação if/elif/else.
• Adicionar um loop ao código.
• Depurar codificação com sintaxe incorreta/ausente, código ausente ou recuo incorreto.

Preparar

• Certifique-se de que os hubs SPIKE Prime estejam carregados, especialmente se estiverem conectados por Bluetooth.
• Certifique-se de que os alunos construíram o Kiki, o modelo do Cachorro, que foi usado na lição Adivinhe Qual Cor.

Material do Aluno

------------

Image-empty-state.png

Envolver

( Discussão em grupo, 5 minutos )

Envolva os alunos na escolha de várias opções.

Peça aos alunos que façam um brainstorming sobre como eles fazem uma escolha quando são apresentados a várias opções. Peça aos alunos que imaginem que estão em um buffet de café da manhã com todas as opções de café da manhã que puderem imaginar. Como eles decidem quais coisas comer? Peça aos alunos que selecionem três itens que escolheriam para comer.

Deixe os alunos compartilharem suas escolhas. Que influências ajudam a fazer suas escolhas (humor, tempo, favoritos, etc.)? Discuta como fazer um prato de comida no bufê é semelhante a criar um código que permite escolher alguns itens (adicionar ao prato) sem escolher outros (pulá-los da fila).

 

Perguntas para investigar

• Por que um programador combinaria uma instrução condicional if/elif/else com um loop?

--

Image-empty-state.png

Explorar

( Pequenos Grupos, 20 minutos )

Os alunos explorarão a programação do modelo Kiki para reagir às cores de acordo com as condições definidas em um loop.

Oriente os alunos a abrirem o programa salvo para a lição Adivinhe qual cor. Os alunos devem conectar seu hub. Considere fazer com que os alunos executem o programa uma vez para lembrar como ele funciona.

Usando um loop com uma instrução if/elif/else
Peça aos alunos que pensem em como eles poderiam modificar o programa usado na lição Adivinhe qual cor para repetir a condição que permite ao programa identificar mais de uma cor. Os alunos devem reconhecer que um loop while permitirá que o sensor de cor continue a reagir à cor lida de acordo com as condições definidas.

Peça aos alunos que atualizem o fluxograma da lição Adivinha qual cor ou criem um novo fluxograma para mostrar como o programa deve funcionar.

Dê aos alunos tempo para modificar seu programa e experimentá-lo. Lembre os alunos de observar o console em busca de mensagens de erro. Sugira aos alunos que salvem isso como um novo programa para não perder o programa original.

Exemplo de programa:

 

 

from spike import PrimeHub, App, ColorSensor

hub = PrimeHub()
app = App()
color_sensor = ColorSensor('B')

\#While the condition continues to be true, repeat the if/elif/else statement.
while True:
color=color_sensor.wait_for_new_color()

\#if the color is blue, play bird sound and write "detected blue" in the console.
if color == 'blue':
app.play_sound('Bird')
print('Detected', color)

\#if the color is green, play angry cat sound and write "detected green" in the console.
elif color == 'green':
app.play_sound('CatAngry')
print('Detected', color)

\#if the condition is not met, play wobble sound and write “wrong color detected” in the console.
else:
app.play_sound('Wobble')
print('Wrong Color Detected')

 

Revise o programa com os alunos. Discuta o que mudou como resultado de ter um loop no programa. Os alunos devem ver que o loop permite que o programa continue rodando depois que a primeira cor for detectada, o que significa que o programa continuará a reagir quando uma nova cor for apresentada.

Faça um jogo de adivinhação
Peça aos alunos que removam as outras duas cores de peças 2x4 de seu conjunto. Peça aos alunos que reorganizem seu modelo para permitir que todas as cinco cores se encaixem. Os alunos devem refazer seu programa para incluir uma nova condição para a leitura de cada cor. Informe aos alunos que mais de uma instrução elif pode ser incluída. Trabalhando juntos, peça aos alunos que programem cada tijolo para fazer um som diferente.

Exemplo de programa:

 

from spike import PrimeHub, App, ColorSensor

hub = PrimeHub()
app = App()
color_sensor = ColorSensor('B')

\#Describe how each color makes the model react 
while True:
color=color_sensor.wait_for_new_color()
if color == 'blue':
app.play_sound('Bird')
print('Detected', color)

elif color == 'green':
app.play_sound('CatAngry')
print('Detected', color)

elif color == 'red':
app.play_sound('Snoring')
print('Detected', color)

elif color == 'violet'
app.play_sound('Moo')
print('Detected', color)

elif color == 'yellow'
app.play_sound('DogBark1')
print('Detected', color)

else:
app.play_sound('Wobble')
print('Wrong Color Detected')

 

Cada parceiro, por sua vez, será o mestre do jogo e o outro parceiro jogará o jogo de adivinhação. Sem o Parceiro 2 olhar para o modelo, o Parceiro 1 deve executar o programa permitindo que o modelo escaneie cada cor dos tijolos 2x4 escolhidos. O parceiro 1 decidirá quais cores digitalizar. O parceiro 2 pode ouvir os sons tocados para adivinhar a combinação de cores. O parceiro 2 pode anotar a ordem das cores ou usar outras peças do conjunto para indicar a ordem das cores.

Peça aos alunos que verifiquem o palpite no final do jogo e depois troquem de parceiro.

--

Image-empty-state.png

Explicar

( Grupo inteiro, 5 minutos )

Discuta com os alunos como o programa funcionou.
Faça perguntas aos alunos como:
• Como um loop e uma instrução condicional podem funcionar juntos em um programa?
• Como este programa está usando mais de uma instrução condicional?

Lembre aos alunos que o loop while também configura uma instrução condicional. Enquanto essa seção do código for verdadeira, ela continuará a se repetir.
• Quantas condições você pode definir em um programa?
• Quando o programa terminará?

--

Image-empty-state.png

Elaborar

( Pequenos Grupos, 10 minutos )

Desafie os alunos a experimentar um novo jogo em que não detectam cores, mas verificam erros.

Mostre aos alunos cada programa e mensagem de erro. Peça aos alunos que discutam o que precisa ser alterado em cada código para corrigir o bug ou adicionar o código ausente. Considere fazer as alterações como uma classe e garantir que o programa seja executado corretamente após cada alteração.

 

Atividade de depuração 1:

 

from spike import PrimeHub, App, ColorSensor

hub = PrimeHub()
app = App()
color_sensor = ColorSensor('B')

\#Describe how each color makes the model react
color=color_sensor.wait_for_new_color()

\#If the color is blue, play the bird sound and print “detected blue” in the console
if color == 'blue':
app.play_sound('Bird')
#If the color is not blue, play the dog barking sound and print “what happened?” in the console
else app.play_sound('DogBark1')

File "lib/hub/flash/programrunner/__init__.py", line 1, in start_program
File "./projects/23100.py", line 15
SyntaxError: invalid syntax

 

Os alunos devem reconhecer que o erro está na linha 15 da mensagem de erro. A sintaxe inválida significa que não formatamos algo no código corretamente. Olhando para a linha 15, os alunos devem observar que a instrução else deve ter dois pontos no final (:) com a instrução do que fazer como o else escrito na próxima linha com um recuo.

 

Atividade de depuração 2

 

from spike import Motor, PrimeHub

\# Initialize the Hub and motor
hub = PrimeHub()
motor = Motor('F')

\# This will make the hand open once to start
motor.run_for_seconds(1, 75)

while True:
hub.left_button.wait_until_pressed()
motor.set_stall_detection(False)
motor.start(-75)

hub.left_button.wait_until_released()
motor.set_stall_detection(True)
motor.start(75)

File "lib/hub/flash/programrunner/__init__.py", line 1, in start_program
File "./projects/52757.py", line 11
SyntaxError: invalid syntax

 

Os alunos devem reconhecer que o erro está na linha 11, conforme indicado na mensagem de erro. A instrução condicional criada pelo loop while não está lendo a condição porque as linhas de código para a condição não são recuadas. Para corrigir o programa, os alunos precisam recuar todas as linhas de código necessárias para o condicional (linhas 11-13).

Peça aos alunos para recuar a linha 11 e apenas a linha 11. Execute o programa novamente. Os alunos receberão uma nova mensagem de erro.

 

File "lib/hub/flash/programrunner/__init__.py", line 1, in start_program
File "./projects/4369.py", line 15
IndentationError: unexpected indent

 

Os alunos devem reconhecer que ainda há um erro no código. Ao recuar a linha 11, completamos a declaração condicional. A condição lê a linha 11 e depois termina porque a linha 12 não está recuada. No entanto, quando o programa lê a linha 15, fica confuso por que essa linha está recuada. A mensagem de erro diz “recuo inesperado” para nos dar uma dica sobre isso.

 

Atividade de código ausente

 

from spike import PrimeHub, App, ColorSensor

hub = PrimeHub()
app = App()
color_sensor = ColorSensor('B')

\#Describe how each color makes the model react 
color=color_sensor.wait_for_new_color()

if color == 'blue':
app.play_sound('Bird')

elif

 

outro:

Discuta este programa com os alunos. Pergunte aos alunos o que está faltando para tornar este programa completo. Semelhante à depuração, você pode executar o programa e receber uma mensagem de erro.

 

File "lib/hub/flash/programrunner/__init__.py", line 1, in start_program
File "./projects/23262.py", line 13
SyntaxError: invalid syntax

 

Nesse caso, o programa envia um erro para a linha 13 porque a instrução elif não está definida. Os alunos precisam adicionar algo que defina a nova condição se a condição original for lida como falsa.

Peça aos alunos que adicionem um trecho de código à instrução elif e tentem o programa novamente. Os alunos podem ter indicado a necessidade de adicionar à instrução else também. Se os alunos executarem o novo programa, eles verão uma nova mensagem de erro para adicionar uma linha de código à instrução else também. Diga aos alunos que esta mensagem de erro não apareceu antes porque o programa lerá a primeira mensagem de erro e depois parará. Isso significa que as mensagens adicionais não são chamadas inicialmente.

--

Avaliar

( Exercício em grupo, 5 minutos )

Observação do Professor:
Discuta o programa com os alunos.
Faça perguntas aos alunos como:
• Como um loop e uma instrução condicional podem funcionar juntos em um programa?
• Que ações você deve tomar ao receber uma mensagem de erro?
• Quantas declarações elif você pode incluir em um programa?

Autoavaliação:
Peça aos alunos que respondam o seguinte em seus diários:
• O que você aprendeu hoje sobre como adicionar várias condições em um programa?
• Que características de um bom companheiro de equipe eu demonstrei hoje?
• Peça aos alunos para avaliarem a si mesmos em uma escala de 1 a 3, em sua gestão de tempo hoje.
• Peça ao aluno para avaliar a si mesmo em uma escala de 1 a 3, em seu gerenciamento de materiais (peças) hoje.

--

Dicas para o professor

Diferenciar

Nós seguimos uma rígida Política de Privacidade e Cookies, clique aqui para conhecer. Você pode retirar seus dados, clique aqui.

© Positivo Tecnologia S.A., Distribuidora Nacional LEGO® Education. Todos os direitos reservados. Fotos meramente ilustrativas.

LEGO and the LEGO logo are trademarks of the LEGO Group. ©2021 The LEGO Group. Used with permission.

Fale conosco

WhatsApp | atendimento@educacional.com.br | Telefone: 41 3405-4551

bottom of page