Programmare con Scratch: Moltiplicazione (somma e sottrazione) tra due numeri interi casuali.

In questa lezione vediamo come creare un semplice quiz utile ad imparare le tabelline, attraverso la moltiplicazione tra due numeri interi scelti a caso (tra 1 e 10). Il codice permette la ripetizione dell’esercizio per molte volte in quanto i numeri inseriti e quindi il risultato che il ragazzo deve indicare differente di volta in volta. A partire dal codice creato realizziamo anche delle varianti al giochino (somma e sottrazione); ci soffermeremo, infine, su alcune procedure grafiche e sulle caratteristiche che dovrebbero avere tutti i lavori di programmazione.

Livello di difficoltà: intermedio.

Per programmare l’attività iniziamo a creare quattro variabili che potremmo chiamare PRIMO_NUMERO, SECONDO_NUMERO, MOLTIPLICAZIONE e RISPOSTA. Le prime due variabili dovranno accogliere un numero casuale tra 1 e 10, la terza variabile la moltiplicazione tra le prime due variabili e la quarta (RISPOSTA) ciò che verrà digitato in fase di esecuzione del giochino dal ragazzo.

Per inserire una variabile sarà sufficiente spostarsi nella categoria VARIABILI, fare clic su CREA UNA VARIABILE ed assegnare un nome alla stessa nella finestra che appare a video; lasciando l’opzione PER TUTI GLI SPRITE, la variabile sarà disponibile sempre. 

Creiamo le altre tre variabili che ci servono ripetendo la procedura. Da notare che le variabili che andremo a creare saranno visibili sempre nella categoria VARIABILI.

Iniziamo ora ad inserire i blocchi di codice nell’area di programmazione a partire dal blocco QUANDO SI CLICCA SU BANDIERINA. Successivamente, dalla categoria VARIABILI, trasciniamo il blocco PORTA LA MIA VARIABILE A… , selezioniamo dall’elenco a discesa la variabile personalizzata creata in precedenza “Primo Numero”, e sostituiamo lo zero con il blocco NUMERO A CASO TRA 1 e 10 appartenente alla categoria OPERATORI.

Poiché occorre assegnare un numero a caso anche per la seconda variabile, possiamo rapidamente duplicare il blocco (con il tasto destro del mouse) e selezionare dall’elenco a discesa la variabile “Secondo numero”.

Duplichiamo ancora una volta il blocco e selezioniamo dall’elenco la variabile Moltiplicazione. trasciniamo NUMERO A CASO TRA 1 e 10 al di fuori del blocco e utilizziamo il tasto CANC per eliminarlo. Trasciniamo nell’area di programmazione il blocco OPERATORE MOLTIPLICAZONE e, al suo interno trasciniamo le due variabili “Primo Numero” e “Secondo Numero”; infine trasciniamo l’intero blocco sul blocco precedente sostituendo lo zero.

Proviamo ad avviare lo script con la bandierina verde per vedere nell’ANTEPRIMA come si popolano le variabili che abbiamo creato fino ad ora.

Andiamo ora ad inserire la richiesta che faremo al ragazzo per ottenere la risposta. Trasciniamo il blocco CHIEDI … E ATTENDI appartenente alla famiglia SENSORI, e sostituiamo la frase “Come ti chiami?” con, ad esempio, “Qual è la moltiplicazione tra il primo e il secondo numero che vedi?”

Dalla categoria VARIABILI trasciniamo ancora una volta il blocco PORTA … A … , selezioniamo la variabile personalizzata “Risposta” all’elenco e, in seconda posizione trasciniamo ciò che verrà digitato nell’area di testo dal ragazzo, ovvero il blocco RISPOSTA (di colore azzurro) appartenente alla categoria SENSORI.

Passiamo ora a creare un feedback da restituire al ragazzo dopo che digita la risposta; per farlo occorre utilizzare il blocco SE … ALLORA … ALTRIMENTI appartenente alla categoria CONTROLLO.

Nella prima riga di questo blocco dobbiamo inserire l’OPERATORE DI UGUAGLIANZA con le variabili RISPOSTA e MOLTIPLICAZIONE, per verificare se la CONDIZIONE “risposta del ragazzo uguale alla variabile MOLTIPLICAZIONE” (che, a sua volta è data dalla moltiplicazione dei due numeri casuali assegnati alle variabili Primo numero, Secondo numero) è corretta.

