di

Morena De Poli

Attribuzione – Non commerciale – Condividi allo stesso modo 4.0 Internazionale

COS’E’ MICRO:BIT

Si tratta di una schedina programmabile attraverso connessione usb al pc che integra accelerometro/bussola, termometro, bluetooth, 2 bottoni programmabili e una matrice composta da 25 led. E’ stata commissionata dal Ministero dell’Istruzione inglese ad un gruppo di aziende tra le quali Micro BBC e Samsung e regalata a tutti gli studenti di 11 anni per diffondere le conoscenze di base del coding e di Internet of Thing.

microbit1

Il percorso didattico descritto di seguito è rivolto a docenti di scuole di ogni livello a partire dalla primaria fino alla secondaria di secondo grado. E’ infatti suddiviso in step di livello via via più complesso; i docenti potranno realizzare l’attività fino allo step che riterranno più idoneo per i propri alunni, individuando gli strumenti didattici più adeguati.

ACCENSIONE/SPEGNIMENTO DEI LED, QUANTI MODI POSSIBILI?

STEP 1

I 25 led di micro:bit, distribuiti in una matrice 5×5, possono essere accesi in varie configurazioni; ogni led viene individuato dalla sua posizione di colonna x e di riga y che variano entrambe da 0 a 4:

  • (0,0) il led in alto a sx

  • (2,2) il led al centro della matrice

  • (0,4) il led in basso a sx

  • (4,0) il led in alto a dx

  • (4,4) il led in basso a dx

Nella programmazione di micro:bit con Block Edit di JavaScript, alcune configurazioni vengono messe a disposizione nel menu Basic e una di queste è:

microbit2

Ecco tutte le diverse configurazioni disponibili:

microbit3

Ovviamente, queste 40 icone, come vengono denominate da micro:bit, rappresentano solo alcuni dei tanti modi di accende i 25 led; ma, avendo a disposizione i blocchi

microbit4

è possibile accendere/spegnere a piacimento ciascuno dei 25 led della matrice indicando le sue coordinate x,y.

Ma, in quanti diversi modi si possono configurare i 25 led?

Si potrebbe tentare un approccio diretto alla risoluzione di questo problema, cioè elencare tutte le diverse configurazioni per poi contarle; ma ci si accorge presto che tale strategia risolutiva è improponibile!

Quindi, l’approccio deve essere di altro tipo, e l’induzione ci viene sicuramente in aiuto.

Per iniziare mettiamo in sequenza i led ponendo quello in alto a sinistra, di posizione (0,0) nella matrice, come primo led, quello alla sua dx, di posizione (1,0), come secondo, …, quello di posizione (0,1) sarà il sesto e così via.

Si propone di eseguire questa operazione perché lavorare con una sequenza, cioè una struttura a 1 dimensione, risulta più semplice, soprattutto per i più piccoli, invece che operare su di una matrice a 2 dimensioni.

Ora, partiamo dal primo led della sequenza e osserviamo che il suo stato può assumere i due valori Acceso/Spento e così pure tutti gli altri.

Si può quindi costruire il seguente schema:

microbit5

Abbiamo ottenuto uno schema ad albero binario nel quale si possono individuare tanti percorsi; seguendo ciascuno di essi otteniamo le diverse configurazioni dei led.

Ad esempio, seguendo ad ogni livello il ramo superiore troviamo la configurazione AAA … AAA, cioè 25 led tutti accesi; seguendo invece sempre il ramo inferiore troviamo SSS … SSS, cioè la configurazione dei 25 led spenti.

Proviamo ora a contare tutte le configurazioni, ma ancora una volta ci accorgiamo che l’approccio diretto non è possibile e che quello induttivo semplifica le cose:

Primo

led

Aggiungo secondo

led

Aggiungo

terzo

led

Aggiungo

25-esimo

led

2 configurazioni

=

21

4 configurazioni

=

2 x 2

=

22

8 configurazioni

=

4 x 2

=

23

225

configurazioni

=

33΄554΄432

A

S

AA

AS

SA

SS

AAA

AAS

ASA

ASS

SAA

SAS

SSA

SSS

PER OVVI MOTIVI NON VENGONO SCRITTE TUTTE LE SEQUENZE!!!

Riassumendo, ogni volta che aggiungiamo un livello all’albero binario, cioè i due possibili stati di un nuovo led della sequenza, possiamo osservare che il numero dei percorsi possibili raddoppia, e quindi anche il numero delle configurazioni dei led fino a quel momento considerati.

Osservazione importante:

l’approccio induttivo ci ha permesso di individuare come cambia il numero delle configurazioni passando da un livello all’altro (raddoppia); è stato quindi possibile iniziare dal primo led, con 2 configurazioni, per trovare tutte le altre: 4,8,16, … configurazioni.

L’algebra, invece, ci ha consentito di esprimere sotto forma di potenza la numerosità delle configurazioni individuate ad ogni livello:

microbit7

