Vedere anche: Programmare senza … 2/3 (la seconda puntata) e Introduzione a Blockly, un breve corso per usare subito il generatore di codice.
Le difficoltà maggiori a cui si va incontro quando si affronta un problema proposto dai tutor si presenta quando la soluzione richiede la scrittura di un’app o di un programma, vuoi perché l’applicazione è necessaria per analizzare i dati, vuoi perché è parte integrante della soluzione.
Un problema del primo tipo è Numeri trascendenti: per analizzare la convergenza dei metodi di approssimazione il gruppo ha dovuto sviluppare piccole applicazioni che implementassero gli algoritmi progettati per determinare sempre più cifre decimali del numero trascendente scelto. Al contrario nel laboratorio Allineamento LIDAR la soluzione del problema era l’applicazione stessa, visto che il tutor chiedeva un programma che gestisse i movimenti di uno dei telescopi del LIDAR di Tor Vergata.
Nella nostra scuola, un liceo scientifico ordinario, non è previsto l’insegnamento dell’informatica e quindi ragazze e ragazzi, quando in quarto affrontano il percorso di PCTO descritto in questo sito, potrebbero aver bisogno di competenze che non hanno.
Programmare senza programmare
Il tempo previsto per affrontare il laboratorio, fornire la soluzione al tutor e realizzare il fascicolo non permette di dedicare ore all’apprendimento di un linguaggio di programmazione che spesso ha una curva di apprendimento molto lenta nelle fasi iniziali e non permettendo di far procedere in parallelo formazione (per acquisire le competenze necessarie) e laboratorio.
La soluzione che abbiamo trovato e che a oggi pare funzionare si può descrivere, in modo molto sintetico, in tre step:
- si scrivono una o più procedure in linguaggio naturale (in italiano) cercando di rendere ogni frase quanto più possibile chiara e non ambigua per approssimazioni successive
- le procedure sono implementate utilizzando il generatore di codice Blockly, se la prima fase è stata completata in modo ottimale le frasi in linguaggio naturale trovano una corrispondenza nei blocchi del generatore di codice, l’applicazione è testata all’interno del generatore di codice
- una volta che si è sicuri della correttezza delle procedure si realizza l’app copiando il codice Python generato in un interprete o immergendo il codice Javascript in un documento Google
L’approccio è supportato da un breve corso sull’utilizzo di Blockly composto da una serie di videotutorial che aiutano a passare da una procedura in linguaggio quasi-formale ai blocchi del generatore di codice. Nella stessa pagina sono raccolti gli articoli di questo blog relativi a Blockly.
Una definizione di algoritmo
Alla base di questo meccanismo c’è una semplice definizione di algoritmo, adatta ai nostri scopi: un algoritmo è un insieme finito di istruzioni che realizzano un particolare compito. L’insieme di istruzioni deve soddisfare le seguenti condizioni:
- Input: sono fornite un insieme di zero o più informazioni;
- Output: il risultato consiste di una o più informazioni e/o azioni;
- Chiarezza: ogni istruzione deve essere chiara e non ambigua;
- Finitezza: termina dopo un numero finito di passi;
- Efficacia: ogni istruzione deve essere elementare.
Dove le due condizioni evidenziate in grassetto sono, dal nostro punto di vista, le più importanti ma anche le più difficili da realizzare per studenti e studentesse.
Per chiarire meglio il meccanismo che usiamo per creare le nostre applicazioni seguite questo esempio!