La Candela Magica di Compleanno

Hai imparato a usare gli eventi per cambiare le variabili e i condizionali per prendere decisioni. Ora mettiamo tutto insieme in un progetto magico! In questa missione costruirai il ciclo completo di un programma interattivo: un evento (il tuo soffio) cambierà lo stato di una variabile (candelaAccesa), e un condizionale leggerà quello stato per decidere se la candela si mostra accesa o spenta. È ora di esprimere un desiderio e soffiare!

Ciclo Interattivo Variabili di Stato Eventi Condizionali Logica Booleana Toggle

Livello Intermedio

Apri in Protobject

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 è un'attività di sintesi fondamentale che unisce i concetti delle lezioni precedenti: eventi, variabili di stato e condizionali. Gli studenti costruiranno una candela digitale interattiva, e questo permetterà loro di vedere in azione il ciclo completo "Azione dell'Utente -> Aggiornamento dello Stato -> Reazione del Programma".

Obiettivi Educativi

  • Sintetizzare l'uso di eventi, variabili e condizionali in un unico programma.
  • Comprendere come questi tre elementi lavorino insieme per creare programmi interattivi dotati di uno stato.
  • Realizzare una funzionalità di "interruttore" o "toggle" (accendere/spegnere) usando la logica booleana.
  • Rafforzare l'architettura di un programma che separa il rilevamento degli eventi dalla logica che disegna sullo schermo.

Inizio (10 minuti) - Il Motore dell'Interazione

  1. Dai il benvenuto alla classe: "Oggi assembleremo il motore completo della programmazione interattiva. Costruiremo una candela di compleanno magica che possiamo soffiare per spegnerla e riaccenderla."
  2. Scomponi il ciclo: "Pensiamo a come funziona. Qual è la nostra 'azione'?" (Soffiare). "Questo è il nostro evento. Quale 'stato' della candela cambia?" (Da accesa a spenta). "Questa è la nostra variabile. E qual è la 'decisione' che prende il programma?" (Mostrare la fiamma oppure no). "Questo è il nostro condizionale. Oggi vedremo come questi tre pezzi lavorano in perfetta armonia."

Il Ciclo Interattivo Completo

La maggior parte delle applicazioni che usi, dai videogiochi ai social network, si basa su un ciclo fondamentale di tre passi:

  1. Azione dell'Utente (Evento): Fai qualcosa (un clic, un tocco, un soffio). Il programma lo rileva come un evento.
  2. Aggiornamento dello Stato (Variabile): In risposta all'evento, il programma aggiorna la sua memoria (una variabile) per ricordare quello che è successo.
  3. Reazione del Programma (Condizionale): Il programma, che è sempre in esecuzione, legge quella memoria e decide come cambiare ciò che vedi o senti. Oggi costruirai proprio questo ciclo!

La Logica dell'Interruttore (Toggle)

La nostra candela non si limita a spegnersi: può anche riaccendersi con un altro soffio! Questa si chiama logica dell'"interruttore", o "toggle". Invece di impostare semplicemente la variabile candelaAccesa su FALSO, la impostiamo su (non candelaAccesa). Questo blocco speciale rovescia il valore booleano attuale:

  • Se candelaAccesa era VERO, diventa FALSO.
  • Se candelaAccesa era FALSO, diventa VERO. Con un solo blocco possiamo accendere e spegnere la candela con la stessa identica azione!

L'Architettura del Nostro Programma

Il nostro programma ha due parti principali che lavorano in squadra:

  • L'Ascoltatore di Eventi: è sempre "in ascolto" del microfono, in secondo piano. Il suo unico compito è rovesciare lo stato della variabile candelaAccesa quando rileva un soffio. Dell'animazione non gli importa nulla.
  • Il Motore dell'Animazione (Loop Principale): è sempre "al lavoro" a disegnare sullo schermo. Il suo unico compito è guardare la variabile candelaAccesa a ogni ciclo e decidere: disegno la fiamma o lascio lo schermo nero? Il ramo vero alterna due fotogrammi — la punta della fiamma in un punto a caso e la punta al centro — con 200 ms tra l'uno e l'altro. Prima di ogni punta la candela viene ridisegnata: è quel ridisegno che spegne la punta precedente. Se lo togli per semplificare, le punte si accumulano e la fiamma smette di tremolare. Da dove sia arrivato il cambiamento non gli importa nulla.

Sviluppo (20-30 minuti) - Programmiamo il Desiderio

  1. Ora che gli studenti hanno la mappa concettuale del ciclo interattivo, è tempo di costruirlo.
  2. Guidali attraverso le istruzioni per creare la candela e programmare l'interazione completa, come dettagliato qui sotto. È importante che notino come il blocco di evento e il loop principale siano indipendenti, ma comunichino attraverso la variabile.

