vuoi
o PayPal
tutte le volte che vuoi
Competenza digitale: Coding con Scratch
Introduzione
Il Piano Nazionale Scuola Digitale (P.N.S.D) , varato ad ottobre 2015, introduce l’importanza delle competenze digitali fin dalla scuola primaria, in cui i bambini oltre a saper leggere, scrivere e far di conto devo acquisire competenze informatiche.
La logica computazionale nei primi anni di scuola, che rientra in una delle azione del PNSD, si può attuare con SCRATCH, un programma ideato da Mitchel Resnick dell’Università Massachussets Institute of Technology ( M.I.T.) di Boston.
SCRATCH è un software grafico di programmazione, lo si può scaricare gratuitamente per accedervi in modalità offline oppure ci si può registrare sempre gratuitamente alla piattaforma https://scratch.mit.edu e lavorare così in modalità online, dove ci si può unire alla comunità di SCRATCH per condividere i propri progetti e navigare i progetti della comunità nel WEB.
Programmare con Scratch risulta semplice, intuitivo e veloce, si può iniziare creando storie interattive, giochi, animazioni grafiche (come ad esempio il biglietto di auguri per la festa della mamma), fino ad arrivare a implementare degli algoritmi risolutivi di problemi veri e propri.
Quindi Scratch, molto utilizzato nella scuola primaria di primo e secondo grado, diventa versatile anche per gli studenti del biennio della scuola secondaria superiore, offrendo un primo approccio facilitato alla programmazione vera e propria.
L’ambiente di sviluppo di Scratch
L’ambiente di sviluppo di Scratch risulta suddiviso in tre parti:
•Stage: nell’area di sinistra compare il palcoscenico, ossia l’area dove lo sprite, per default il gatto, interagisce ed esegue le istruzione del codice che si alloca nell’area script, ma si possono inserire altri sprite presenti nella libreria apposita, o addirittura disegnarli di nuovi.
•Collezione di blocchi: nell’area centrale sono presenti le istruzioni divise in dieci categorie connotate da altrettanti colori, che per essere usati devono essere selezionati e trascinati nell’area di script
•Movimento: istruzioni che permettono il movimento, la rotazione, il cambio della posizione dello sprite nello stage, la cui posizione e caratterizzata dalle due coordinate cartesiane x y.
•Aspetto: istruzioni che danno in output dei messaggi da parte dello sprite, o ne fanno cambiare aspetto.
•Suono: istruzioni che danno in output dei suoni anche precedentemente registrati dal programmatore.
•Penna: istruzione che permettono di scrivere, disegnare sullo stage, ossia viene lasciare traccia della traiettoria dello sprite.
•Variabili e liste: istruzioni che creano nuove variabili.
•Situazioni: istruzioni di inizio esecuzione, …
•Controllo: istruzioni di controllo (repeat, if then …)
•Sensori: istruzioni di read e write.
•Operatori: operatori aritmetici, operatori relazionali, operatori logici …
•Altri blocchi: istruzioni che creano nuovi blocchi.
•Script: nell’area di destra viene scritto in codice vero e proprio, con la tecnica del drag and drop i mattoncini vengono trascinati ed impilati, essi vengono scelti tra i vari blocchi d’istruzioni dall’area centrale delle dieci collezioni su citate.
ü PENNA: istruzione che permettono di scrivere, disegnare sullo stage, ossia viene
lasciare traccia della traiettoria dello sprite.
ü VARIABILI E LISTE: istruzioni che creano nuove variabili.
ü SITUAZIONI: istruzioni di inizio esecuzione, …
ü CONTROLLO: istruzioni di controllo (repeat, if then …)
ü SENSORI: istruzioni di read e write.
ü OPERATORI: operatori aritmetici, operatori relazionali, operatori logici …
ü ALTRI BLOCCHI: istruzioni che creano nuovi blocchi.
SCRIPT: nell’area di destra viene scritto in codice vero e proprio, con la tecnica del drag
• and drop i mattoncini vengono trascinati ed impilati, essi vengono scelti tra i vari blocchi
d’istruzioni dall’area centrale delle dieci collezioni su citate.
Ad esempio nella figura sovrastante è riportato un progetto dal nome “triangolo”, realizzato da
alunni di una prima classe della scuola secondaria di secondo grado, in cui si pone l’attenzione
sull’istruzione di controllo “se … allora … altrimenti” e sui connettivi logici booleani AND e OR.
Il programma “triangolo” prende in input 3 numeri a,b,c corrispondenti alle misure dei lati di un
triangolo e in output da la classificazione del triangolo in base ai suoi lati (equilatero, isoscele o
scaleno).
Nello stage appaiono memorizzati i valori delle variabili a,b,c corrispondenti alle misure dei lati del
triangolo, ed è riportata l’output del programma, esplicitato sotto forma di fumetto del gatto;
nell’area centrale sono evidenziate le istruzioni di movimento, anche se nessuna di esse e riportata
nel codice, il gatto rimane fermo; 3
nell’area di destra è riportato il codice del programma, evidenziato in giallo poiché in esecuzione.
L’esecuzione del programma viene avviata cliccando sul bottone della bandiera verde, presente il
alto allo stage, mentre può essere bloccata dal bottone rosso che si trova affianco.
Alla base della Tecnologia dell’Informazione e della Comunicazione (T.I.C.) c’è il continuo
ampliamento e ottimizzazione di un progetto, e quindi in un certo senso il riutilizzo, si può partire
da una versione base, e poi continuare con lo sviluppo di versioni successive migliorate;
ad esempio il programma “triangolo” non fa il controllo sull’esistenza del triangolo, ossia si
dovrebbe introdurre la condizione della disuguaglianza triangolare: in un triangolo ciascun lato è
minore della somma degli altri due e maggiore della loro differenza (calcolando la differenza fra il
lato maggiore e il lato minore).
L’algoritmo “triangolo” ben posto, che fa un controllo sui dati di ingresso dei lati a, b, c dovrebbe
validare l’esistenza del triangolo testando le seguenti condizioni:
c - b < a < c + b
a – c < b < a + b
a – b < c < a + b
Basta che vengano garantite le sole condizioni sufficienti relative alla somma, per ottimizzare
l’algoritmo: a < c + b
b < a + b
c < a + b
Quindi una versione successiva al progetto “triangolo”, dovrebbe introdurre il blocco di controllo in
cui la condizione del teorema della disuguaglianza triangolare deve testare i tre dati di ingresso, e
mandare in esecuzione il programma solo nel caso di condizione sufficiente verificata.
Quindi il progetto “triangolo” riportato in figura presenta un baco, infatti ad esempio se si danno
come dati di input i tre numeri 1, 2 e 3 l’output è “ il triangolo è scaleno”, mentre dovrebbe essere “i
tre segmenti di misura 1, 2 e 3 non costituiscono i lati di un triangolo”.
ALGORITMI
Sono due le ipotesi dell’etimologia della parola algoritmo:
per una prima ipotesi il termine algoritmo deriva da algorismo, che indica il processo di
• calcolo con i numeri arabi, descritta dall’opera del matematico El-Khwarizmi;
secondo un’altra ipotesi il termine algoritmo deriva dalla deformazione del nome stesso del
• matematico El-Khwarizmi.
Quindi il termine algoritmo è legato a un procedimento aritmetico legato ad operazioni tra numeri
in sistema posizionale oppure al nome del matematico arabo ideatore. 4
In realtà un algoritmo è un procedimento finito non ambiguo, che descrive e risolve uno specifico
problema accogliendo dei dati di input ed elabora i risultato esplicitandolo in dati output.
Fondamentale è dunque formalizzare un algoritmo, il metodo più usato è quello del flowchart, ossia
un diagramma di flusso e una forma grafica, in cui ad ogni blocco corrisponde una funzione
elementare.
Il primo passo fondamentale per una programmazione efficiente è appunto tradurre il problema nel
linguaggio universale rappresentato dal flowchart dell’algoritmo corrispondente, individuando i dati
iniziali e finali con la sequenza di azioni elementari.
Nella seguente tabella è riportato qualche blocco del diagramma di flusso con il corrispondente
blocco di SCRATCH
TIPO DI ISTRUZIONE SIMBOLO BLOCCO SCRATCH
Azione
Comunicazione
d’ingresso i:
Comunicazione di uscita o:
Controllo condizionale
Inizio algoritmo inizio
Fine algoritmo fine 5
ESEMPIO DI PROGETTO SCRATCH PER ALUNNI DELLA SCUOLA PRIMARIA
Con SCRATCH si possono implementare dei videogiochi, ad esempio si può creare il gioco del
pong, con gli sprite palllina e lacchetta (si può disegnare una barretta).
Per iniziare a familiarizzare con l’ambiente di sviluppo di SCRATCH, i bambini posso creare un’
animazione semplicissima che è quella dell’acquario.
Con questa animazione si inizia a prendere dimestichezza con gli sprite e le istruzioni di
movimento.
Si inizia cancellando dallo stage lo sprite del gatto (con il bottone forbici) e si scelgono dalla
libreria degli sprite i pesciolini che vengono così inseriti nello stage.
In questo progetto si inseriscono tre sprite pesci, ma i bambini si posso divertire a inserire anche gli
sprite sub, oppure granchio e stella marina o ancora meglio possono disegnare dei nuovi pesci.
Poi dalla libreria degli sfondi si può scegliere uno sfondo underwater.
A questo punto selezionando uno sprite alla volta si può scrivere lo script corrispondente, tre script
per ciascun pesciolino, al cui interno si trovano le istruzioni “fai … passi”, “rimbalza quando tocchi
il bordo”, “attendi … secondi”, si possono combinare queste istruzioni in modo diverso nei tre
pesciolini per notare le differenze di movimento;
tali istruzioni vanno inserite nella istruzione di controllo per sempre, ovviamente concatenata alla
istruzione che lancia in esecuzione il programma quando si clicca sulla bandierina verde.
Con un’animazione così semplice i bambini iniziano a familiarizzare con l’ambiente di sviluppo,
importante e andare a impostare lo stile di rotazione dello sprite andando a cliccare sulla i in alto a
destra allo sprite (informazione), si può ad esempio impostare la direzione a 102° per avere un
6
movimento trasversale e non orizzontale;
importante è flaggare la doppia freccetta per fare muove il pesce a sinistra e destra, e non la freccia
circolare che ribalterebbe il pesce a testa in giù al rimbalzo.
Ovviamente dopo il primo approccio i bambini saranno liberi di dare avvio alla propria creatività,
inserendo anche dei messaggi vocali da assegnare allo sprite, al fine di costruire dei cartoni animati.
Andando nella cartella Sounds centrale, è possibile registrare una traccia sonora e nominarla;
poi la si può mandare in esecuzione richiamandola col nome assegnato mediante il blocco produci
suono appartenete alla categoria Sound in fuxia, così facendo si può dare voce agli sprite.
Un altro programma semplice che usa le funzioni di movimento è il progetto riportato in alto in
figura, in cui si usano i blocchi penna (mattoncini in verde) per disegnare un quadrato di lato 200
pixel, il blocco pen down scrive, il blocco pen up non scrive mentre il blocco clear cancella il
disegno tracciato. 7
PROGRAMMI PER ALUNNI DELLA SCUOLA SECONDARIA DI PRIMO GRADO
Con gli studenti delle scuole medie si possono risolvere semplici problemi di matematica, come ad
esempio il calcolo della media aritmetica oppure l’area del triangoli.
L’algoritmo della media di tre numeri A,B,C dati in input è rappresentato dal seguente flowchart:
L’approccio alla programmazione con SCRATCH è immediato, programmare diventa un’avventura
stimolate, che non disorienta assolutamente i bambini; impensabile sarebbe per loro implementare
l’algoritmo della media con linguaggio di programmazione tipo il PASCAL oppure il C, con una
sintassi complessa.
Di seguito vengono riportati i codici in Pascal, C e SCRATCH dell’algoritmo della media.
In Pascal il programma si divide in tre parti:
intestazione
• dichiarazione delle variabili
• corpo del programma: le istruzioni sono inserite fra le parole “begin” e “end.”
•
La punteggiatura è fondamentale, si usa il punto e virgola ; (come in C) alla fine di ogni istruzione
(riga), mentre dopo il begin non ci vuole la punteggiatura, mentre dopo l’end finale non si deve
dimenticare il punto. 8
Al posto del begin end nel C si usano la coppia delle parentesi graffe mentre nel Pascal le
{},
parentesi graffe racchiudono dei commenti: in Pacal} oppure (*commento in Pascal*);
{commento
mentre in C per il commento si usa il simbolo di slash nel modo seguente:
/* commento in C */
// commento in C
Le istruzioni di input sono: read (in linguaggio Pascal) mentre scanf (in linguaggio C);
Le istruzioni di output sono: write (in linguaggio Pascal) mentre printf (in linguaggio C).
Codifica dell’algoritmo della media in linguaggio Pascal
program Media;
var A,B,C,Media: real;
begin write (‘dammi il primo numero: ‘);
readln (A);
write (‘dammi il secondo numero: ‘);
readln (B);
write (‘dammi il terzo numero: ‘);
readln (C);
Media:=(A+B+C)/3;
writeln (‘La media è: ‘, Media);
end. Codifica dell’algoritmo della media in linguaggio C
#include<stdio.h>
{ float A,B,C,Media;
printf (“dammi il primo numero: ”);
scanf (“%f”,&A);
printf (“dammi il secondo numero: ”);
scanf (“%f”,&B);
printf (“dammi il rerzo numero: ”);
scanf (“%f”,&C);
Media=(A+B+C)/3;
printf (“La media è: %3.2f”,Media);
return 0;
} 9
Codifica dell’algoritmo della media con SCRATCH
Con la tecnica del drag and drop, usando i blocchi SCRATCH come se fossero dei mattoncini dei
LEGO, si costruire il seguente codice che implementa l’algoritmo che prende in input tre numeri e
ne restituisce la loro media.
ESEMPIO DI PROGETTO SCRATCH PER ALUNNI DELLA SCUOLA SECONDARIA DI
SECONDO GRADO
Il codice che disegna il quadrato si può ottenere
in forma più compatta con l’istruzione ripeti un
numero finito di volte, nel caso del quadrato 4
volte.
Si può disegnare un qualsiasi poligono regolare
di n lati ripetendo l’istruzione repeat n volte e
facendo ruotare di nel numero appropriato di
gradi.
Ad esempio per tracciare un triangolo il blocco
d’istruzione blu muovi 100 passi e ruota 120° va
ripetuta 3 volte.
Si possono usare due cicli repeat annidati per realizzare un programma che disegna un triangolo che
ruota intorno ad un centro, ad esempio nel progetto “arcobaleno” riportato di seguito vengono
10
tracciati 24 triangolo di colori diversi usando il blocco cambia il colore della penna.
Si è dunque gradualmente passati da semplici animazioni, tipo quella dell’aquario, ad
un’animazione che applica un algoritmo semplice ed elegante fondato su conoscenze geometriche.
Analizziamo l’algoritmo “triangolo” che prende in ingresso le misure dei lati di un triangolo e in
output ne classifica la tipologia, ossia restituisce “equilatero”, “isoscele” oppure “scaleno”.
Si usa la struttura della selezione doppia con gli operatori booleani.
L’istruzione di doppia selezione permette di far eseguire alternativamente alcune istruzioni in base
al valore (vero o falso) della istruzione test (o condizione): se l’esito è positivo (vero) si esegue la
istruzione del ramo di sinistra (istruzione 1), se invece è negativo (falso) si esegue l’istruzione nel
ramo di destra (istruzione 2). Il diagramma di flusso
dell’istruzione di selezione doppia,