back to top

I Blocchi in Scratch: categorie, colori e forme

Nella lezione precedente abbiamo visto come iniziare a programmare con Scratch attraverso i Blocchi. Vediamo ora di approfondire l’argomento attraverso una classificazione delle diverse tipologie di Blocchi al fine di comprenderne a fondo lo scopo ed il funzionamento.

Colori e forme dei blocchi

Come già detto in altre lezioni della nostra guida, i Blocchi in Scratch sono suddivisi in categorie funzionali, caratterizzate ciascuna da un proprio colore identificativo.

Differenti tipologie di blocchi in Scratch

Oltre che per categorie (e colore), tuttavia, i blocchi si distinguono tra loro anche in base alla forma.

Differenti forme dei blocchi in Scratch

Ci sono tre forme principali di blocchi:

  • Blocchi puzzle – I blocchi che abbiamo visto nella lezione precedente appartengono a questa tipologia. Sono detti comandi, non riportano valori ma servono per concatenare i vari passaggi della sequenza applicativa incastrandosi tra loro come le mattonelle LEGO.
  • Blocchi ovali – Sono i Reporters cioè i blocchi che generano un output (restituiscono un valore, ad esempio un numero o una stringa di testo).
  • Blocchi esagonali – Sono i predicati, cioè dei controlli di tipo booleano che restituiscono sempre un valore vero (true) o falso (false).

Alcuni blocchi, inoltre, hanno una forma singolare a "C" o "E" in quanto sono destinati ad ospitare al loro interno altri blocchi di tipo puzzle (come vedremo nel proseguo di questa lezione).

Per adesso ci basti sapere che i blocchi puzzle si incastrano tra loro, uno sotto all’altro, mentre i blocchi ovali ed esagonali sono destinati ad essere ospitati all’interno delle caselle (aventi la medesima forma) presenti in alcuni blocchi puzzle.

Sagome di forma ovale ed esagonale all'interno dei blocchi in Scratch

Vediamo, di seguito, le diverse categorie di blocchi spiegando di ciascuna le caratteristiche principali.

Movimento

Sono blocchi di colore blu e hanno lo scopo di modificare la posizione dello Sprite nello Stage. Ad esempio "Fai … passi", "Ruota di … gradi", "Vai a x … y …".

Il loro funzionamento è piuttosto intuitivo e vi suggerisco di provarli uno ad uno per comprendere meglio il modo in cui agiscono.

Aspetto

Sono blocchi di colore viola e assolvono alla funzione di modificare l’apparenza dello Sprite: gli fanno dire qualcosa (appare un fumetto), gli cambiano costume oppure ne variano la dimensione.

Anche in questo caso il loro funzionamento è piuttosto intuitivo e una prova vale più di mille parole.

Suono

Sono blocchi di colore fucsia e servono per produrre dei suoni (ad esempio "miao") o per agire sul volume di effetti sonori già in esecuzione.

Situazioni

Sono blocchi di colore giallo e servono per creare degli eventi, cioè determinare quali accadimenti debbano scatenare l’avvio di qualche cosa. Ad esempio "Quando si clicca sulla bandierina verde", "Quando si preme il tasto …" e così via.

Sono blocchi di tipo puzzle ma spesso hanno una sagoma particolare in quanto presentano, nella parte superiore, una curvatura: questa forma sta ad indicare che tali blocchi devono trovarsi in cima alla sequenza dei comandi (in quanto, data tale forma, non possono incastrarsi con altri blocchi posti sopra di loro).

Sagoma curvata di alcuni blocchi Situazioni in Scratch

Controlli

Sono blocchi di colore ocra e servono per controllare il flusso del programma, anche attraverso cicli e costrutti condizionali. Molti dei blocchi di questa categoria hanno una forma "strana" in quanto sono fatti a forma di "C" o "E" essendo predisposti ad ospitare altri blocchi all’interno della loro "pancia".

Blocchi a forma di C ed E in Scratch