Nella seconda riga del blocco, ovvero se la risposta è corretta, inseriremo il blocco DIRE … PER … SECONDI appartenente alla categoria ASPETTO sostituendo la parola “Ciao!” con “Bravo, hai risposto correttamente!” ed inserendo, ad esempio, un paio di secondi di attesa.

Nella terza riga, ovvero nel caso di risposta non corretta, inseriremo ancora il blocco DIRE … PER … SECONDI inserendo come risposta, ad esempio, “Ops! Risposta errata. Fai più attenzione la prossima volta!”.

Possiamo aggiungere un ultimo blocco DIRE … PER .. SECONDI, alla fine del codice inserendo, ad esempio, la scritta “Vuoi giocare ancora? Fai clic sulla bandierina verde”

Proviamo il codice inserito fino a questo momento utilizzando la bandiera verde per vedere se tutto funziona e per apportare gli ultimi correttivi.

Prima una piccola precisazione. Da notare che abbiamo volutamente utilizzato la variabile personalizzata RISPOSTA (anche se di fatto non e strettamente necessaria in quanto possiamo semplicemente verificare se la risposta digitata – il blocco RISPOSTA di colore blu – è pari alla variabile MOLTIPLICAZIONE) in maniera da mostrarla sullo schermo e, di conseguenza, consentire all’alunno di verificare la correttezza della risposta digitata.

Vediamo ora i correttivi che dobbiamo aggiungere al lavoro.

Come si può facilmente intuire occorre innanzitutto nascondere la variabile MOLTIPLICAZIONE in quanto questa rappresenta il risultato corretto (che dovrà essere inserito dall’alunno nella variabile RISPOSTA)!

Inoltre, se proviamo a riavviare lo script ci accorgiamo che la risposta digitata in precedenza rimane sullo schermo: occorre quindi fare in modo che ciò che è stato digitato nel “gioco” precedente venga azzerato in maniera da non fare andare in confusione l’alunno.

Per risolvere il primo problema sarà sufficiente inserire, dalla categoria VARIABILI, il blocco NASCONDI LA VARIABILE … selezionando dal suo elenco la voce MOLTIPLICAZIONE entro la quarta riga di codice, ovvero prima di inizializzare la variabile MOLTIPLICAZIONE.

Come si può vedere dall’anteprima dello script, ora la variabile non è più visibile in fase di esecuzione.

Diversamente, per azzerare la variabile personalizzata RISPOSTA (quella di colore arancio e non blu!) sarà sufficiente inserire, sempre dalla categoria VARIABILI, il blocco PORTA … A.., selezionare dall’elenco  delle variabili la voce RISPOSTA e inserire uno zero (0) come risultato. Questo blocco è utile inserirlo all’inizio dello script in maniera da “ripulire” il valore prima del nuovo “gioco”.

A livello di programmazione, direi che è tutto. Questo è il codice finale del lavoro proposto.

APPROFONDIMENTO – Somma o sottrazione tra due numeri casuali

Lo script utilizzato per la moltiplicazione può essere modificato leggermente anche per creare dei “giochi” che hanno ad oggetto la somma o la sottrazione tra due numeri.

Nel primo caso sarà sufficiente modificare il blocco PORTA MOLTIPLICAZIONE A… sostituendo l’OPERATORE MOLTIPLICAZIONE con l’OPERATORE SOMMA. Da notare che possiamo lasciare come nome della variabile anche MOLTIPLICAZIONE in quanto è il risultato che interessa e non l’etichetta. Ovviamente, va anche cambiata l’etichetta del blocco CHIEDI … E ATTENDI, sostituendo l’etichetta con “Qual è la somma tra il primo e il secondo numero che vedi?”

La stessa procedura si può utilizzare per creare un giochino con oggetto la SOTTRAZIONE (sostituire l’OPERATORE SOMMA con l’OPERATORE SOTTRAZIONE ed aggiornare il blocco CHIEDI … e ATTENDI).

