Roberto Piva
Web Designer e Mobile Developer con la passione per l'innovazione!
Roberto Piva
Processo mentale che consente di risolvere problemi di vario tipo, seguendo metodi e strumenti specifici;
la capacità di risolvere un problema pianificando una strategia.
Si tratta quindi di un processo logico-creativo che permette di pianificare una procedura tramite la quale sia possibile raggiungere un risultato o un obiettivo ed è un’abilità trasversale che va sviluppata, stimolata e allenata sin da piccoli.
Il pensiero computazionale non consiste semplicemente nel saper programmare, ma nel pensare a diversi livelli di astrazione.
E’ un’abilità fondamentale per tutti oggigiorno e dovrebbe diventare la quarta abilità di base oltre al saper “leggere, scrivere e fare di conto”.
Il pensiero computazionale è infatti un’abilità trasversale, un processo di problem solving utile in qualunque contesto, che consente di risolvere problemi di varia natura seguendo metodi e strumenti specifici, pianificando una strategia.
Abitua al rigore e quindi rende possibile la creatività, oltre a permette di interagire con persone e strumenti, di fruire delle potenzialità delle macchine quali oggetti capaci di compensare le lentezze o l’imprecisione dell’uomo, se ben programmati.
Seymour Papert nella sua teoria dell’apprendimento, illustra che, attraverso il computer è possibile costruire, manipolare, apprendere, scoprire e persino sbagliare.
Infatti, nella teoria di Papert, l’errore non è visto in ottica negativa, ma come un aspetto costruttivo del processo di apprendimento.
Sbagliare significa esplorare alla ricerca di soluzioni alternative al problema.
Programmare contribuisce alla costruzione delle competenze matematiche, scientifiche e tecnologiche, ma anche allo spirito di iniziativa, nonché all’affinamento delle competenze linguistiche.
Attualmente, il modo più diretto per comprendere il pernsiero computazionale è insegnare a programmare.
Chi programma bene sa:
Esistono ovviamente diverse tipologie di programmazione, basati principalmente sulla
Codice scritto in sequenza per mezzo di un editor di testo
Istruzioni rappresentate da blocchi (di testo o veri e propri) che si possono trascinare in un’area di lavoro.
I blocchi possono essere collegati tra loro in modo da comporre istruzioni.
Questa tipologia di programmazione si basa dunque su uno spazio di lavoro visuale, nel quale si rappresentano i flussi che compongono una programmazione collegando vari componenti insieme in semplici diagrammi.
Per esempio, possiamo connettere un bottone (input) con una luce al led (output) ed un regolatore di luce che va a gestire gli scambi di informazioni tra i due componenti.
Il software di SAM Labs offre lo “Space”, cioé l’ambiente all’interno del quale operare con dei blocchetti e pulsanti di sistema.
Questa parte hardware di SAM comunica direttamente con il programma grazie alla tecnologia Bluetooth.
Operando a corto raggio, può “trasmettere” direttamente i blocchi SAM nel “SAM Space” passando in pochi passi dal virtuale al reale.
In questo modo estremamente semplice, riusciamo a dimostrare visivamente il passaggio delle informazioni.
[Dimostrazione base]
Quello che abbiamo appena visto è un modello di programmazione nel quale le icone dei blocchetti si scambiano informazioni o le ricevono.
Quindi il programma non è una sequenza di istruzioni come accade nella programmazione tradizionale, ma è
caratterizzato da un insieme di flussi di dati che vengono scambiati tra le icone dei blocchetti con diverse funzioni.
Usiamo delle frecce di connessione, dove i nodi sono le icone dei blocchetti ed ai lati vi sono questi collegamenti nei quali passano le informazioni. Si ha quindi la possibilità di “disegnare” le connessioni, invece di doverle scrivere a mano.
Input Comportamenti Output
[Dimostrazione avanzata]
Per questo nuovo flusso, avremo bisogno di inserire nel nostro campo di lavoro due input pressione del tasto.
Questi blocchi ci permettono di attivare la nostra programmazione
semplicemente premendo il pulsante della tastiera che desideriamo. In questo caso, li cambieremo con le iniziali dei colori che vogliamo mescolare, e per farlo basta premere l'icona del blocco e poi la rotellina di impostazioni che compare.
Fatto ciò, andiamo ad inserire due comportamenti di colore, e li impostiamo come prima dei colori scelti.
Per completare la prima parte del flusso, ci basterà inserire l’output LED RGB.
Ora dobbiamo effettivamente miscelare i due colori che abbiamo scelto. Per farlo, andiamo ad aggiungere un blocco logico AND, che creerà una nuova linea di flusso che si attiverà nel momento in cui premiamo i due tasti insieme.
A quel blocco, andiamo a collegare un blocco di colore impostato nella tonalità da noi scelta.
Però c’è un problema: come vedete, i colori al momento funzionano solamente quando teniamo premuti i tasti. Per far si che il colore resti acceso per il lasso di tempo che vogliamo, aggiungiamo tre blocchi logici Hold.
In questo modo, possiamo importare per quanti
secondi, minuti o ore il colore dovrà restare acceso dopo che avremo premuto il tasto di input.
Volendo aggiungere un elemento, possiamo introdurre un altro bottone di output, ovvero un motore!
Quest’ultimo, connesso al Behaviour AND, ci permette di inserire la mozione della miscela dei due elementi che si vanno ad unire per fondersi in uno solo.
Con un piccolo cartoncino, ritagliamo un cerchio e creiamo la ventola che poi andrà inserita nel motore per creare il nostro ventilatore "fai da te".
Ecco come potrebbe essere una classica soluzione:
Che miglioramenti potremmo aggiungere?
Per mantenere acceso il ventilatore senza tener premuto di continuo il bottone, come potremmo modificare il flusso?
Volendo aggiungere un elemento, possiamo introdurre un altro bottone di input, ovvero il sensore di pressione!!
Per questo esercizio, andremo a rappresentare un pannello solare che raccoglie energia.
Iniziamo inserendo un input Sensore di luce, il quale registrerà la luminosità nella stanza, ed un Output LED RGB.
Per connettere un elemento all’altro, andiamo ad aggiungere al foglio di lavoro dei comportamenti: tre Confrontare e tre Colore.
Collegando questi elementi, andiamo a dimostrare che più luce solare c’è, maggiore è l'energia raccolta dal pannello solare.
Invece, se la luce rilevata è inferiore a 20, il LED RGB resterà spento.
Andiamo ora ad aggiungere un output Motore, che andrà a dimostrare il consumo dell’energia rappresentando un ventilatore.
Andremo infatti a farlo funzionare solo quando l’energia raccolta sarà superiore a 50, e per farlo aggiungiamo un Comportamento Filtro, dal menù numeri. Impostandolo tra 50 e 100, il ventilatore si attiverà solo in quei momenti.
Per vedere reazioni in più, possiamo connettere al motore un Comportamento di movimento cambia direzione, che permetterà di cambiare il senso di rotazione del motore.
Per attivare questa funzione, colleghiamo al comportamento l’input di pressione del tasto, chiamandolo V.
Quindi, quando il pannello solare raccoglierà almeno il 50% dell’energia, il ventilatore si attiverà e volendo, possiamo fargli cambiare direzione premendo il tasto V della tastiera.
Volendo modificare il sistema e far partire la macchina solo quando il semaforo è verde, come fareste?
Si può scegliere di modificare i valori, andando ad impostare (ad esempio) il colore rosso per il semaforo quanto la luce percepita dal sensore è inferiore a 50, giallo quando è maggiore di 50 e verde quando è maggiore di 75.
Così abbiamo il cambiamento della luce; per far partire di conseguenza l’auto, dobbiamo aggiungere un comportamento numerico filtro, impostandolo da 75 a 100.
Ad esso, connettiamo il motore precedentemente usato, e ne aggiungiamo un altro (che si muove in direzione opposta, in quanto un motore andrà montato sul telaio al contrario).
Così facendo, quando scatterà il verde, in automatico la macchina andrà avanti!
Per programmare una macchina radiocomandata, andiamo ad inserire un input Potenziometro, che andrà a decidere la velocità della macchina, e due output Motore a corrente continua, che andranno a far girare le ruote.
Andiamo ora a montare le parti sul telaio fornito dal kit, notiamo che i motori per le ruote vanno inseriti in direzioni opposte per lasciare lo spazio alle ruote: di conseguenza, per permettere alla macchina di andare avanti, è necessario aprire le impostazioni del motore montato al contrario, per decidere di farlo ruotare in direzione antioraria.
Per segnalare ulteriormente in che direzione stiamo girando, possiamo collegare ai pulsanti un output LED RGB con due comportamenti colore di tonalità diverse, ognuno connesso ad un pulsante diverso per segnalare sinistra e destra.
In questo modo, però, il colore resterebbe acceso soltanto fino a quando premiamo il pulsante. Per farlo mantenere acceso, aggiungiamo due comportamenti Interruttore Attiva/Disattiva.
E se volessimo impedire che l'auto di scontri con il muro?
La programmazione a blocchi permette di creare giochi, animazioni, storie interattive e sequenze musicali; può anche essere usata per programmare un robot, facendogli compiere determinati movimenti e comportamenti senza dover scrivere codice.
Basta infatti spostare e ordinare in sequenza una serie di blocchi o oggetti grafici su un monitor, come se fossero i pezzi di un puzzle.
Ad ogni blocco corrisponde una funzione che non ha bisogno di essere digitata.
Queste funzioni, in programmazione, vengono poi rese specifiche dalle variabili, ovvero dei contenitori di memoria che vengono “riempiti” con dei dati volatili, cioè che possono cambiare durante l'esecuzione del programma.
Il tutto è reso estremamente semplice dalle etichette degli elementi che hanno già nomi che fanno riferimento ad espressioni o azioni umane come:
le cui variabili vengono gestite in modo intuitivo, facendole combaciare come un puzzle.
La programmazione a blocchi è il modo più facile per avvicinarsi al coding: consente di apprendere le basi della programmazione informatica, aiuta a sviluppare la logica, stimola la creatività ed educa al pensiero computazionale, a ragionare su problemi concreti e sulla loro risoluzione.
Iniziamo con il collegare un blocchetto Motore, che sarà il fulcro del programma.
Per farlo girare, andiamo in “general” e scegliamo “program start”.
In questo modo, il nostro programma si attiverà quando andiamo a premere “Run” in alto nella schermata.
Per portare avanti il flusso, dobbiamo creare una variabile dal menù fucsia e la chiamiamo “Gira”.
Sempre da quel menù, inseriamo nel nostro input il blocco di testo set “Gira”.
Dalla sezione “Math” aggiungiamo “random integer from 1 to 100”, mettendo un valore massimo a 5.
Ora, non ci resta che selezionare la velocità con la quale vogliamo far girare il motore.
Andiamo quindi a prendere dal menù DC Motor un blocchetto set DC Motor Speed to e selezioniamo un valore da 0 a 100.
Se non succede nulla, andiamo nella sezione general ed inseriamo il blocco wait for ... seconds.
Infatti al posto di un valore prestabilito possiamo usare il valore generato casualmente tra 1 e 5: esso sarà il tempo che farà azionare il motore
Per proseguire, dobbiamo poi andare a creare tre variabili, ovvero: Lettere, Simboli e Password. Fatto questo, vedremo comparire una serie di nuove etichette.
Per il prossimo passaggio, ci serviranno 3 “Set Variable to” che, in ordine, andremo a modificare nel menù a discesa con Lettere, Simboli e Password.
Per proseguire, dobbiamo poi andare a creare tre variabili, ovvero: Lettere, Simboli e Password. Fatto questo, vedremo comparire una serie di nuove etichette.
Per il prossimo passaggio, ci serviranno tre “Set Variable to” che, in ordine, andremo a modificare nel menù a discesa con Lettere, Simboli e Password.
Fatto ciò, abbiamo dei pezzi di puzzle da completare: andiamo a prendere due “Prompt for text with message” e li connettiamo a Lettere e Simboli, modificando il prompt finale con “Digita 3 lettere” e “Digita 2 simboli”.
Questi elementi, nel momento in cui faremo partire il programma, faranno comparire a schermo due prompt di testo che pongono le richieste che abbiamo appena scritto, con uno spazio in cui compilare con lettere e simboli a nostro piacere.
Ora non ci resta che programmare quella che va effettivamente ad essere la password.
Per fare ciò, andiamo su Text e prendiamo un “create text with”, e premendo sulla rotella a sinistra andiamo ad aggiungere slot fino a quando non ne avremo 8 disponibili.
Questo andrà a dettare il numero di valori da cui sarà composta la nostra password, che per la sicurezza deve essere composta da 8 caratteri alfanumerici.
Ora, il modo in cui decideremo di andare a disporre i prossimi elementi, sarà il modo in cui ci compariranno poi.
Andiamo infatti ad inserire 5 “In text text get random letter” dal menù Text, e li colleghiamo agli slot 1, 3, 5, 6 e 8. Per completare questi comandi, nel pezzo di puzzle fuxia andiamo a cambiare il valore, in ordine, con: Simboli, 3 Lettere e Simboli.
Nei 3 slot vuoti che rimangono, andiamo ad inserire da Math “random integer from 1 to 100”, e decidiamo un range di valori numerici.
Per completare il tutto, ci maca solo l’input che permetterà di far comparire la password sul microbit; aggiungiamo quindi un “on micro:bit display” e mettiamo la variabile “Password”.
Per poter visualizzare più facilmente la password generata, possiamo aggiungere alla fine delle istruzione “Print” e mettiamo la variabile “Password”.
In questo modo avremo nella console di SAM Blockly la password stampata a monitor.
By Roberto Piva