All’interno dei Controlli possiamo identificare blocchi di vario tipo.

I cicli

In programmazione i cicli sono delle ripetizioni di determinate operazioni per un dato numero di volte. Sono anche detti controlli iterativi.

Blocchi di questo genere sono:

  • ripeti … volte – i blocchi che saranno inseriti al suo interno verranno ripetuti per N volte;
  • per sempre – i blocchi che saranno inseriti al suo interno verranno ripetuti all’infinito;
  • ripeti fino a quando <condizione> – i blocchi che saranno inseriti al suo interno verranno ripetuti fino a quando una data condizione non si verifica.

Costrutti condizionali

In programmazione i costrutti condizionali servono per governare il flusso del programma in base al verificarsi o meno di determinate condizioni.

Facciamo un esempio di logica condizionale applicata alla vita quotidiana (giusto per capire meglio di cosa stiamo parlando):

Se fuori piove prendo l'ombrello

Oppure

Se fuori piove prendo l'ombrello altrimenti metto gli occhiali da sole

La stessa logica si applica ai programmi: se una condizione è vera faccio una cosa, se non lo è ne faccio un’altra oppure non faccio nulla.

I blocchi di questo tipo sono i seguenti:

  • "se <condizione> allora" – i blocchi inseriti in questo blocco saranno eseguiti solo se la condizione si verifica;
  • "se <condizione> allora / altrimenti" – questo blocco ha una forma particolare simile ad una "E" (ha due "pance"): i blocchi inseriti nella "prima pancia" saranno eseguiti se la condizione si verifica, in caso contrario verranno eseguiti quelli contenuti nella "seconda pancia".

Attesa

Una terza tipologia è costituita da quei blocchi attraverso i quali è possibile creare pause durante l’esecuzione del programma. Questi sono:

  • "attendi … secondi" – il blocco in questione determina una pausa per la durata determinata (in secondi);
  • "attendi fino a quando <condizione>" – il blocco in questione determina una pausa di durata indeterminata in quanto durerà sino al verificarsi dell’evento espresso nella condizione.

Altri blocchi di controllo

Altri blocchi di questa categoria sono quelli riguardanti la gestione dei cloni ed il blocco, che abbiamo più volte utilizzato, "ferma …" (che, come più volte detto, è l’equivalete di dichiarazioni come exit o close) e può riguardare l’intero programma o una sua porzione.

Sensori

Sono blocchi di colore azzurro e servono per gestire l’interazione degli Sprite tra loro, con lo Stage o con l’utente.

I blocchi di questo tipo, in altre parole, consentono di percepire gli eventi esterni (clic del mouse, pressione di un tasto della tastiera, …) e interni (interazione con altri oggetti del programma).

Si tratta di blocchi molto importanti in quanto consentono di realizzare progetti complessi.

Nella sezione dei sensori si trovano blocchi di ogni forma.

I blocchi esagonali

I blocchi che fanno parte di questo sotto-gruppo si contraddistinguono per la loro forma esagonale che li rende idonei ad essere inseriti all’interno di molti dei blocchi di controllo appena descritti, in quanto possono rappresentare la condizione in base alla quale può succedere o non succedere qualcosa.

I blocchi di questo tipo, come abbiamo detto all’inizio di questa lezione, producono sempre un risultato di tipo booleano (cioè restuiscono vero o falso). In base a tale risultato il blocco contenitore determinerà quale azione intraprendere.

I blocchi di questo tipo sono::

  • sta toccando …
  • sta toccando il colore …
  • il colore … sta toccando il colore …
  • tasto … premuto
  • pulsante del mouse premuto

I blocchi di questo tipo sono perfetti per creare delle condizioni e pertanto possono essere utilizzati in diversi Controlli:

  • se <condizione> allora
  • se <condizione> allora / altrimenti
  • ripeti fino a quando <condizione>
  • attendi fino a quando <condizione>

I blocchi ovali

