Skip to main content

Lezione 2: Se Else Affermazioni

In questa lezione, creerai un progetto in cui il robot VR abbatte almeno due castelli nel Dynamic Castle Crasher Playground. Sarà necessario un algoritmo per risolvere la sfida utilizzando loop e feedback del sensore perché il layout del parco giochi cambia ad ogni ripristino.

Esempi di layout dinamici di Castle Crasher Playground:

Tre viste dall'alto verso il basso di un parco giochi dinamico Castle Crasher, ognuna con diverse disposizioni casuali di castelli, con un robot VR posizionato costantemente nel punto di partenza inferiore.

Risultati di apprendimento

  • Identificare che un'istruzione if else esegue i comandi all'interno del ramo 'if' o 'else' in base al valore booleano riportato.
  • Si noti che un'istruzione if else viene normalmente utilizzata con un ciclo for o un ciclo infinito while  per verificare la condizione più di una volta.
  • Identificare e descrivere il motivo per cui un'istruzione if else viene utilizzata con i loop.
  • Descrivere cosa causerebbe l'esecuzione di un ramo "if" o "else" in un progetto con un'istruzione if else.

Perché utilizzare un'istruzione If Else?

La sfida Dynamic Castle Crasher è diversa dalla sfida Castle Crasher nell'Unità 2. La sfida dell'Unità 2 utilizzava semplici comandi di sequenziamento e Drivetrain per far cadere i castelli su un parco giochi statico.

def main():
	drivetrain.set_drive_velocity(100, PERCENT)
	drivetrain.set_turn_velocity(100, PERCENT)
	drivetrain.drive_for(FORWARD, 1550, MM)
	drivetrain.turn_for(RIGHT, 180, DEGREES)
	drivetrain.drive_for(FORWARD, 700, MM)
	drivetrain.turn_for(RIGHT, 90, DEGREES)

Tuttavia, a causa dei cambiamenti nei layout del parco giochi Dynamic Castle Crasher, i comandi Drivetrain da soli non saranno sufficienti per far sì che il robot VR abbatta due o più castelli. Una serie di comandi Drivetrain può funzionare in un parco giochi, ma non in un altro. Sarà necessario un algoritmo che utilizzi sensori e selezione nelle iterazioni. L'istruzione if else verrà utilizzata per creare un algoritmo aggiungendo la selezione con le istruzioni condizionali a questo progetto.

Una vista dall'alto verso il basso del Dynamic Castle Crasher Playground mostra che solo alcuni dei castelli sono stati rovesciati. Il robot VR si trova in alto a destra del parco giochi dopo il suo movimento.

L'istruzione If Else

L'istruzione if else è un'istruzione che accetta le condizioni booleane. L'istruzione if  else è un'istruzione condizionale che controlla il flusso di un progetto. L'istruzione if else eseguirà una particolare sequenza di comandi se la condizione viene soddisfatta, altrimenti (quando la condizione non viene soddisfatta) viene eseguita un'altra serie di comandi,  "ramificando" così il flusso del progetto. Verrà eseguito solo un ramo alla volta negli elenchi if else .

se condizione:
	superato
altrimenti:
	superato
  • Se la condizione viene riportata come True, vengono eseguiti i comandi all'interno del ramo "if".
  • Se la condizione viene riportata come False, vengono eseguiti i comandi all'interno del ramo 'else'.
  • Una volta eseguiti tutti i comandi all'interno di uno dei rami, il progetto passerà al comando successivo al di fuori dell'istruzione if else.

Probabilmente utilizzi spesso la logica if else nelle tue azioni quotidiane. Ad esempio, quando decidi cosa portare quando esci di casa in base alle condizioni meteorologiche esterne, puoi usare la logica if else  Se piove, prendi un ombrello; altrimenti prendi gli occhiali da sole.

Il ramo "If" -

  • In questo scenario, la condizione "piove", quindi verrebbe eseguita la diramazione "se" e si prenderebbe un ombrello. Sul lato sinistro c'è un esempio di codice che recita se piove:, prendi l'ombrello. Dopo l'istruzione if si legge altro: prendi gli occhiali da sole. Sopra il codice c'è una nuvola di pioggia con gocce di pioggia. Sulla destra c'è un ombrello colorato con goccioline. Secondo il codice, se piove, la persona prenderà un ombrello; altrimenti, prenderà gli occhiali da sole.