e quindi di esprimere sotto forma di potenza anche la numerosità all’ultimo livello 225, pur non avendo calcolato quella del livello precedente per poterla raddoppiare.

La conoscenza del calcolo combinatorio ci permette di affermare che il numero di configurazioni 225 si può anche determinare chiamando in causa il concetto di disposizioni con ripetizioni di n elementi di classe k dove, in questo caso, n=2 (Acceso/Spento) e k=25 (i led):

D’ 2,25 = 225

STEP 2

Il seguente codice nel linguaggio a blocchi di JavaScript permette di ottenere sulla matrice di micro:bit tutte le possibili configurazioni di led Accesi/Spenti, una ad una partendo da quella “tutti led spenti”. Si passa poi alla configurazione successiva premendo il bottone A di micro:bit.

microbit9

L’idea risolutiva applicata deriva dalla considerazione che sostituendo lo stato “led Acceso” con 1 e “led Spento” con 0, le sequenze A/S diventano sequenze 0/1, cioè rappresentazioni binarie a 25 cifre.

Vengono così individuati tutti i numeri binari compresi tra 000…000 e 111…111 i quali corrispondono alle codifiche binarie dei corrispondenti numeri decimali da 0 fino a 225-1.

Il codice a blocchi, all’avvio (on start), assegna alla variabile num il valore 0.

Alla pressione del bottone A, dapprima tutti i led eventualmente accesi vengono spenti, poi il contenuto di num viene trasformato nel corrispondente valore binario a 25 cifre mediante 2 cicli di 5 iterazioni ciascuno (5×5=25); il valore della cifra binaria ottenuta ad ogni iterazione discrimina tra “led Acceso”, quando vale 1, e “led Spento”, quando vale 0; la posizione del led da accendere è data dai valori degli indici i e j dei due cicli for.

Conclusi i due cicli for, e quindi accesi tutti i led necessari nella matrice, la variabile num viene incrementata per poter visualizzare la configurazione successiva alla prossima pressione del bottone A.

Si fa presente che nella codifica binaria i successivi del numero 000 … 000 sono:

000 … 001

000 … 010

000 … 011

000 … 100

000 … 101

e così via.

Ma l’algoritmo applicato ricava le cifre in ordine inverso, da destra verso sinistra.

DAL CONTEGGIO ALLA PROBABILITA’

STEP 3

Si immagini ora di aver premuto un certo numero di volte il bottone A e di aver ottenuto una certa configurazione dei 25 led.

Scelto uno qualunque di essi, viene spontaneo chiedersi: qual è la probabilità di trovarlo acceso?

Secondo la definizione classica di probabilità

microbit10,

essendo 2 (Acceso/Spento) i possibili stati di un led, la probabilità che esso sia acceso è pari a 1/2 , e ovviamente anche quella di trovarlo spento vale 1/2 . Si dice quindi che i due stati sono equiprobabili.

Applichiamo ora un nuovo algoritmo che accenda in modo casuale uno qualsiasi dei 25 led della matrice; il codice è il seguente:microbit11Acceso un led con coordinate casuali, si attende e poi si spengono tutti i led prima di accenderne uno nuovo.

Qual è ora la probabilità che venga acceso proprio quello da noi precedentemente osservato?

Applicando nuovamente la definizione classica di probabilità, tra i 25 casi possibili (i led da accendere) ne consideriamo uno solo come favorevole (il nostro led osservato) e la probabilità vale quindi 1/25 .

Osserviamo ora che il blocco che permette di programmare micro:bit per accendere un led prevede l’utilizzo delle sue due posizioni all’interno della matrice 5×5, posizione x di colonna e y di riga:

microbit12

Pertanto, l’individuazione del led da accendere viene realizzata generando in modo casuale separatamente le due posizioni.

Dato che ciascuno degli indici che individuano le posizioni può assumere i 5 valori 0,1,2,3,4 , e che un buon generatore di numeri casuali deve restituire valori uniformente distribuiti (cioè aventi tutti la stessa probabilità), la probabilità di generare uno di tali valori vale 1/5 .

Come già sottolineato, ciò vale sia per l’indice di riga che per quello di colonna; tenendo ora in considerazione che l’operazione di generazione di ciascun indice è indipendente da quella dell’altro, si può affermare che la probabilità di ottenere una qualsiasi delle 25 coppie di numeri che individuano le posizioni dei led sia il prodotto delle due probabilità microbit13.

STEP 4

Ritorniamo alle diverse configurazioni dei 25 led; le abbiamo contate e abbiamo trovato che sono 225.

Quindi, qual è la probabilità di ciascuna di esse?

Superati gli step precedenti e approfondita la definizione classica di probabilità, la risposta risulta immediata se si considera, come appena fatto, l’equiprobabilità dei due stati di ciascun led che rende anche le diverse configurazioni equiprobabili:

microbit14

Ma possiamo vedere le cose anche da un altro punto di vista per dimostrare questa l’affermazione.

Osserviamo dapprima come possono essere descritte le varie sequenze.

Esse sono tutte riconducibili al seguente schema:

AA … AASS … SS

dove ovviamente A sta per “led Acceso” e S per “led Spento”.

Poichè la numerosità totale è n = 25 , posto k = “n° led Accesi” si ha che n – k rappresenta il numero di led spenti.

Considerato che l’operazione di accesione/spegnimento di un led è indipendente dalla stessa per tutti gli altri, per quanto già detto sulla probabilità di eventi indipendenti, e per l’equiprobabilità dei due eventi “led Acceso” e “led Spento”, si ottiene che la probabilità che si presenti una sequenza con k led Accesi e n – k led spenti vale

microbit15

ed essendo k + n – k = n, per le proprietà delle potenze tale valore è proprio uguale a microbit16, come già trovato.

DALLA PROBABILITA’ AL MODELLO

STEP 5

Ancora, un altro passaggio ci porta alla domanda “tra le 225 sequenze, quante sono quelle con k led accesi, in qualunque posizione essi si trovino?”

Abbiamo già visto che esiste una sola sequenza con 0 led accesi e così pure una sola con tutti i led accesi; le sequenze con 1 led acceso sono 25 poiché potrebbe essere acceso il primo, ma anche il secondo, e così via fino al 25-esimo.

Ma ancora una volta ci accorgiamo che non è possibile procedere per elencazione! Quindi ci viene nuovamente in aiuto il calcolo combinatorio poiché il numero di diverse sequenze di n elementi con k elementi di un tipo (e conseguentemente n – k elementi di un altro tipo) è rappresentato dalle combinazioni di n elementi presi k a k, dette anche coefficienti binomiali

microbit17

Proviamo a scrivere del codice per micro:bit con Block Edit di JavaScript per contarle, modificando quello precedente come segue:

microbit18

All’avvio, oltre ad inizializzare la variabile num a 0, inizializziamo allo stesso valore tutti i 25 elementi di una lista di nome list; questa struttura è predisposta a contenere, nei suoi elementi, rispettivamente il numero di sequenze con 0,1,2, … ,24,25 led accesi.

Il codice da eseguire alla pressione del bottone A è stato modificato introducendo la variabile conta che permette di contare il numero di led accesi nella sequenza costruita; alla fine dell’operazione di accensione di tutti i led necessari, viene incrementato nella lista list l’elemento di posizione pari al numero dei led accesi.

microbit19

Premendo il bottone B vengono quindi mostrati i conteggi delle sequenze con uguale numero di led accesi generate fino a quel momento.

microbit20

Sarà facile verificare che i valori ottenuti con la formula del calcolo combinatorio coincidono con quelli ottenuti con il codice appena analizzato.

Ancora un piccolo passo per realizzare la costruzione della variabile casuale binomiale, cioè quella che conta il numero di successi in n prove ripetute, quindi indipendenti come lo sono i nostri 25 led.

In questo caso si può considerare evento “successo” il presentarsi di “led Acceso” e le n prove sono appunto i 25 led della matrice di micro:bit.

Essendo la probabilità di successo uguale a quella di insuccesso, come avviene nel lancio di una moneta dove la probabilità che esca una faccia è uguale all’altra (se la moneta non è truccata), la distribuzione di probabilità di questa variabile binomiale è simmetrica.

La sua distribuzione si ottiene moltiplicando la probabilità di ciascuna sequenza microbit16per il numero di sequenze che contengono lo stesso numero di led accesi.

Si ottengono così la tabella e il relativo grafico della distribuzione di probabilità della variabile casuale binomiale che conta il numero di led accesi nella matrice 5×5 di micro:bit:

microbit22

microbit23

CONCLUSIONI

Il calcolo è un elemento fondamentale per determinare la probabilità di un evento, quindi questa proposta didattica si pone come primo obiettivo proprio l’imparare a contare in modo diverso da quello normalmente utilizzato, per elencazione. Ciò permette di sviluppare la capacità di individuare strategie risolutive a carattere induttivo e quindi consente di allargare la categoria di problemi da poter affrontare e risolvere.

L’esperienza nel calcolo delle probabilità permette di prendere consapevolezza del significato delle molte affermazioni spesso incontrate anche nella vita quotidiana, in particolare sui mass media e sul web.

L’ultima parte della proposta permette di sviluppare la capacità di descrivere un fenomeno attraverso un modello; far proprio il modo in cui tale modello è stato costruito, consente di riapplicarlo non appena viene riconosciuta la situazione che lo genera.

Il tutto è accompagnato dalla programmazione con micro:bit, in particolare con Block Edit di JavaScript. É evidente che prendere confidenza con questa schedina e con la sua programmazione consente di iniziare a rapportarsi con la tecnologia dell’Internet Of Thing, attraverso la quale si apre un mondo di possibilità. Ogni docente può comunque trovare il proprio modo di declinare i contenuti proposti, sulla base delle proprie esperienze didattiche, e può realizzare unplugged i vari step senza compromettere in alcuna misura la valenza didattica dei contenuti.

Vai alla barra degli strumenti