← TIC — Tecnologie dell'informazione e della comunicazione  ·  Coding e pensiero computazionale

Programmare a blocchi con Scratch

Negli argomenti precedenti abbiamo imparato a progettare un algoritmo a parole, in pseudocodice, e a disegnarlo come diagramma di flusso. Ora è finalmente il momento di farlo davvero eseguire da un computer, usando uno strumento pensato apposta per chi comincia a programmare: Scratch.

Scratch è un ambiente di programmazione a blocchi, creato dal Lifelong Kindergarten Group del MIT Media Lab. Invece di scrivere righe di testo (come si fa nei linguaggi "testuali" come Python o C++), si trascinano e si incastrano dei blocchi colorati, un po' come pezzi di un puzzle: ogni blocco rappresenta un'istruzione, e i blocchi si incastrano solo se ha senso farlo, incastrandosi fisicamente in modo diverso a seconda del tipo. Questo elimina in partenza un problema tipico di chi inizia a programmare in un linguaggio testuale: gli errori di sintassi, come una virgola o una parentesi dimenticata che manda in crisi l'intero programma.

L'ambiente di Scratch è organizzato in tre parti principali, sempre visibili sullo schermo:

  • Il palco (stage): l'area dove si vede il risultato del programma in esecuzione, con uno sfondo
  • Gli sprite: i personaggi/oggetti che si muovono e reagiscono sul palco, ciascuno con i propri costumi (le sue immagini) e i propri suoni
  • Gli script: le sequenze di blocchi incastrati che dicono a uno sprite cosa fare, e quando farlo
Focus

Il vocabolario di Scratch

Palco: l'area dove si vede il programma in esecuzione. Sprite: un personaggio/oggetto che si muove e reagisce, con i propri costumi e suoni. Script: una sequenza di blocchi incastrati che dice a uno sprite cosa fare e quando farlo.

Interfaccia di Scratch: palco, sprite e pannello dei blocchi
Interfaccia di Scratch: palco, sprite e pannello dei blocchiLifelong Kindergarten Group, MIT Media Lab, CC BY-SA 2.0, Wikimedia Commons

I blocchi sono divisi in categorie per colore, in base a cosa fanno: movimento (spostare lo sprite), aspetto (cambiare costume, dire una frase), suono, eventi (quando far partire uno script, ad esempio "quando si clicca la bandiera verde"), controllo (ripetizioni e decisioni), sensori, operatori (calcoli e confronti), variabili.

L'interfaccia di ScratchJr, la versione di Scratch pensata per bambini dai 5 ai 7 anni
L'interfaccia di ScratchJr, la versione di Scratch pensata per bambini dai 5 ai 7 anniTufts University, Scratch Foundation, CC BY-SA 4.0 - Wikimedia Commons

Ti suonano familiari le categorie "controllo" e "operatori"? Sono esattamente le decisioni (i rombi) e le elaborazioni (i rettangoli) che abbiamo incontrato nei diagrammi di flusso: uno script Scratch non è altro che un diagramma di flusso reso eseguibile davvero, blocco per blocco, senza bisogno di tradurlo in un linguaggio testuale.

Proviamo a tradurre in blocchi l'esempio "pari o dispari" del diagramma di flusso dell'argomento precedente: uno script comincia con il blocco evento "quando si clicca la bandiera verde", poi chiede all'utente di scrivere un numero (blocco sensori "chiedi... e aspetta"), poi un blocco di controllo "se... altrimenti" verifica se il resto della divisione per 2 è zero (blocco operatori), e infine due blocchi "aspetto" fanno dire allo sprite "Pari" oppure "Dispari". Stessa identica logica del diagramma di flusso, stessi quattro passaggi nello stesso ordine, solo realizzata con blocchi colorati che si incastrano invece che con forme geometriche disegnate su carta.

Due categorie di blocchi, in particolare, tornano utilissime non appena un programma diventa un po' piu' complesso di questo semplice esempio pari/dispari, con piu' passaggi da ripetere o da tenere memorizzati.

Focus

Cosa sono le variabili in Scratch

Una variabile e' un contenitore con un nome, dove Scratch puo' memorizzare un valore che puo' cambiare durante l'esecuzione del programma, ad esempio un punteggio (Punti) o una vita (Vite). Si crea nella categoria "variabili", e da quel momento compaiono blocchi appositi per assegnarle un valore, aumentarla o diminuirla, e mostrarla sul palco come un piccolo numero visibile.

Focus

"Ripeti" o "ripeti fino a"?

Scratch offre due blocchi di ripetizione diversi: ripeti (10), che esegue un gruppo di blocchi un numero di volte deciso in anticipo, e ripeti fino a, che continua a eseguirli finche' una condizione non diventa vera (ad esempio "ripeti fino a quando il punteggio e' 10"). Il primo si usa quando sai gia' quante volte ripetere; il secondo quando la ripetizione dipende da cosa succede durante l'esecuzione.

Le otto categorie di blocchi in Scratch, ciascuna con il proprio colore
Le otto categorie di blocchi in Scratch, ciascuna con il proprio coloreSchema originale
💡 Lo sapevi?

Perché si chiama "Scratch"?

Il nome viene dalla tecnica dello "scratching" usata dai DJ hip-hop, che mixano e ricombinano frammenti di dischi già esistenti per creare qualcosa di nuovo. Allo stesso modo, in Scratch si combinano blocchi già pronti per creare storie, giochi e animazioni: l'idea, lanciata nel 2007 dal ricercatore Mitchel Resnick e dal suo team al MIT, è che programmare dovrebbe essere creativo e accessibile a chiunque, non solo a chi conosce già un linguaggio testuale.