La filiale "Else" -

  • In questo scenario, la condizione di "pioggia" non è soddisfatta, quindi il ramo "altro" verrebbe eseguito e si prenderebbero gli occhiali da sole. Sul lato sinistro c'è un esempio di codice che recita se piove:, prendi l'ombrello. Dopo l'istruzione if si legge altro: prendi gli occhiali da sole. Sopra il codice c'è un sole splendente. A destra un paio di occhiali da sole rossi. Secondo il codice, se piove, la persona prenderà un ombrello; altrimenti, prenderà gli occhiali da sole.

 

L'affermazione If Else e il problema dinamico del Castle Crasher

Ci sono due passaggi principali per il robot VR per abbattere con successo i castelli nel Dynamic Castle Crasher Playground. In sostanza, il robot VR deve essere in grado di localizzare e rilevare i castelli nel parco giochi e poi guidare per rovesciarli. In termini di un'istruzione if else , questo potrebbe essere formulato come:

  1. Se il robot VR rileva un castello, avanza verso di esso per rovesciarlo.Vista dall'alto verso il basso del parco giochi Dynamic Castle Crasher. Il castello al centro di questo parco giochi è evidenziato con una casella rossa e una freccia che punta verso di esso dalla posizione di partenza del Robot VR, indicando che il Robot VR si sposterà verso il castello.
  2. Altrimenti, (quando il robot VR non rileva un castello), gira e cerca un castello in un'altra posizione nel parco giochi.Una vista dall'alto verso il basso del Dynamic Castle Crasher Playground con il castello centrale evidenziato con una scatola rossa. Le frecce intorno al robot VR mostrano una rotazione in senso orario, indicando che il robot girerà fino a quando non vedrà un altro castello.

Il sensore di distanza sul robot VR può essere utilizzato per rilevare i castelli in questo parco giochi. A differenza di ogni altro parco giochi, il Dynamic Castle Crasher Playground non ha pareti. Poiché i castelli sono gli unici oggetti nel Dynamic Castle Crasher Playground, quando il sensore di distanza rileva un oggetto, quell' oggetto sarà un castello. Il robot VR dovrà controllare ripetutamente le condizioni del sensore di distanza, in modo che una volta completati questi due passaggi di base, il robot VR possa tornare indietro e utilizzare il sensore di distanza per trovare il castello successivo da rovesciare.

Pianificazione di un progetto con la dichiarazione If Else

  • Avvia un nuovo progetto e seleziona il parco giochi dinamico Castle Crasher quando richiesto. La miniatura del parco giochi Dynamic Castle Crasher visualizzata quando si seleziona un nuovo parco giochi in VEXcode VR.
  • Denominare il progetto Unit9Lesson2.
    La barra degli strumenti VEXcode VR in cui il nome del progetto è evidenziato in rosso. Il nome del progetto recita Unità 9 Lezione 2.
  • Aggiungere commenti nell'area di lavoro che delineano l'intenzione per il progetto, in base ai passaggi sopra identificati. Il primo commento spiega la condizione dell'istruzione if else e i due successivi spiegano le azioni di ciascun ramo dell'istruzione if else. Ricorda che i commenti Python iniziano con un simbolo # (libbra). Il tuo progetto dovrebbe essere simile a questo:

    def main():
    	# Il sensore di distanza rileva un castello?
    	
    	# Castello in caso di incidente rilevato da un sensore di distanza
    	
    	# Gira per trovare un castello utilizzando il sensore di distanza
  • Un'istruzione if else può essere utilizzata per attivare ciascuna delle azioni sopra descritte. Ogni azione dipende dal fatto che la condizione booleana nell'istruzione if  else sia True o False. Aggiungere un'istruzione if else dopo i commenti. Il tuo progetto dovrebbe assomigliare a questo:

    def main():
    	# Il sensore di distanza rileva un castello?
    	
    	# Castello di schianto rilevato da un sensore di distanza
    	
    	# Gira per trovare un castello usando il sensore di distanza
    	
    	se la condizione:
    		passa
    	altrimenti:
    		passa
  • Ogni ramo dell'istruzione if else può essere definito utilizzando i commenti. Se il sensore di distanza rileva un castello, il robot VR dovrebbe guidare per rovesciare il castello;  altrimenti dovrebbe girare per rilevare un castello. Spostare i rami if e else del progetto per allinearli con i commenti che descrivono le azioni associate. Il tuo progetto dovrebbe assomigliare a questo:

    def main():
    	# Il sensore di distanza rileva un castello?
    	
    	if condition:
    		# Castello di schianto rilevato da un sensore di distanza
    		pass
    		
    	else:
    		# Girare per trovare un castello utilizzando il sensore di distanza
    		pass

Selezionare il pulsante Avanti per continuare con il resto della lezione.