Skip to main content

Lección 2: Declaraciones If Else

En esta lección, crearás un proyecto en el que el robot VR derriba al menos dos castillos en el Dynamic Castle Crasher Playground. Se necesitará un algoritmo para resolver el desafío utilizando bucles y retroalimentación del sensor porque el diseño del patio de recreo cambia con cada reinicio.

Ejemplos de diseños dinámicos de Castle Crasher Playground:

Tres vistas de arriba hacia abajo de un Dynamic Castle Crasher Playground, cada una con diferentes disposiciones aleatorias de castillos, con un robot de realidad virtual posicionado constantemente en el punto de partida inferior.

Resultados de aprendizaje

  • Identifique que una instrucción if else ejecuta los comandos dentro de la rama 'if' o 'else' en función del valor booleano informado.
  • Identifique que una declaración if else se usa normalmente con un bucle for o un bucle infinito while  para verificar la condición más de una vez.
  • Identifique y describa por qué se utiliza una declaración if else con bucles.
  • Describa qué causaría que se ejecutara una rama "if" o una rama "else" en un proyecto con una instrucción if else.

¿Por qué usar una declaración If Else?

El desafío Dynamic Castle Crasher es diferente del desafío Castle Crasher de la Unidad 2. El desafío de la Unidad 2 utilizaba una secuencia simple y comandos de transmisión para derribar los castillos en un patio de recreo estático.

def main():
	transmisión.set_drive_velocity(100, POR CIENTO
	) 	transmisión.set_turn_velocity (100, POR CIENTO
	) 	transmisión.drive_for (ADELANTE, 1550, MM
	) 	transmisión.turn_for (DERECHA, 180, GRADOS
	) 	transmisión.drive_for (ADELANTE, 700, MM)
	transmisión.turn_for(DERECHA, 90, GRADOS)

Sin embargo, debido a los diseños cambiantes del Dynamic Castle Crasher Playground, los comandos de Drivetrain por sí solos no serán suficientes para que el VR Robot derribe dos o más castillos. Un conjunto de comandos de transmisión puede funcionar en un patio de recreo, pero no en otro. Se necesitará un algoritmo que utilice sensores y selección en iteraciones. La instrucción if else se utilizará para crear un algoritmo añadiendo selección con instrucciones condicionales a este proyecto.

Una vista de arriba hacia abajo del Dynamic Castle Crasher Playground que muestra que solo algunos de los castillos han sido derribados. El robot VR está en la parte superior derecha del patio de recreo después de su movimiento alrededor del patio de recreo.

La declaración If Else

La instrucción if else es una instrucción que acepta condiciones booleanas. La instrucción if  else es una instrucción condicional que controla el flujo de un proyecto. La instrucción if else ejecutará una secuencia particular de comandos si se cumple la condición, de lo contrario (cuando no se cumple la condición) se ejecuta otro conjunto de comandos,  "ramificando" así el flujo del proyecto. Sólo se ejecutará una rama en el if else a la vez.

if condition:
	pass
else:
	pass
  • Si la condición se informa como Verdadero, se ejecutan los comandos dentro de la rama 'si'.
  • Si la condición se informa como False, se ejecutan los comandos dentro de la rama 'else'.
  • Una vez que se ejecuten todos los comandos dentro de una de las ramas, el proyecto pasará al siguiente comando fuera de la instrucción if else.

Es probable que uses la lógica de lo contrario a menudo en tus acciones cotidianas. Por ejemplo, al decidir qué necesitas llevar cuando sales de casa en función del tiempo que haga fuera, puedes usar la lógica if else. If it is raining, lleva un paraguas; else lleva gafas de sol.

La rama 'If' -

  • En este escenario, se cumple la condición de 'lluvia', por lo que se ejecutaría la rama 'si' y se llevaría un paraguas. En el lado izquierdo hay un código de ejemplo que dice si llueve:, toma el paraguas. Después de la declaración if se lee else: take sunglasses. Por encima del código hay una nube de lluvia con gotas de lluvia. A la derecha hay un paraguas de colores con gotitas. Según el código, si llueve, la persona llevará un paraguas; de lo contrario, llevará gafas de sol.

