Lição 2: Se Outras Declarações
Nesta lição, você criará um projeto em que o robô de RV derruba pelo menos dois castelos no Dynamic Castle Crasher Playground. Um algoritmo será necessário para resolver o desafio usando loops e feedback do sensor porque o layout do Playground muda a cada reinicialização.
Exemplos de layouts dinâmicos do Castle Crasher Playground:

Resultados de Aprendizagem
- Identifique que uma instrução if else executa os comandos dentro do ramo 'if' ou 'else' com base no valor booleano reportado.
- Identifique que uma instrução if else é normalmente utilizada com um para ciclo ou um infinito while ciclo para verificar a condição mais do que uma vez.
- Identifique e descreva por que razão uma instrução if else é utilizada com ciclos.
- Descreva o que faria com que uma ramificação 'if' ou uma ramificação 'else' fosse executada num projeto com uma instrução if else .
Por que usar uma instrução If Else?
O desafio Dynamic Castle Crasher é diferente do desafio Castle Crasher da Unidade 2. O desafio da Unidade 2 usou sequenciamento simples e comandos Drivetrain para derrubar os castelos em um playground estático.
def main():
drivetrain.set_drive_velocity(100, POR CENTO
) drivetrain.set_turn_velocity(100, POR CENTO
) drivetrain.drive_for (FORWARD, 1550, MM
) drivetrain.turn_for (RIGHT, 180, DEGREES
) drivetrain.drive_for (FORWARD, 700, MM)
drivetrain.turn_for(RIGHT, 90, DEGREES)No entanto, devido à mudança de layouts do Parque Infantil Dynamic Castle Crasher, os comandos Drivetrain por si só não serão suficientes para que o Robô de RV derrube dois ou mais castelos. Um conjunto de comandos Drivetrain pode funcionar em um Playground, mas não em outro. Será necessário um algoritmo que use sensores e seleção em iterações. A instrução if else será utilizada para criar um algoritmo adicionando seleção com instruções condicionais a este projeto.

A Declaração If Else
A instrução if else é uma instrução que aceita condições booleanas. A instrução if else é uma declaração condicional de que controla o fluxo de um projeto. A instrução if else executará uma sequência específica de comandos se a condição for satisfeita, else (quando a condição for e não satisfeita) outro conjunto de comandos for executado – 'ramificando' assim o fluxo do projeto. Apenas uma ramificação no if else será executada de cada vez.
if condition:
pass
else:
pass- Se a condição for relatada como True, os comandos dentro da ramificação 'if' serão executados.
- Se a condição for relatada como False, os comandos dentro da ramificação 'else' serão executados.
- Depois de todos os comandos dentro de uma das ramificações terem sido executados, o projeto passará para o próximo comando fora da instrução if else .
Provavelmente utiliza a lógica if else com frequência nas suas ações quotidianas. Por exemplo, ao decidir o que precisa de levar quando sair de casa com base no tempo lá fora, pode utilizar a lógica if else . Se estiver a chover, leve guarda-chuva; outros levam óculos escuros.
A ramificação 'Se' -
- Neste cenário, a condição de 'chover' é cumprida, pelo que o ramo 'if' seria executado e pegaria num guarda-chuva.

A filial 'Else' -
- Nesse cenário, a condição de 'chover' não é atendida, então o ramo 'senão' seria executado, e você levaria óculos escuros.

A instrução If Else e o problema Dynamic Castle Crasher
Existem duas etapas principais para o robô de RV derrubar com sucesso os castelos no Dynamic Castle Crasher Playground. Essencialmente, o Robô de RV deve ser capaz de localizar e detectar castelos no playground e, em seguida, dirigir para derrubá-los. Em termos de uma instrução if else , esta poderia ser enquadrada como:
- Se o Robô de RV detectar um castelo, avance em direção a ele para derrubá-lo.

- Caso contrário, (quando o Robô de RV não detectar um castelo), vire e verifique se há um castelo em outro local no Playground.

O Sensor de Distância no Robô VR pode ser usado para detectar castelos neste Playground. Ao contrário de todos os outros Playgrounds, o Dynamic Castle Crasher Playground não tem paredes. Como os castelos são os únicos objetos no Dynamic Castle Crasher Playground, quando o Sensor de Distância detecta um objeto, esse objeto será um castelo. O Robô de RV precisará verificar a condição do Sensor de Distância repetidamente, para que, assim que essas duas etapas básicas forem concluídas, o Robô de RV possa voltar e usar o Sensor de Distância para encontrar o próximo castelo a ser derrubado.
Planeamento de um Projeto com a Declaração If Else
- Inicie um novo projeto e selecione o Dynamic Castle Crasher Playground quando solicitado.

- Nomeie o projeto como Unit9Lesson2.

-
Adicione comentários ao espaço de trabalho que descrevam a intenção do projeto, com base nas etapas identificadas acima. O primeiro comentário explica a condição da instrução if else , e os dois seguintes explicam as ações de cada ramo da instrução if else . Lembre-se de que os comentários do Python começam com um símbolo # (pound). O seu projeto deve ter este aspeto:
def main(): # O sensor de distância detecta um castelo? # Castelo de colisão detectado por um sensor de distância # Vire para encontrar um castelo usando o sensor de distância -
Uma afirmação if else pode ser utilizada para desencadear cada uma das ações descritas anteriormente. Cada ação depende se a condição booleana na instrução if else é reportada como True ou False. Adicione uma instrução if else após os comentários. O seu projeto deve agora ter este aspeto:
def main(): # O sensor de distância detecta um castelo? # Castelo de colisão detectado por um sensor de distância # Vire para encontrar um castelo usando o sensor de distância se a condição: passar mais: passar -
Cada ramo da instrução if else pode ser definido utilizando os comentários. Se o Sensor de Distância detectar um castelo, o Robô de RV deve dirigir para derrubar o castelo; caso contrário , ele deve virar para detectar um castelo. Mova as ramificações if e else do projeto para alinhar com os comentários que descrevem as ações associadas. O seu projeto deve agora ter este aspeto:
def main(): # O sensor de distância detecta um castelo? se condição: # Castelo de colisão detectado por uma passagem do Sensor de Distância , então: # Vire para encontrar um castelo usando a passagem do Sensor de Distância
Selecione o botão Seguinte para continuar com o resto desta lição.