Attenzione: dal mese di novembre 2018 è stato attivato il sito researchinaction.it/ su cui stiamo trasferendo tutto il materiale presente in questo blog. researchinaction.it/ diventerà il sito principale per il progetto RiA.

Alcuni dei problemi proposti quest’anno alle ragazze e ai ragazzi che partecipano alle attività del progetto RiA – Research in Action richiederanno, per la loro soluzione, di sviluppare procedure e algoritmi o di costruire una libreria di funzioni come strumento per esplorare un certo campo della matematica. Una vera sfida perché, fino a oggi, nessuno degli studenti si è mai cimentato con un linguaggio di programmazione.
Ecco perché ci è venuto in mente di usare
Blockly: un sistema, una libreria – open source – per implementare un editor che permetta, aggregando e manipolando blocchi di programma (veri e propri, non blocchi intesi in senso metaforico), di generare codice, completo e pronto per l’uso, in svariati linguaggi di programmazione. È un progetto per
sviluppatori Google che rende disponibile una libreria in
Javascript da aggiungere alla propria applicazione o, come sarà nel nostro caso, al proprio sito web in modo da avere a disposizione un editor visuale già pronto. Una demo funzionante e abbastanza completa di Blockly si puà trovare qui:
blockly-demo.appspot.com/static/demos/code/index.html.
Blockly è alla base di molte applicazioni. Per esempio
App Inventor, il sistema di sviluppo didattico del MIT, o
Scratch, per introdurre al coding, sempre sviluppato dal MIT, hanno al loro interno Blockly.
Un esempio
Qui di seguito una schermata di Blockly, così come disponibile all’indirizzo
blockly-demo.appspot.com/…/index.html, in cui abbiamo costruito una piccola applicazione per verificare la divisibilità di una coppia di numeri. L’applicazione vera e propria è, in figura, il primo insieme di blocchi mentre il test di divisibilità è implementato dalla funzione Divisibile – il secondo insieme di blocchi. La funzione chiede due parametri – dividendo e divisore – e controlla se il resto della divisione di dividendo per divisore è zero (è il blocco di colore blu con l’etichetta remainder of). In caso affermativo i due numeri sono divisibili.
 |
| Un’applicazione per testare la divisibilità realizzata con Blockly |
La traduzione
Il codice realizzato attraverso i blocchi di Blockly può essere tradotto in un linguaggio a scelta (nelll’esempio mostrato qui sopra si notano le etichette per la traduzione in Javascript, Python, PHP, Lua, dart e XML). Qui di seguito mostriamo la nostra piccola applicazione in Python così come tradotta da Blockly.
dividendo = None
divisore = None
def text_prompt(msg):
try:
return raw_input(msg)
except NameError:
return input(msg)
"""
Determina se dividendo è divisibile per divisore controllando
se il resto della divisione del primo per il secondo è zero.
Restituisce true se dividendo è divisibile per divisore, false altrimenti
"""
def Divisibile(dividendo, divisore):
if dividendo % divisore == 0:
return True
return False
dividendo = float(text_prompt('Inserire il dividendo'))
divisore = float(text_prompt('Inserire il dividendo'))
print(Divisibile(dividendo, divisore))
Espansioni
Il programmatore che vuole aggiungere Blockly alla propria applicazione ha il completo controllo sull’editor, sulla disposizione e l’organizzazione dei blocchi e, soprattutto, può aggiungere blocchi del tutto originali codificandoli in Javascript. Per l’utente finale, che svilupperà usando l’editor visuale, i nuovi blocchi saranno in tutto e per tutto simili a quelli predefiniti.