< Unità 3 - Animazioni e giochi interattivi ('22-'23)

Lezione 18 - Velocità

45 minuti

Panoramica

Domanda del giorno: come possono i linguaggi di programmazione nascondere schemi complicati in modo che sia più facile programmare?

Dopo un breve ripasso di come lo schema a contatore possa essere usato per muovere i personaggi, la classe viene introdotta all’idea di nascondere questi schemi all’interno di una singola istruzione, al fine di gestire meglio la complessità dei programmi. Poi gli studenti si spostano in Code Studio per provare nuove istruzioni che impostano direttamente la velocità di un personaggio ed imparano ad attribuirgli comportamenti più complessi.

Traguardo di apprendimento

Questa lezione affronta uno dei temi principali del capitolo: un comportamento complesso può essere rappresentato in modi più semplici per semplificare la scrittura e il ragionamento sul codice.

In questa lezione agli studenti viene insegnato a usare i blocchi di velocità così da semplificare il codice necessario per spostare un personaggio sull'area dello schermo. Questo segna un cambiamento nel modo in cui vengono introdotti i nuovi blocchi. Mentre in precedenza i blocchi venivano presentati come soluzioni per abilitare comportamenti completamente nuovi, ora vengono presentati come una semplificazione del codice che gli studenti avrebbero potuto scrivere con i blocchi precedentemente disponibili. Nelle prossime lezioni, gli studenti vedranno come questo metodo di gestione della complessità consente loro di determinare dei comportamenti dei personaggi che siano più interessanti.

Opportunità di valutazione

  1. Usare i blocchi velocity e rotationSpeed per creare e modificare i movimenti dei personaggi

    Vedi l'esercizio 9 su Code Studio. (L'esercizio 5 può essere utilizzato per verificare la velocità di rotazione.)

  2. Descrivere i vantaggi della semplificazione del codice utilizzando blocchi di livello superiore

    Nel riepilogo, controlla le descrizioni degli studenti riguardo ai blocchi che creerebbero e il motivo per cui vorrebbero crearli.

Mappatura delle competenze

Mappatura completa del corso
CSTA K-12 Computer Science Standards (2017)
    • 2-AP-11 - Create clearly named variables that represent different data types and perform operations on their values.
    • 2-AP-12 - Design and iteratively develop programs that combine control structures, including nested loops and compound conditionals.
    • 2-AP-13 - Decompose problems and subproblems into parts to facilitate the design, implementation, and review of programs.
    • 2-AP-16 - Incorporate existing code, media, and libraries into original programs, and give attribution.
    • 2-AP-17 - Systematically test and refine programs using a range of test cases.
    • 2-AP-19 - Document programs in order to make them easier to follow, test, and debug.

Pianificazione

Obiettivi

Gli alunni saranno in grado di:
  • descrivere i vantaggi della semplificazione del codice utilizzando blocchi di livello superiore
  • usare i blocchi velocity e rotationSpeed per creare e modificare i movimenti dei personaggi

Preparazione

  • Controlla il forum "Aula insegnanti" per insegnanti verificati per trovare strategie o risorse aggiuntive condivise dagli altri colleghi insegnanti
  • Se stai facendo una lezione virtuale, valuta la possibilità di controllare le nostre Modifiche alla lezione virtuale

Collegamenti

Attenzione! Fai una copia di tutti i documenti che intendi condividere con gli alunni.

Per gli insegnanti
Per gli studenti

Guida didattica

Preparazione (5 minuti)

Dimostrazione: chiedi a un volontario di venire davanti alla classe e fare da «personaggio». Supponiamo che darai indicazioni al personaggio come se fossi un programma di Sviluppo Giochi.

Quando il tuo studente è pronto, rivolgiti verso di lui in modo che abbia un po' di spazio davanti a sé e chiedigli di «Avanti di 1". Dovrebbero fare un passo avanti. Quindi ripeti l'istruzione più volte, ogni volta aspettando che lo studente vada avanti di 1 passo. Dovresti fare in modo che la ripetitività di queste istruzioni sia chiara. Dopo che il tuo studente ha completato questa attività, invitalo a tornare al punto di partenza. Questa volta ripeti la dimostrazione chiedendo allo studente di «Vai avanti di 2" e chiedi allo studente di fare 2 passi ogni volta. Una volta che lo studente lo ha fatto più volte, chiedi alla classe di fargli un applauso e di invitarlo a tornare al suo posto.

Discussione: stavo solo dando istruzioni al mio «personaggio», ma sembravano diventare piuttosto ripetitive. Come avrei potuto semplificare le mie istruzioni?

Discussione: concedi agli studenti un minuto per scrivere i pensieri prima di invitarli a condividerli con un compagno. Poi chiedi alla classe di condividere i propri pensieri. Potresti voler scrivere le loro idee alla lavagna.

Scopo della discussione

Obiettivo: la dimostrazione precedente avrebbe dovuto rafforzare il fatto che dare ripetutamente le stesse istruzioni è qualcosa che non faresti mai nella vita reale. Troveresti invece un modo per mostrare che l'istruzione deve essere ripetuta, ad esempio «continua ad andare avanti di 1».

Osservazioni

I linguaggi di programmazione hanno anche dei modi per semplificare le cose per noi. Oggi esamineremo alcuni blocchi di Sviluppo Giochi che nascondono la complessità di alcuni schemi di programmazione al fine di semplificare la vita ai programmatori.

