In questo articolo creiamo un semplice programma per eseguire le operazioni matematiche con scratch, come una piccola calcolatrice.
In realtà programmeremo in seguito una vera e propria calcolatrice con Scratch. Adesso ci limiteremo a sviluppare un semplice programma che, prende due numeri e in base all’operatore inserito compie l’operazione.
Procedimento algoritmo per le operazioni matematiche con Scratch
Nella figura sotto potete dunque vedere i comandi necessari per prendere gli input:
Abbiamo quindi bisogno delle seguenti variabili:
numero1 – variabile che conterrà il primo numero;
numero2 – variabile che conterrà il secondo numero;
operatore – variabile che rappresenta il tipo di operazione che si vuole effettuare;
operazione – è una variabile che conterrà il risultato della nostra operazione.
Allego, nella figura sotto, le variabili utilizzate:
Passiamo ora allo sviluppo dell’algoritmo che consente di eseguire le operazioni matematiche con Scratch.
Utilizzeremo delle funzioni se annidate che consentiranno, in base al tipo di operatore, di effettuare l’operazione desiderata.
Inoltre, facciamo anche dei controlli. Il primo controllo riguarda l’inserimento corretto dell’operatore matematico. Così se l’utente inserisce un carattere diverso dagli operatori di somma, sottrazione, divisione o moltiplicazione, il programma dirà che il tasto premuto non corrisponde ad alcuna operazione.
Un ulteriore controllo lo facciamo se il secondo numero inserito è zero, in quanto in matematica dividere un numero per zero è un’operazione non definita.
Questo è solo un piccolo esempio di esecuzione di operazioni matematiche con scratch, in quanto più avanti svilupperemo una calcolatrice molto più completa.
In quest’articolo affronteremo un semplicissimo algoritmo che consente di sommare un intervallo di numeri con Scratch .
Ad esempio se ho un intervallo di numeri che va da 100 a 200 calcoliamo la somma di tutti i numeri dell’intervallo.
Si possono utilizzare vari metodi, noi per la risoluzione dell’algoritmo utilizzeremo questa formula: (primo+ultimo)/2*quantità_numeri.
Quindi se consideriamo i numeri da 100 a 200 avremo:
(100+200)/2*101=15050
Algoritmo per sommare un intervallo di numeri con Scratch
Per la realizzazione di quest’algoritmo con Scratch serviranno poche istruzioni.
Scegliamo innanzitutto uno sfondo e uno sprite qualunque.
Io ad esempio ho scelto questi:
Poi mi serviranno le variabili:
intervallo – per calcolare quanti sono i numeri da sommare;
primo – indica il primo numero dell’intervallo;
ultimo – indica l’ultimo numero dell’intervallo;
somma – è la variabile che conterrà la somma finale di tutti i numeri dell’intervallo.
Quindi chiediamo di inserire il primo numero, dopo chiediamo di inserire l’ultimo numero e poi calcoliamo quanti sono i numeri da sommare con questo semplice calcolo:
intervallo=(ultimo-primo)+1
Dunque ci rimane da calcolare la somma con la formula:
somma: (primo+ultimo)/2*intervallo
Infine facciamo dire al gattino quanto vale la somma dell’intervallo.
In questo algoritmo non abbiamo utilizzato né istruzioni condizionali, né cicli. Si potrebbe però fare un controllo sul secondo numero preso in input per verificare che sia maggiore del primo e solo dopo effettuare la somma.
In quest’articolo affronteremo un quesito delle olimpiadi di matematica con scratch.
Sappiamo che il PIN del bancomat di Claudia è un numero di 5 cifre della forma n = 41a9b, dove a e b indicano le cifre che non conosciamo. Sappiamo però che n è divisibile per 312. Quanto vale il prodotto a · b?
Ragioniamo sul numero da trovare.
Se a e b fossero uguali a 9, cioè la più alta combinazione possibile, il nostro numero sarebbe 41999.
Questo numero diviso 312 mi dà 134 con resto 191 e 134 x 312=41808.
Quindi non può essere 134 perchè deve essere soddisfatta la seguente condizione 41a9b. Dunque il numero da trovare è minore di 134.
Se invece a e b fossero uguali a zero, ovvero la più piccola combinazione possibile, il nostro numero sarebbe 41090. Se lo dividiamo per 312 avremo:
41090/312= 131 con resto 7 e 131 x 312 = 40872
Il numero è comunque troppo piccolo, quindi possiamo scartare 131.
Per i ragionamenti appena fatti gli unici divisori possono dunque essere 132 e 133.
Facendo le operazioni possiamo escludere 132, in quanto:
132 x 312 = 41184 e chiaramente non può essere perchè deve essere soddisfatta la seguente condizione 41a9b.
Perciò l’unico divisore è 133, infatti se lo moltiplichiamo per 312 mi darà il numero 41496.
133 x 312= 41496 e la condizione 41a9b è soddisfatta.
Quindi a=4 e b=6
Dunque il prodotto di a per b è 24.
Proviamo adesso a risolverlo con un algoritmo.
Algoritmo su un quesito delle olimpiadi di matematica con scratch
Consideriamo il nostro numero 41a9b, dove a e b sono due variabili che possono variare ognuna da 0 a 9.
Queste sono le variabili che servono:
Scelgo uno sfondo e uno sprite qualunque e inserisco il testo, del problema delle olimpiadi di matematica, direttamente nello sfondo.
Cliccando sullo stage compaiono gli strumenti per personalizzare gli sfondi:
Quindi consideriamo due cicli annidati per provare tutte le possibili combinazioni finchè non troverà il numero cercato.
Ecco lo script completo che ripete partendo da a e b uguali a 9 tutte le possibili combinazioni.In sostanza proverà dapprima il numero 41999 poi 41998,..,41997, …,41990,41899… ecc… fino a trovare il numero divisibile per 312.
Per verificare se il numero è divisibile per 312 si considera l’operatore presente in scratch: resto della divisione e lo si confronta con zero.
Potremmo migliorare l’algoritmo e farlo fermare non appena trova il divisore. Basta spostare il ferma tutto sotto l’istruzione prodotto. Oppure creare una variabile di controllo.
Questo è solo un quesito delle olimpiadi di matematica con scratch, ve ne proporrò degli altri.
Un anno è bisestile se è divisibile per 400 oppure è divisibile per 4 ma non per 100.
In definitiva con questa regola ad esempio gli anni secolari non sono bisestili a meno che non siano divisibili per 400.
Anno bisestile con Scratch
Per realizzarlo con Scratch, cominciamo con l’impostare uno sfondo a piacere e a scegliere uno sprite, io ad esempio ho scelto questi:
Mi servirà una sola variabile che è quella che rappresenta l’anno, dove andrò a memorizzare la risposta dell’utente.
Dopo dobbiamo controllare che il resto della divisione di anno per 400 sia uguale a zero; se tale condizione si verifica allora l’anno è bisestile; altrimenti controlliamo se l’anno è divisibile per 4 ma non per 100 e anche in tal caso l’anno è bisestile; se entrambe le condizioni non sono verificate allora l’anno non è bisestile.
Si utilizza l’operatore resto della divisione in Scratch e lo si confronta con zero per verificare la divisibilità. Allego lo script completo:
Si poteva anche fare anche tutto in un unico se utilizzando l’operatore logico or. Provate pure voi a farlo.
Dati due numeri naturali X e Y, aggiungere al più piccolo la somma dei due numeri, se uguali visualizzare semplicemente che i numeri sono uguali.
Procedimento
Chiediamo in input i due numeri, quindi creiamo le due variabili x e y dove memorizziamo i dati inseriti da tastiera.
Dopo controlliamo i due numeri e se sono uguali diamo semplicemente il messaggio che sono uguali; altrimenti facciamo la somma e creiamo una variabile dove memorizziamo il risultato:
somma=x+y;
Poi controlliamo se x è minore di y e se vero sommiamo così la somma a x; altrimenti se falso allora y è minore di x, dunque dobbiamo sommare il contenuto della variabile somma a y.
N.B. Sarebbe sbagliato inserire un altro se per verificare se y è minore di x, perché se x non è uguale a y e x non è minore di y allora l’ultima opzione possibile è che y sia minore di x.
Ho utilizzato questo sfondo e questo sprite:
Per la realizzazione dell’algoritmo ho utilizzato quindi le seguenti variabili:
Ecco lo script completo che fa uso delle istruzioni condizionali se … altrimenti.
Esempio 2 di algoritmo di selezione con Scratch
Dati 2 numeri naturali X e Y, aggiungere al più piccolo la quantità necessaria per essere uguale al più grande, se uguali visualizzare semplicemente che i numeri sono uguali.
Operiamo come prima chiedendo in input i due numeri e li confrontiamo. Se x è maggiore di y allora memorizziamo nella variabile differenza lo scarto che c’è tra i due numeri, ovvero:
differenza=x-y;
Dopo sommo differenza a y.
Altrimenti se y è maggiore di x:
differenza=y-x;
Dopo sommo differenza a x.
Infine visualizzo in output i due numeri così ottenuti.
Per comodità uso lo stesso sfondo di prima. Le variabili che ho utilizzato sono queste:
Ecco dunque lo script completo che utilizza come nell’esercizio precedente le istruzioni condizionali se … altrimenti.
Oggi sviluppiamo l’algoritmo selection sort con Scratch. Infatti anche con Scratch è possibile implementare anche gli algoritmi di ordinamento che di solito si sviluppano con i vari linguaggi di programmazione.
Come sviluppare l’algoritmo selection sort con Scratch?
Occorre premettere che per realizzare questo algoritmo bisogna saper utilizzare le liste.
Liste in Scratch
Le liste ricordiamo sono dei contenitori che permettono di contenere più valori alla volta e di organizzare i dati in maniera sequenziale. È inoltre possibile aggiungere elementi alla lista durante l’esecuzione di un programma. Per accedere agli elementi della lista dobbiamo accedere alla sua posizione.
Procedimento algoritmo selection sort con Scratch
Occorre innanzitutto creare la lista, in questo caso di numeri, che chiamo senza troppa fantasia numeri!
Chiedo dunque quanti elementi inserire e memorizzo la risposta in una variabile che chiamo N. Successivamente con un ciclo popolo la mia lista di numeri.
In che modo?
Creo una variabile contatore che chiamo conta che ha la funzione di tenere traccia dei numeri che a mano a mano verranno inseriti. Tale variabile deve essere inizializzata a zero, si incrementerà per ogni inserimento e si fermerà quando raggiungerà N, ovvero il numero di elementi richiesti.
All’interno del ciclo chiedo ogni volta di inserire un numero.
In questo modo ho popolato la mia lista con dei numeri a caso che ho inserito da tastiera.
Elenco sotto le variabili che ho utilizzato. Le variabili min, j e temp verranno spiegate più avanti.
Chiedo dunque di visualizzare gli elementi della lista con una semplice lettura della lista stessa.
Utilizzo lo stesso contatore che inizializzo nuovamente a zero e creo un ciclo che consentirà di leggere tutti gli elementi della lista, grazie al comando delle liste di Scratch: elemento …. di numeri, che visualizzerà prima l’elemento con indice 0, poi l’elemento con indice 1 e così via.
Adesso dobbiamo ordinare l’array e per farlo procediamo in questo modo.
Ci servono le variabili:
min
j
temp
Assegniamo a min il valore di conta, così da farlo partire dalla posizione zero e a j assegniamo il valore di conta + 1, in modo tale da fare partire l’indice dalla posizione 1.
Poi scorriamo la lista e se l’elemento di posizione j della lista è minore dell’elemento di posizione min allora assegno a min il valore j.Altrimenti vado avanti incrementando j e utilizzando una variabile temporanea che ad esempio chiamo temp per effettuare lo scambio.
Non ci resta che visualizzare l’array ordinato.
Allego lo script nell’immagine sotto.
Questo è solo un esempio di sviluppo dell’algoritmo selection sort con Scratch, proponete pure la vostra nei commenti sotto.
Commenti recenti