In caso di SOTTRAZIONE potrebbe essere utile (in particolare se il gioco è destinato ai bambini più piccoli) fare in modo che il risultato sia sempre un numero positivo o maggiore di zero. Per fare ciò si dovrà intervenire nei blocchi PORTA PRIMO NUMERO A, e PORTA SECONDO NUMERO A…, assegnando al primo numero un numero casuale maggiore del secondo.

Ad esempio, possiamo inserire per la prima variabile (Primo Numero) un numero casuale tra 50 e 100 e nella seconda un numero casuale da 1 a 49.

APPENDICE – Giochiamo con lo sfondo per rendere il lavoro più carino.

Visto che lo script realizzato non ha portato via troppo tempo, rendiamo il lavoro più carino creando uno sfondo personalizzato. Ad esempio, in alto a sinistra disegniamo una lavagna (o qualcosa che assomigli ad una lavagna!) in maniera da inserire le VARIABILI su di essa.

Dal pulsante circolare dello STAGE (in basso a destra dello schermo) selezioniamo la voce DISEGNA UN NUOVO SFONDO (l’icona con il pennello) e lavoriamo nella parte centrale con gli strumenti di disegno.

Disegniamo innanzitutto un rettangolo di colore scuro in alto a sinistra, trascinando lo strumento di disegno RETTTANGOLO sull’area dello SFONDO e successivamente posizionandola nella posizione indicata. Utilizziamo lo strumento LINEA (scegliendo dalla barra degli strumenti superiore uno spessore di almeno 7) per disegnare un piede della lavagna. Duplichiamo quest’ultima forma e ruotiamola utilizzando il pulsante RIFLETTI IN ORIZZONTALE presente sempre sulla barra degli strumenti e posizioniamo i due piedi distanziandoli opportunamente.

Disegniamo il pavimento della stanza utilizzando un altro rettangolo (magari con contorno pari a zero) e posizioniamolo dietro la lavagna (utilizzando PORTA INDIETRO dalla barra degli strumenti) in maniera che i piedi poggino correttamente sul pavimento. Infine, spostiamoci nell’anteprima dello script e posizioniamo le variabili al centro della lavagna.

Poiché la lavagna l’abbiamo disegnata a sinistra, forse ci conviene mettere il gattino sulla destra con il volto rivolto a sinistra, in maniera che anche i suoi callout vengano proposti a sinistra. Facciamo clic sul gattino per aprire lo SPRITE. Selezioniamolo e utilizziamo il pulsante RIFLETTI IN ORIZZONTALE presente sulla barra degli strumenti; spostiamolo infine in una posizione che permette di visualizzare sia il Callout (senza coprire le variabili presenti sulla lavagna) sia la barra che verrà visualizzata in basso per l’inserimento del risultato.

Ecco il risultato grafico finale.

CONCLUSIONI… CON ALCUNI SPUNTI DI RIFLESSIONE!

In questa lezione abbiamo visto come realizzare un “giochino” cercando di utilizzare delle procedure “minime” e “funzionali”.

Quando si programma con Scratch, ma anche con altri linguaggi di programmazione, occorre tenere a mente almeno tre aspetti: il codice deve permetter di avere un prodotto differente per ciascun utilizzo, deve essere semplificato al massimo e flessibile.

Un lavoro ben fatto deve essere progettato con l’idea di poterlo riutilizzare … all’infinito. Utilizzando, ad esempio, delle variabili con numeri casuali, è utile per poter giocare più volte, sempre con nuovi numeri! Fare uno script con dei numeri da inserire da tastiera, come si vede (purtroppo) in molti tutorial in Rete, non ha senso! Il ragazzo scriverà sempre gli stessi numeri, o farà sempre operazioni semplici per dare la risposta corretta!

Inoltre, nel creare il codice di programmazione occorre fare in modo che esso sia semplice (o meglio semplificato al massimo). Nell’esercizio proposto si potevano, ad esempio, azzerare tutte le variabili (e non solo quella della RISPOSTA da tastiera) ma non avrebbe avuto senso in quanto le altre sono randomizzate ogni volta che lo script si ripete.

Infine, uno script di programmazione deve essere “flessibile”, ovvero essere scritto in maniera che con semplici modifiche possa essere utilizzato anche per altri lavori (nel nostro caso, con poche modifiche abbiamo ottenuto anche il giochino della SOMMA e della SOTTRAZIONE.