Domanda del giorno: come possono i linguaggi di programmazione nascondere schemi complicati in modo che sia più facile programmare?

Attività (35 minuti)

Osservazioni

Un modo per semplificare queste istruzioni è semplicemente dire al nostro «personaggio» di continuare a muoversi di 1, 2 o di quanti passi vogliamo. Come esseri umani, ciò renderebbe le istruzioni più facili da capire e, come stiamo per vedere, esiste anche un modo simile per semplificare il nostro programma.

Transizione: fai andare gli studenti su Code Studio

Suggerimenti didattici

Guida agli esercizi di programmazione: ulteriori indicazioni per gli esercizi di programmazione sono fornite nella Guida CSD agli esercizi di programmazione. Questo documento include strategie e buone pratiche per agevolare lo svolgimento degli esercizi di programmazione con gli studenti.

Girando tra i banchi: questi esercizi introducono le proprietà velocityX, velocityY e rotationSpeed di cui hai appena parlato con gli studenti. Rivolgiti agli studenti per vedere come stanno e tenere traccia di quando tutti sono arrivati alla fine dell'esercizio 10.

Domande da considerare con il video:

  • Perché usare la proprietà "velocità" invece dello schema a contatore?
  • Fai un esempio di un schema a contatore e di come potresti usare al suo posto la proprietà velocità.
Scopo della discussione

Obiettivi della discussione

Potrebbe non essere ovvio per gli studenti il motivo per cui il blocco di velocità è così potente. La risposta immediata è che il blocco di velocità permette al programmatore di impostare la velocità all'inizio del programma e di non doversi preoccupare dello schema del counter all'interno del ciclo di 'disegna' (poiché Sviluppo Giochi se ne occuperà). Se gli studenti hanno difficoltà a pensare a situazioni in cui il blocco di velocità fornisce un grande vantaggio, assicurate loro che nella prossima lezione affronteranno alcuni problemi per i quali avranno bisogno di questo blocco.

Quando gli studenti ti propongono degli esempi, cerca di suscitare risposte che usino sia numeri positivi che negativi, e che usino le posizioni x e y così come la rotazione del personaggio.

Suggerimenti didattici

All'interno e all'esterno della funzione ciclica draw()

Questo è un buon momento per ricordare agli studenti che il codice che si trova all'esterno della funzione ciclica draw() viene utilizzato per configurare il programma. È in base al modo in cui vuoi che il tuo programma si avvia. Il codice all'interno della funzione ciclica draw() riguarda le cose che cambiano durante l'esecuzione del programma, durante l'interazione dell'utente.

Potrebbe esserci una certa confusione sul fatto che i nuovi blocchi siano animati (cambio di posizione) e tuttavia siano rimasti fuori dal ciclo di disegno fino a questo punto. Questo perché fino a questo punto, la velocità è stata impostata all'inizio del programma e non è stata modificata. Se gli studenti vogliono che la velocità cambi durante il programma, dovranno agire all'interno deldella funzione ciclica draw().

Opportunità di valutazione

Valutazione formativa: questo esercizio può essere utilizzato come valutazione formativa. Nell'esercizio viene fornita una tabella con i criteri di valutazione e agli studenti può essere fornito un riscontro scritto. Clicca qui per saperne di più su come fornire riscontri agli studenti.

Conclusione (5 minuti)

Diario

Discussione: hai imparato alcuni nuovi blocchi oggi. A prima vista, questi blocchi facevano lo stesso genere di cose che avevamo già fatto con lo schema a contatore, ma ci hanno reso le cose più semplici. Mentre risolvevi gli esercizi, però, hai iniziato a fare alcuni movimenti interessanti che prima non eravamo stati in grado di fare.

Opportunità di valutazione

Mentre gli studenti descrivono i blocchi che creerebbero, assicurati che mettano in relazione il codice specifico che un blocco utilizzerebbe con il concetto di livello superiore di ciò che farebbe. Ad esempio, un blocco «velocity» sposterebbe un personaggio sullo schermo e includerebbe blocchi che utilizzano lo schema a contatore su una proprietà di posizione.

Gli studenti dovrebbero descrivere i vantaggi di avere questi blocchi, come non dover riscrivere continuamente il codice o semplificare la lettura di ciò che il programma sta facendo.

  • Descrivi uno di quei movimenti e come lo hai prodotto.
  • Descrivi un altro blocco che vorresti avere.
    • Come lo chiameresti?
    • Cosa farebbe?
    • Quale codice nasconderebbe al suo interno?
    • Come ti sarebbe di aiuto?

Osservazioni

Tutti i movimenti che abbiamo fatto oggi sono possibili senza i nuovi blocchi, ma sarebbe molto complicato programmarli. Uno dei vantaggi dei blocchi come "velocità" è che quando non dobbiamo preoccuparci dei dettagli di semplici movimenti e azioni, possiamo usare quella potenza cerebrale extra per risolvere problemi più complicati. Man mano che crei il tuo gioco a scorrimento laterale, continueremo a cercare nuovi blocchi che semplificano le cose, così possiamo creare giochi sempre più complessi.

Creative Commons License (CC BY-NC-SA 4.0).

Questo compito è disponibile previa Licenza Creative Commons (CC BY-NC-SA 4.0).

Se sei interessato ad utilizzare i materiali di Code.org per scopi commerciali, contattaci.