Skip to main content

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:

Três vistas de cima para baixo de um Parque Infantil Dynamic Castle Crasher, cada uma exibindo diferentes arranjos aleatórios de castelos, com um Robô de RV posicionado consistentemente no ponto inicial inferior.

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.

Uma vista de cima para baixo do Parque Infantil Dynamic Castle Crasher mostrando que apenas alguns dos castelos foram derrubados. O Robô VR está no canto superior direito do playground após o seu movimento ao redor do playground.

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. No lado esquerdo há um exemplo de código lendo se estiver chovendo:, leve um guarda-chuva. Após a instrução if, lê-se: take sunglasses. Acima do código está uma nuvem de chuva com gotas de chuva. À direita, há um guarda-chuva colorido com gotículas. De acordo com o código, se estiver chovendo, a pessoa vai levar um guarda-chuva; caso contrário, vai levar óculos escuros.

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. No lado esquerdo há um exemplo de código lendo se estiver chovendo:, leve um guarda-chuva. Após a instrução if, lê-se: take sunglasses. Acima do código está um sol brilhante. À direita está um par de óculos de sol vermelhos. De acordo com o código, se estiver chovendo, a pessoa vai levar um guarda-chuva; caso contrário, vai levar ó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:

  1. Se o Robô de RV detectar um castelo, avance em direção a ele para derrubá-lo.Vista de cima para baixo do playground Dynamic Castle Crasher. O castelo no meio deste playground é destacado com uma caixa vermelha e uma seta apontando para ele da posição inicial do Robô de RV, indicando que o Robô de RV se moverá em direção ao castelo.
  2. 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.Uma vista de cima para baixo do Dynamic Castle Crasher Playground com o castelo central destacado com uma caixa vermelha. As setas ao redor do Robô VR mostram a rotação no sentido horário, indicando que o robô girará até ver outro castelo.

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. A miniatura do playground Dynamic Castle Crasher vista ao selecionar um novo Playground no VEXcode VR.
  • Nomeie o projeto como Unit9Lesson2.
    A barra de ferramentas VEXcode VR, onde o nome do projeto é destacado em vermelho. O nome do projeto diz Unidade 9 Lição 2.
  • 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.