I blocchi che fanno parte di questo sotto-gruppo hanno forma ovale e, pertanto, possono essere inseriti all’interno di ogni blocco che necessiti di un "valore" per portare a termine il proprio scopo.

Blocchi di questo tipo sono detti "di stato" in quanto restituiscono il valore di alcune variabili interne al sistema (cd variabili di stato):

  • distanza da …
  • x del mouse
  • y del mouse
  • volume microfono
  • cronometro
  • anno (mese / data / …) attuale
  • giorni trascorsi dal 2000
  • username

Il blocco Chiedi … e attendi

Tra i Sensori un posto di primo piano spetta al blocco chiedi … e attendi. Questo blocco puzzle consente di interagire direttamente con l’utente mediante la proposizione di una domanda alla quale l’utente verrà invitato a rispondere mediante digitazione nell’apposito campo di testo.

La risposta dell’utente verrà registrata nel blocco risposta (ovale) il quale potrà essere utilizzato (come vedremo in una delle prossime lezioni) per valorizzare una variabile o per determinare il comportamento del programma mediante un controllo condizionale (ad esempio: possiamo chiedere all’utente quanti anni ha e indirizzare il flusso del programma a seconda che abbiamo più o meno di una certa età).

Operatori

Un altro elemento centrale nell’ambito della programmazione sono gli operatori. Nell’interfaccia di Scratch si tratta di blocchi verdi con caratteristiche e forme differenti.

  • blocchi esagonali: si tratta, come nel caso dei Sensori, di blocchi di tipo booleano (restituiscono vero o falso);
  • blocchi ovali: sono blocchi che, come sappiamno, restituiscono sempre un valore (ad esempio la somma tra due numeri o la concatenazione di due stringhe).

Tra i blocchi di tipo booleano:

  • … < … – verifica se un valore numerico è minore di un altro
  • … > … – verifica se un valore numerico è maggiore di un altro
  • … = … – verifica se due valori sono uguali
  • … contiene … – verifica che una stringa sia presente in un’altra stringa

Tra i blocchi esagonali ci sono poi gli operatori logici:

  • … e … – equivale all’operatore AND ed è utilizzato per creare condizioni duplici (è anche detto congiunzione logica);
  • … o … – equivale all’operatore OR ed è utilizzato per creare un’alternativa all’interno di una condizione;
  • non … – equivale a NOT ed esprime una negazione

Gli operatori che restituiscono un valore non boleano possono essere divisi in operatori numerici e stringa.

Tra gli operatori matematici:

  • … + … – effettua una somma
  • … – … – effettua una sottrazione
  • … * … – effettua una moltiplicazione
  • … / … – effettua una divisione
  • numero a caso tra … e … – seleziona un numero a caso all’interno di un intervallo numerico
  • resto della divisione di … diviso … – restituisce il resto di una divisione
  • arrotonda … – effettua l’arrotondamento di un numero
  • valore assoluto di … – restituisce il valore assoluto (ma anche altro) di un numero

Gli operatori per le stringhe sono:

  • unione di … e … – effettua la concatenazione tra due stringhe
  • lettera … di … – restituisce una specifica lettera di una stringa (ad esempio la prima lettera della parola "ciao")
  • lunghezza di … – restituisce la lunghezza di una stringa

Variabili

I blocchi variabile, essendo piuttosto complessi, saranno oggetto della prossima lezione.

Pubblicitร 
Massimiliano Bossi
Massimiliano Bossi
Stregato dalla rete sin dai tempi delle BBS e dei modem a 2.400 baud, ho avuto la fortuna di poter trasformare la mia passione in un lavoro (nonostante una Laurea in Giurisprudenza). Adoro scrivere codice e mi occupo quotidianamente di comunicazione, design e nuovi media digitali. Orgogliosamente "nerd" sono il fondatore di MRW.it (per il quale ho scritto centinaia di articoli) e di una nota Web-Agency (dove seguo in prima persona progetti digitali per numerosi clienti sia in Italia che all'estero).