La sucursal 'Else' -

  • En este escenario, no se cumple la condición de 'lloviendo', por lo que se ejecutaría la rama 'else', y te llevarías unas gafas de sol. En el lado izquierdo hay un código de ejemplo que dice si llueve:, toma el paraguas. Después de la declaración if se lee else: take sunglasses. Por encima del código hay un sol brillante. A la derecha hay un par de gafas de sol rojas. Según el código, si llueve, la persona llevará un paraguas; de lo contrario, llevará gafas de sol.

 

La declaración If Else y el problema del choque dinámico del castillo

Hay dos pasos principales para que el robot VR derribe castillos con éxito en el Dynamic Castle Crasher Playground. Esencialmente, el robot VR debe ser capaz de localizar y detectar castillos en el patio de recreo, y luego conducir para derribarlos. En términos de una declaración if else , esto podría formularse de la siguiente manera:

  1. Si el robot VR detecta un castillo, dirígete hacia él para derribarlo.Vista de arriba hacia abajo del parque infantil Dynamic Castle Crasher. El castillo en medio de este patio de recreo se destaca con un recuadro rojo y una flecha que apunta hacia él desde la posición inicial del robot de realidad virtual, lo que indica que el robot de realidad virtual se moverá hacia el castillo.
  2. De lo contrario, (cuando el robot de realidad virtual no detecte un castillo), gire y busque un castillo en otra ubicación en el patio de recreo.Una vista de arriba hacia abajo del Dynamic Castle Crasher Playground con el castillo central resaltado con un recuadro rojo. Las flechas alrededor del robot VR muestran el giro en el sentido de las agujas del reloj, lo que indica que el robot girará hasta que vea otro castillo.

El sensor de distancia en el robot VR se puede utilizar para detectar castillos en este patio de recreo. A diferencia de cualquier otro parque infantil, el Dynamic Castle Crasher Playground no tiene paredes. Debido a que los castillos son los únicos objetos en el Dynamic Castle Crasher Playground, cuando el sensor de distancia detecta un objeto, ese objeto será un castillo. El robot VR deberá verificar el estado del sensor de distancia repetidamente, de modo que una vez que se completen estos dos pasos básicos, el robot VR pueda volver atrás y usar el sensor de distancia para encontrar el próximo castillo a derribar.

Planificación de un proyecto con la declaración If Else

  • Inicie un nuevo proyecto y seleccione Dynamic Castle Crasher Playground cuando se le solicite. La miniatura del patio de recreo Dynamic Castle Crasher se ve al seleccionar un nuevo patio de recreo en VEXcode VR.
  • Nombra el proyecto Unit9Lesson2.
    La barra de herramientas VEXcode VR donde el nombre del proyecto está resaltado en rojo. El nombre del proyecto dice Unidad 9 Lección 2.
  • Añada comentarios en el espacio de trabajo que describan la intención del proyecto, en función de los pasos identificados anteriormente. El primer comentario explica la condición de la instrucción if else, y los dos siguientes explican las acciones de cada rama de la instrucción if else. Recuerda que los comentarios de Python comienzan con un símbolo # (libra). Tu proyecto debería verse así:

    def main():
    	# ¿El sensor de distancia detecta un castillo?
    	
    	# Castillo estrellado detectado por un sensor de distancia
    	
    	# Gira para encontrar un castillo usando el sensor de distancia
  • Se puede utilizar una declaración if else para activar cada una de las acciones descritas anteriormente. Cada acción depende de si la condición booleana en la instrucción if else se informa como Verdadero o Falso. Agregue una declaración if else después de los comentarios. Tu proyecto ahora debería verse así:

    def main():
    	# ¿El sensor de distancia detecta un castillo?
    	
    	# Castillo estrellado detectado por un sensor de distancia
    	
    	# Gira para encontrar un castillo usando el sensor de distancia
    	
    	si condición:
    		pasa 	de
    	lo contrario:
    		pasa
  • Cada rama de la instrucción if else se puede definir utilizando los comentarios. Si el sensor de distancia detecta un castillo, el robot VR debe conducir para derribar el castillo; de lo contrario debe girar para detectar un castillo. Mueva las ramas if y else del proyecto para alinearse con los comentarios que describen las acciones asociadas. Tu proyecto ahora debería verse así:

    def main():
    	# ¿El sensor de distancia detecta un castillo?
    	
    	if condition:
    		# Castillo de choque detectado por un
    		pase de sensor de distancia
    		
    	else:
    		# Gira para encontrar un castillo usando el
    		pase de sensor de distancia

Seleccione el botón Siguiente para continuar con el resto de esta lección.