L'Accensione Cinematografica
Gli effetti speciali di Hollywood non succedono tutti in una volta! Per creare un effetto di accensione morbido e graduale, dobbiamo controllare ogni pixel dello schermo uno per uno. In questa missione, imparerai a usare il potente loop "for", uno strumento pensato apposta per contare e ripetere azioni un numero esatto di volte. Preparati a dare al tuo interruttore un tocco cinematografico!
Livello Intermedio
Cosa faremo?
Sei un insegnante?
Corsi
- Classi 6-12
Materiali
- 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 "for" come strumento fondamentale per l'iterazione contata. Gli studenti sostituiscono un'accensione/spegnimento istantaneo con un'animazione a scorrimento. Questo richiede l'uso di loop "for" annidati per percorrere una griglia 2D e offre un caso d'uso pratico e visivamente gratificante per questo nuovo concetto.
Obiettivi Educativi
- Comprendere la struttura e lo scopo di un loop "for" (variabile contatore, inizio, fine, passo).
- Utilizzare loop "for" annidati per iterare su una struttura dati bidimensionale (una griglia).
- Creare un'animazione sequenziale controllando singoli elementi (i pixel).
- Distinguere tra un loop a ripetizione infinita e un loop a ripetizione contata.
Inizio (10 minuti) - Il Bisogno di Contare
- Dai il benvenuto alla classe: "Normalmente una luce si accende tutta in una volta. Oggi le daremo un effetto speciale. Come potremmo farla accendere come un'onda di luce che attraversa lo schermo?"
- Poni il problema: "Per riuscirci dovremmo dire al programma: 'accendi il primo pixel, aspetta; accendi il secondo, aspetta...' e così via. Ripeterlo 49 volte a mano sarebbe una follia!"
- Presenta la soluzione: "Oggi impareremo uno strumento nuovo e potente, il loop 'for' o 'conta con variabile', pensato esattamente per questo tipo di compiti di conteggio. Ci permette di eseguire un blocco di codice un numero preciso di volte."
Quando Dobbiamo Contare: Il Loop 'For'
Abbiamo visto loop che si ripetono per sempre (ripeti per sempre). Ma a volte abbiamo bisogno che un loop venga eseguito un numero esatto di volte. Il loop "for" (in Protobject, "conta con variabile") è lo strumento perfetto per questo. È come dare al programma un ordine molto preciso: "Voglio che tu esegua questo codice, iniziando a contare da 1, finendo a 7 e avanzando di 1 alla volta".
Le Parti di un Loop 'For'
Un loop "for" ha quattro parti chiave che ne definiscono la missione:
- Variabile Contatore: Una variabile temporanea che il loop usa per tenere il conto (per esempio,
i,riga,colonna). - Valore Iniziale: Il numero da cui la variabile contatore inizia a contare (per esempio,
1). - Valore Finale: Il numero al quale il loop si fermerà (per esempio,
7). - Passo: Quanto la variabile contatore aggiunge (o sottrae) a ogni ripetizione (per esempio,
1).
Loop Annidati per Griglie 2D
Il nostro schermo di LED è una griglia bidimensionale (2D): ha righe e colonne. Per passare su ogni pixel un solo loop non basta. La soluzione è usare loop 'for' annidati: mettiamo un loop dentro un altro.
- Il loop esterno percorre le righe (da 1 a 7): sceglie una riga della griglia.
- Per ogni riga, il loop interno percorre le colonne e accende uno dopo l'altro i pixel
x = colonne, y = righe. La variabile interna è quella che cambia più in fretta: fa i suoi 7 giri completi per ogni valore di quella esterna — ecco perché il bloccodisegnaviene eseguito 7 × 7 = 49 volte, una per ogni LED.
Sviluppo (20-30 minuti) - Programmare lo Scorrimento della Luce
- Ora che gli studenti hanno capito a cosa serve il loop "for", è il momento di metterlo all'opera.
- Guidali a costruire l'accensione con i loop 'for' annidati invece di un semplice blocco di accensione/spegnimento, come dettagliato qui sotto. È fondamentale che capiscano perché servono due loop (uno per le righe e uno per le colonne).
Chiusura (5-10 minuti) - Padroneggiare la Griglia
- Una volta che tutti hanno il loro effetto di accensione cinematografica, riflettete sullo strumento che lo ha reso possibile.
- Avvia la discussione: "Guardate i vostri nuovi loop. Che cosa fa la variabile 'righe'? E la variabile 'colonne'? Quale delle due cambia più in fretta? Perché ci servono due loop, uno dentro l'altro, per coprire tutto lo schermo?" Esplorate come cambiare l'ordine o i parametri dei loop modifica l'animazione.
Rifletti
Per che tipo di compiti è ideale un loop "for" rispetto a un loop "ripeti per sempre"?
Spiega perché ci servono due loop "for" annidati per accendere tutto lo schermo e non uno soltanto.
Lo scorrimento percorre la griglia riga per riga. Che cosa cambieresti perché la percorresse colonna per colonna? (Suggerimento: pensa a quale dei due loop va fuori e quale dentro, senza toccare il blocco disegna).
Quando Dobbiamo Contare: Il Loop 'For'
Abbiamo visto loop che si ripetono per sempre (ripeti per sempre). Ma a volte abbiamo bisogno che un loop venga eseguito un numero esatto di volte. Il loop "for" (in Protobject, "conta con variabile") è lo strumento perfetto per questo. È come dare al programma un ordine molto preciso: "Voglio che tu esegua questo codice, iniziando a contare da 1, finendo a 7 e avanzando di 1 alla volta".
Le Parti di un Loop 'For'
Un loop "for" ha quattro parti chiave che ne definiscono la missione:
- Variabile Contatore: Una variabile temporanea che il loop usa per tenere il conto (per esempio,
i,riga,colonna). - Valore Iniziale: Il numero da cui la variabile contatore inizia a contare (per esempio,
1). - Valore Finale: Il numero al quale il loop si fermerà (per esempio,
7). - Passo: Quanto la variabile contatore aggiunge (o sottrae) a ogni ripetizione (per esempio,
1).
Loop Annidati per Griglie 2D
Il nostro schermo di LED è una griglia bidimensionale (2D): ha righe e colonne. Per passare su ogni pixel un solo loop non basta. La soluzione è usare loop 'for' annidati: mettiamo un loop dentro un altro.
- Il loop esterno percorre le righe (da 1 a 7): sceglie una riga della griglia.
- Per ogni riga, il loop interno percorre le colonne e accende uno dopo l'altro i pixel
x = colonne, y = righe. La variabile interna è quella che cambia più in fretta: fa i suoi 7 giri completi per ogni valore di quella esterna — ecco perché il bloccodisegnaviene eseguito 7 × 7 = 49 volte, una per ogni LED.
Crea
Creiamo l'effetto cinematografico!
Costruisci il modellino di cartone— servono anche un paio di elastici per fissare il telefono al cartone
- Ti serviranno 2 componenti: LivelloRumore e DisegnoLED.
- Assicurati di averli pronti nel tuo spazio di lavoro.
Siamo pronti per aggiungere gli effetti speciali!
Composizione del Codice
L'evento di rumore cambia la variabile stato da vero a falso e viceversa. La grande differenza sta dentro il se... altrimenti.... Quando stato è vero, due loop conta con variabile annidati percorrono la griglia: righe fuori e, dentro ogni riga, colonne, accendendo ogni pixel (disegna in x colonne y righe) con una pausa di 10 millisecondi. Nella parte altrimenti facciamo la stessa cosa, ma coloriamo i pixel di nero per creare l'effetto di spegnimento graduale.
Rifletti
Per che tipo di compiti è ideale un loop "for" rispetto a un loop "ripeti per sempre"?
Spiega perché ci servono due loop "for" annidati per accendere tutto lo schermo e non uno soltanto.
Lo scorrimento percorre la griglia riga per riga. Che cosa cambieresti perché la percorresse colonna per colonna? (Suggerimento: pensa a quale dei due loop va fuori e quale dentro, senza toccare il blocco disegna).