Chiusura (5-10 minuti) - Seguiamo il Flusso dei Dati

  1. Una volta che tutti riescono a soffiare sulla propria candela, è tempo di analizzare il flusso delle informazioni.
  2. Avvia la discussione: "Descrivete il viaggio dell'informazione dentro al nostro programma. Che cosa dà il via al cambiamento? Dove viene conservato quel cambiamento? Chi legge quel cambiamento per agire di conseguenza?" (Evento -> Variabile -> Condizionale). Sottolinea che questo schema è alla base di quasi tutte le applicazioni che usano.

Rifletti

Descrivi il "ciclo interattivo" di questo progetto. Qual è l'evento, qual è la variabile di stato e qual è il condizionale che reagisce?

Che cosa fa esattamente il blocco imposta candelaAccesa a (non candelaAccesa)? Perché è più flessibile che impostare semplicemente la variabile su FALSO?

Se volessi che la candela si potesse spegnere una volta sola (senza mai riaccendersi), che cosa cambieresti nel blocco di evento?

Presenta Piano Lezione Modellino di cartone

Il Ciclo Interattivo Completo

La maggior parte delle applicazioni che usi, dai videogiochi ai social network, si basa su un ciclo fondamentale di tre passi:

  1. Azione dell'Utente (Evento): Fai qualcosa (un clic, un tocco, un soffio). Il programma lo rileva come un evento.
  2. Aggiornamento dello Stato (Variabile): In risposta all'evento, il programma aggiorna la sua memoria (una variabile) per ricordare quello che è successo.
  3. Reazione del Programma (Condizionale): Il programma, che è sempre in esecuzione, legge quella memoria e decide come cambiare ciò che vedi o senti. Oggi costruirai proprio questo ciclo!

La Logica dell'Interruttore (Toggle)

La nostra candela non si limita a spegnersi: può anche riaccendersi con un altro soffio! Questa si chiama logica dell'"interruttore", o "toggle". Invece di impostare semplicemente la variabile candelaAccesa su FALSO, la impostiamo su (non candelaAccesa). Questo blocco speciale rovescia il valore booleano attuale:

  • Se candelaAccesa era VERO, diventa FALSO.
  • Se candelaAccesa era FALSO, diventa VERO. Con un solo blocco possiamo accendere e spegnere la candela con la stessa identica azione!

L'Architettura del Nostro Programma

Il nostro programma ha due parti principali che lavorano in squadra:

  • L'Ascoltatore di Eventi: è sempre "in ascolto" del microfono, in secondo piano. Il suo unico compito è rovesciare lo stato della variabile candelaAccesa quando rileva un soffio. Dell'animazione non gli importa nulla.
  • Il Motore dell'Animazione (Loop Principale): è sempre "al lavoro" a disegnare sullo schermo. Il suo unico compito è guardare la variabile candelaAccesa a ogni ciclo e decidere: disegno la fiamma o lascio lo schermo nero? Il ramo vero alterna due fotogrammi — la punta della fiamma in un punto a caso e la punta al centro — con 200 ms tra l'uno e l'altro. Prima di ogni punta la candela viene ridisegnata: è quel ridisegno che spegne la punta precedente. Se lo togli per semplificare, le punte si accumulano e la fiamma smette di tremolare. Da dove sia arrivato il cambiamento non gli importa nulla.

Crea

Spegniamo le candeline!

Costruisci il modellino di cartone— servono anche un paio di elastici per fissare il telefono al cartone

  1. Ci serviranno 2 componenti: LivelloRumore per rilevare il 'soffio' (un aumento improvviso di rumore) e DisegnoLED per mostrare la nostra candela e la sua fiamma.
  2. Ricorda di scansionare o aprire entrambi i componenti sul tuo dispositivo.

Siamo pronti per programmare il nostro desiderio!

Composizione del Codice

Nota l'elegante divisione dei compiti. Il blocco di evento quando il livello di rumore rileva aumenta improvviso si occupa soltanto di cambiare la variabile candelaAccesa. Nel frattempo il loop principale va avanti senza sosta, e il suo blocco se... altrimenti... si occupa soltanto di leggere quella stessa variabile candelaAccesa per decidere quale animazione mostrare sullo schermo. Un lavoro di squadra perfetto, che passa tutto attraverso una variabile!

Rifletti

Descrivi il "ciclo interattivo" di questo progetto. Qual è l'evento, qual è la variabile di stato e qual è il condizionale che reagisce?

Che cosa fa esattamente il blocco imposta candelaAccesa a (non candelaAccesa)? Perché è più flessibile che impostare semplicemente la variabile su FALSO?

Se volessi che la candela si potesse spegnere una volta sola (senza mai riaccendersi), che cosa cambieresti nel blocco di evento?