💡 Lo sapevi?

Milioni di progetti condivisi nel mondo

Scratch non e' solo uno strumento scolastico: sul sito ufficiale scratch.mit.edu sono stati condivisi, negli anni, oltre 100 milioni di progetti da parte di bambini e ragazzi di tutto il mondo, tra giochi, animazioni, storie interattive e simulazioni. E' probabilmente l'ambiente di programmazione per principianti piu' usato al mondo.

💡 Lo sapevi?

Una versione ancora piu' semplice, per i piu' piccoli

Lo stesso team del MIT ha creato anche ScratchJr, una versione di Scratch pensata per bambini dai 5 ai 7 anni, pensata per un tablet e con blocchi ancora piu' semplici e senza testo scritto (solo simboli), perche' i bambini di quell'eta' spesso non sanno ancora leggere bene. E' un modo per introdurre i concetti base della programmazione ancora prima di iniziare la scuola primaria.

La differenza tra ripeti (n) e ripeti fino a, e un esempio di variabile che cambia valore
La differenza tra ripeti (n) e ripeti fino a, e un esempio di variabile che cambia valoreSchema originale
💡 Lo sapevi?

Il "nonno" di Scratch: la tartaruga Logo

Scratch non nacque dal nulla: il suo diretto antenato e' il linguaggio Logo, creato nel 1967 dal matematico e informatico Seymour Papert, che per primo ebbe l'idea di far "disegnare" a una tartaruga virtuale sullo schermo muovendola con semplici comandi. Papert era proprio il mentore di Mitchel Resnick, il creatore di Scratch, al MIT Media Lab: l'idea che programmare debba essere un'attivita' creativa e accessibile fin da piccoli nasce esattamente dalle teorie educative di Papert, decenni prima che Scratch esistesse.

VideoCoding - Tutorial Scratch n.1 (Informatica - Open Source)VideoScratch: le variabili (Fabrizio Basciani)VideoPrimi passi con Scratch: video tutorial in italiano (ABCode)
🧪 Attività pratica⏱ 30 min

Il tuo primo script

Apri Scratch (scratch.mit.edu/projects/editor, non serve registrarsi per provare) e ricostruisci con i blocchi lo script "pari o dispari" descritto in questo argomento: evento di avvio, richiesta del numero, blocco "se... altrimenti" con il controllo sul resto della divisione per 2, e i due messaggi finali. Prova poi a modificarlo aggiungendo un blocco di movimento o di suono quando lo sprite risponde.

Nel prossimo e ultimo argomento di questo intero corso vedremo i tre "ingredienti" fondamentali che, combinati insieme in modi diversi, permettono di costruire qualsiasi programma esistente, anche molto complesso: sequenza, selezione e iterazione.

Palco dove si vede il risultato Sprite personaggio con costumi e suoni Script blocchi incastrati che danno istruzioni ha Evento (avvio) Controllo (se...) Aspetto (dice...) I tre elementi di Scratch e un esempio di script a blocchi

Mettiti alla prova

1. Che cos'è uno "sprite" in Scratch?

Un personaggio o oggetto che si muove e reagisce sul palco, con i propri costumi e suoni.

2. Che cos'è uno "script" in Scratch?

Una sequenza di blocchi incastrati che dice a uno sprite cosa fare e quando farlo.

3. Perché in Scratch non si possono commettere errori di sintassi come in un linguaggio testuale?

Perché i blocchi si incastrano fisicamente solo se la combinazione ha senso, a differenza del testo dove si può dimenticare una virgola o una parentesi.

4. A quali due elementi dei diagrammi di flusso corrispondono le categorie di blocchi "controllo" e "operatori"?

Al rombo delle decisioni (controllo) e al rettangolo delle elaborazioni/calcoli (operatori).

5. Chi ha creato Scratch, e dove?

Il Lifelong Kindergarten Group del MIT Media Lab, guidato da Mitchel Resnick.

6. Da dove viene il nome "Scratch"?

Dalla tecnica dei DJ hip-hop di mixare e ricombinare frammenti di dischi esistenti, proprio come in Scratch si combinano blocchi già pronti.

7. Vero o falso: in Scratch, il palco è l'elenco dei blocchi disponibili da trascinare.

Falso: il palco è l'area dove si vede il risultato del programma in esecuzione; i blocchi si trovano nel pannello dei blocchi.

8. Cos'e' una variabile in Scratch? Fai un esempio.

Un contenitore con un nome dove memorizzare un valore che puo' cambiare, ad esempio un punteggio (Punti) o una vita (Vite).

9. Qual e' la differenza tra il blocco "ripeti (10)" e il blocco "ripeti fino a"?

"Ripeti (10)" esegue i blocchi un numero di volte deciso in anticipo; "ripeti fino a" continua finche' una condizione non diventa vera.

10. Che cos'e' ScratchJr, e a chi e' rivolto?

Una versione ancora piu' semplice di Scratch, pensata per bambini dai 5 ai 7 anni, con blocchi senza testo scritto.

11. Qual e' il linguaggio considerato l'antenato diretto di Scratch, e chi lo creo'?

Logo, creato nel 1967 da Seymour Papert.

Per chiarimenti su questo argomento è possibile scrivere via email