La Patata Bollente Digitale
Hai usato i loop for per contare un numero esatto di passi. Ma cosa succede se non sai quante volte devi ripetere un'azione? Pensa al gioco della "patata bollente": il timer è casuale e la suspense è tutto. Non sai se esploderà tra 5 secondi o tra 15. In questa missione imparerai a usare l'ultimo dei grandi loop, il loop "while" (ripeti mentre), per creare la tua versione digitale di questo gioco elettrizzante.
Livello Intermedio
Cosa faremo?
Sei un insegnante?
Corsi
- Classi dalla 6 alla 12
Materiali
- Telefono cellulare, tablet o computer
- Connessione a Internet
- Cartone, forbici e un paio di elastici per fissare il telefono al cartone
Descrizione
Questa attività introduce il loop "while", la struttura di loop fondamentale per le situazioni in cui il numero di ripetizioni è sconosciuto. Gli studenti costruiranno un gioco della "patata bollente" con un timer casuale, uno scenario perfetto che dimostra perché serve un loop che venga eseguito mentre una condizione è vera, invece che per un numero fisso di volte.
Obiettivi Educativi
- Comprendere la struttura e lo scopo di un loop "while".
- Distinguere chiaramente i casi d'uso di un loop "for" e quelli di un loop "while".
- Usare numeri casuali per creare un comportamento imprevedibile in un programma.
- Gestire il flusso di un programma che dipende da una condizione che cambia durante l'esecuzione.
Inizio (10 minuti) - Il Loop del Mistero
- Dai il benvenuto alla classe: "Abbiamo imparato il loop 'for', che è come correre una gara di 100 metri: sai esattamente dov'è il traguardo. Ma se fossi dentro un labirinto? Non sai quanti passi ti serviranno per uscire; sai solo che devi continuare a camminare mentre sei ancora perso là dentro."
- Introduci il concetto: "Quel 'mentre' è la chiave del nostro ultimo tipo di loop: il loop 'while'. Non viene eseguito un certo numero di volte, ma finché una condizione rimane vera."
- Presenta il gioco: "Oggi useremo questa idea per creare un gioco della 'patata bollente'. Il timer sarà casuale, quindi non sappiamo quando finirà. Il gioco andrà avanti mentre il tempo rimanente è maggiore di zero."
Quando Non Sai Quando Fermarti
Il loop for è fantastico quando conosci in anticipo il numero esatto di ripetizioni (per esempio, "ripeti 10 volte" oppure "percorri i 7 pixel di una riga").
Ma in tanti casi, come in un gioco con un timer casuale o mentre aspetti che qualcuno prema un tasto, non sai quanto tempo ci vorrà. Ti serve un loop capace di andare avanti mentre una condizione è soddisfatta, a prescindere da quante ripetizioni saranno.
Il Loop 'While' (Ripeti Mentre)
Il loop "while" (ovvero "ripeti mentre") è la soluzione perfetta per questi casi. Funziona con una logica semplice:
- Prima controlla una condizione (per esempio,
tempoRimasto è > 0?). - Mentre quella condizione è vera, esegue il codice che ha al suo interno ancora e ancora.
- A ogni ripetizione torna al passo 1 e controlla di nuovo la condizione.
- Nel momento in cui la condizione diventa falsa, il loop si ferma immediatamente e il programma prosegue con il blocco successivo.
La Logica della Patata Bollente
Il nostro gioco combina in un modo nuovo diverse idee che già conosci:
- Evento: Premere lo schermo fa partire un nuovo turno — se non ce n'è già uno in corso.
- Bandiera: La variabile
prontoricorda se il gioco è libero. Parte da vero inquando il programma inizia; l'evento fa partire un turno solose pronto, e la prima cosa che fa è metterla a falso, così un secondo tocco non fa ripartire il turno in corso. - Variabile e Casualità: La variabile
tempoRimastoconserva un numero casuale, così ogni turno è imprevedibile. - Loop While: Il loop principale del gioco viene eseguito mentre
tempoRimasto > 0. Dentro il loop togliamo 1 atempoRimastoogni secondo. - Il Finale: Quando
tempoRimastoarriva a 0, la condizione del loop diventa falsa, il loop termina e la patata "esplode"!
Sviluppo (20-30 minuti) - Programmare la suspense
- Ora che gli studenti hanno capito la differenza concettuale tra
forewhile, è il momento di costruire il gioco. - Guidali attraverso le istruzioni per creare il gioco, concentrandoti sulla struttura del loop 'while' e sulla sua condizione di arresto (
tempoRimasto > 0), come dettagliato qui sotto. È fondamentale che capiscano perché questo loop è lo strumento giusto per questo lavoro.
Chiusura (5-10 minuti) - Lo Strumento Giusto per il Lavoro
- Una volta che tutti si stanno passando la "patata bollente", è il momento della riflessione finale sui loop.
- Avvia la discussione: "Confrontiamo gli strumenti che conosciamo. Quando usereste un loop 'for'? E quando un loop 'while'? Perché un 'while' era perfetto per questo gioco e perché un 'for' non avrebbe funzionato altrettanto bene?" (Perché il tempo rimanente è casuale e sconosciuto nel momento in cui il loop comincia).
Rifletti
Qual è la differenza principale tra un loop "for" e un loop "while"? Perché "while" era la scelta migliore per questo gioco?
Dentro un loop "while" è importantissimo assicurarsi che prima o poi la condizione diventi falsa, per evitare un loop infinito. Quale blocco dentro il nostro loop garantisce che il gioco finisca sempre?
Cosa succederebbe se il numero casuale generato potesse essere 0? Il gioco funzionerebbe correttamente?
Quando Non Sai Quando Fermarti
Il loop for è fantastico quando conosci in anticipo il numero esatto di ripetizioni (per esempio, "ripeti 10 volte" oppure "percorri i 7 pixel di una riga").
Ma in tanti casi, come in un gioco con un timer casuale o mentre aspetti che qualcuno prema un tasto, non sai quanto tempo ci vorrà. Ti serve un loop capace di andare avanti mentre una condizione è soddisfatta, a prescindere da quante ripetizioni saranno.
Il Loop 'While' (Ripeti Mentre)
Il loop "while" (ovvero "ripeti mentre") è la soluzione perfetta per questi casi. Funziona con una logica semplice:
- Prima controlla una condizione (per esempio,
tempoRimasto è > 0?). - Mentre quella condizione è vera, esegue il codice che ha al suo interno ancora e ancora.
- A ogni ripetizione torna al passo 1 e controlla di nuovo la condizione.
- Nel momento in cui la condizione diventa falsa, il loop si ferma immediatamente e il programma prosegue con il blocco successivo.
La Logica della Patata Bollente
Il nostro gioco combina in un modo nuovo diverse idee che già conosci:
- Evento: Premere lo schermo fa partire un nuovo turno — se non ce n'è già uno in corso.
- Bandiera: La variabile
prontoricorda se il gioco è libero. Parte da vero inquando il programma inizia; l'evento fa partire un turno solose pronto, e la prima cosa che fa è metterla a falso, così un secondo tocco non fa ripartire il turno in corso. - Variabile e Casualità: La variabile
tempoRimastoconserva un numero casuale, così ogni turno è imprevedibile. - Loop While: Il loop principale del gioco viene eseguito mentre
tempoRimasto > 0. Dentro il loop togliamo 1 atempoRimastoogni secondo. - Il Finale: Quando
tempoRimastoarriva a 0, la condizione del loop diventa falsa, il loop termina e la patata "esplode"!
Crea
Giochiamo alla Patata Bollente!
Costruisci il modellino di cartone— servono anche un paio di elastici per fissare il telefono al cartone
- Ci serviranno 2 componenti: BottoneTouch, che farà da pulsante di avvio, e RiproduttoreSuoni per la musica di suspense e per l'effetto sonoro.
- Assicurati di averli pronti nel tuo spazio di lavoro. Puoi aprirli nella stessa finestra.
Siamo pronti a programmare la suspense!
Composizione del Codice
Quasi tutta la logica del gioco vive dentro l'evento quando è toccato, protetta da un se pronto. Prima la bandiera passa a falso, poi si sorteggia tempoRimasto e parte la musica. Poi entra in azione il loop ripeti mentre tempoRimasto > 0. È fondamentale che dentro il loop modifichiamo la variabile che viene controllata (con il blocco cambia tempoRimasto di -1). Se ci dimenticassimo questo passaggio, tempoRimasto non arriverebbe mai a 0, la condizione sarebbe sempre vera e il loop andrebbe avanti per sempre!
Rifletti
Qual è la differenza principale tra un loop "for" e un loop "while"? Perché "while" era la scelta migliore per questo gioco?
Dentro un loop "while" è importantissimo assicurarsi che prima o poi la condizione diventi falsa, per evitare un loop infinito. Quale blocco dentro il nostro loop garantisce che il gioco finisca sempre?
Cosa succederebbe se il numero casuale generato potesse essere 0? Il gioco funzionerebbe correttamente?