Matematica e giochi interattivi: perché imparare e insegnare a programmare giochi

One hour of code: così si chiama il programma di educazione alla programmazione informatica, lanciato sul Web a dicembre 2013 per promuovere nelle scuole americane l’insegnamento del coding, il linguaggio del XXI secolo.
Le motivazioni di questa campagna si possono trovare negli slogan e nei video di promozione del progetto, dove testimonial d’eccezione, da Zuckerberg a Gates, invitano a immaginare la programmazione e tutte le attività ad essa inerenti come il lavoro del futuro e come disciplina fondamentale per lo sviluppo del pensiero razionale, delle capacità di problem solving, della comunicazione e della creatività. Sintetizzando con le parole di Zuckerberg: «…tra quindici anni insegneremo a programmare, esattamente come a leggere e a scrivere… e allora ci chiederemo perché non l’abbiamo fatto prima».

Portale dell’iniziativa (anticipata in passato da altre simili quali il corso informatico di Khanacademy, quello di codeacademy o da ambienti per la realizzazione di giochi e animazioni)  è il sito http://www.code.org, dove è possibile iscriversi liberamente e trovare decine di moduli per imparare a scrivere, anche in solo un’ora, applicazioni per giochi, da Snake a Angry Birds, attraverso i linguaggi del web. Imparare a programmare giocando, e soprattutto imparare a “programmare giochi”, sembra essere l’idea vincente del progetto che riconosce al gioco la sua natura di unità problemica, breve e compiuta, a livelli stratificabili di complessità e a forte impatto motivazionale.

Di seguito il video di promozione del progetto via code.org:

Cosa avviene in Italia?
In Italia, lontano da appelli e da campagne di sensibilizzazione, l’insegnamento dell’informatica come disciplina autonoma è presente nei Licei solamente al Liceo scientifico-scienze applicate  dove, tuttavia, le pratiche didattiche appaiono spesso molto eterogenee tra loro. Le Indicazioni Nazionali lasciano aperti ampi spazi interpretativi e la programmazione appare come una tra le molteplici voci degli Obiettivi Specifici di Apprendimento dell’Informatica, voci che vanno dall’uso degli applicativi di tipo Office alla conoscenza delle Reti, dai Sistemi operativi ai Database. In tale situazione, dove presente, sembra prevalere una didattica della programmazione interpretata principalmente come linguaggio della matematica e orientata all’implementazione di algoritmi matematici e numerici (dal calcolo del MCD alle fattorizzazioni fino alle applicazioni di calcolo numerico).
La programmazione di giochi si potrebbe invece proporre come percorso complementare al precedente, perché per sua natura (si pensi alla tipizzazione di dati, alla generazione di numeri pseudocasuali  o all’uso di  vettori o array)  si colloca come un linguaggio nella matematica oltre che nella logica. Gli studenti si trovano a implementare i “propri” algoritmi e a concentrarsi sulla realizzazione di un prodotto a cui sono loro stessi a richiedere buoni standard di prestazione e di fruibilità anche grafica.

Il MIUR – Ministero dell’Istruzione, dell’Università e della Ricerca ed AICA – Associazione Italiana per l’Informatica ed il Calcolo Automatico promuovono, a partire dal 2001, la partecipazione degli studenti della scuola secondaria superiore alle Olimpiadi Italiane di Informatica.
Tutte le informazioni e la storia della manifestazione si trovano qui.

Quali concetti matematici possono trovarsi nella programmazione di giochi interattivi?
Partiamo da alcuni esempi. Un gioco molto diffuso tra gli adolescenti, per il quale sono pronti a inviare sms a emittenti televisive che lo propongono nei sottotitoli dei videoclip musicali, è quello della “affinità di coppia”. Si tratta di inserire il proprio nome insieme a quello del proprio amato o amata per ottenere dal programma risposte sul livello di affinità di coppia e consigli che vanno da «lascia perdere» a «siete fatti l’uno per l’altra!». Nel programmarlo i ragazzi si rendono conto che il programma esegue una semplice operazione sulle stringhe dei nomi (potrebbe anche semplicemente sommarne le lunghezze) ottenendo un numero n, e restituisce un valore v di ingresso a una tabella di possibili risposte mediante l’operazione di resto della divisione intera n mod v. Si tratta in effetti di una semplice applicazione di concetti di algebra modulare che permette di ampliare le competenze matematiche degli studenti.

Un’applicazione della trigonometria è presente invece nei giochi in cui siano richieste rotazioni di linee, utili per esempio a dare l’impressione di girare una lancetta su una ruota. Per dare l’idea del movimento occorre programmare, a ogni frazione di secondo dipendente dalla velocità desiderata, il disegno di un segmento in posizioni circolari successive.
Tale disegno nella maggior parte dei linguaggi di programmazione si ottiene con un’istruzione del tipo Line(xc,yc,xd,yd), dove (xc,yc) indicano le coordinate del primo estremo (coincidente in questo caso con il centro della ruota e fisso) e (xd,yd) le coordinate del secondo estremo in movimento. Per ottenere l’animazione del segmento occorre incrementare ripetutamente l’angolo al centro α  (eventualmente dopo averlo convertito in radianti) applicando le formule
x= xc+l*cos α  e y= y+ l*sin α, dove l é la lunghezza indicativa del segmento-lancetta.

Infine semplici utilizzi  degli angoli di riflessione sono presenti in tutti i giochi di rimbalzo con racchetta e palline, dal Tennis a Bricks. La pallina viene diretta diagonalmente attraverso la combinazione dei due moti orizzontali e verticali e inverte la direzione a  contatto con la racchetta.

Un esempio di programmazione in Visual Basic per la realizzazione di Bricks sviluppato da un ragazzo dell’ITC “Vittorio Emanuele II” di Perugia puoi trovarlo qui. A questo link, invece, un altro esempio di programmazione Visual Basic per sviluppare l’orologio di Windows.

Quale valore culturale è possibile riconoscere a tale approccio didattico?
La storia dell’informatica e della programmazione è parte più generale della storia ricerca  e dello sforzo dell’uomo di conoscere e riprodurre i propri processi mentali e la propria “intelligenza”.
Studiarne le applicazioni può portare gli studenti a risalire e a riconoscere questi percorsi, dallo sforzo di riprodurre la genialità dei campioni di scacchi a quello di simulare il “buon senso” dell’uomo comune (si veda Eliza di Weinzenbaum di cui le attuali applicazioni maggiordomo, quali Siri, sono eredi). Lo sforzo finale resta quello di indagare noi stessi e la nostra dimensione umana perché “software is about humanities“, cioè il software riguarda l’area umanistica.

immagine banner: shutterstock.com
immagine box: http://research.microsoft.com/en-us/projects/kodu/

Per la lezione

Prosegui la lettura

Commenti

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *