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!

Loop For Loop Annidati Contatore Iterazione Animazione Pixel per Pixel Grafica

Livello Intermedio

Apri in Protobject

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

  1. 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?"
  2. 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!"
  3. 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:

  1. Variabile Contatore: Una variabile temporanea che il loop usa per tenere il conto (per esempio, i, riga, colonna).
  2. Valore Iniziale: Il numero da cui la variabile contatore inizia a contare (per esempio, 1).
  3. Valore Finale: Il numero al quale il loop si fermerà (per esempio, 7).
  4. 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 blocco disegna viene eseguito 7 × 7 = 49 volte, una per ogni LED.

Sviluppo (20-30 minuti) - Programmare lo Scorrimento della Luce

  1. Ora che gli studenti hanno capito a cosa serve il loop "for", è il momento di metterlo all'opera.
  2. 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

  1. Una volta che tutti hanno il loro effetto di accensione cinematografica, riflettete sullo strumento che lo ha reso possibile.
  2. 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).

Presenta Piano Lezione Modellino di cartone

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:

  1. Variabile Contatore: Una variabile temporanea che il loop usa per tenere il conto (per esempio, i, riga, colonna).
  2. Valore Iniziale: Il numero da cui la variabile contatore inizia a contare (per esempio, 1).
  3. Valore Finale: Il numero al quale il loop si fermerà (per esempio, 7).
  4. 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 blocco disegna viene 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

  1. Ti serviranno 2 componenti: LivelloRumore e DisegnoLED.
  2. 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).