Operazioni matematiche con Scratch

Operazioni matematiche con Scratch

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:

operatori scratch

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:

operazioni con scratch

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.

operazioni con scratch

Questo è solo un piccolo esempio di esecuzione di operazioni matematiche con scratch, in quanto più avanti svilupperemo una calcolatrice molto più completa.

Alcuni link utili:

Sommare un intervallo di numeri con scratch

Anno bisestile con scratch

Selezione con scratch

Olimpiadi di informatica con scratch

Olimpaidi di matematica con scratch

Figure equivalenti con scratch

Riconoscere gli angoli con scratch

Morra cinese con scratch

Giochi matematici autunno 2018

Esempi di giochi matematici Bocconi

Gioco della tabellina con scratch

Gioco indovina numero con scratch

Frazioni con scratch

Equazioni di primo grado con scratch

Disegnare poligoni regolari con scratch

Numeri primi in Scratch

La successione di Fibonacci in Scratch

Massimo fra tre numeri in Scratch

Minimo tra 3 numeri in Scratch

Numeri perfetti con algobuild

Numeri amicabili con algobuil

Selection sort in Scratch

Sommare un intervallo di numeri con Scratch

Sommare un intervallo di numeri con Scratch

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:

sfondo intervallo di numeri

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.

intervallo variabili

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.

somma intervallo di numeri

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.

Provate pure a farlo.

Alcuni link utili

Anno bisestile con scratch

Selezione con scratch

Olimpiadi di informatica con scratch

Olimpaidi di matematica con scratch

Figure equivalenti con scratch

Riconoscere gli angoli con scratch

Morra cinese con scratch

Giochi matematici autunno 2018

Esempi di giochi matematici Bocconi

Gioco della tabellina con scratch

Gioco indovina numero con scratch

Frazioni con scratch

Equazioni di primo grado con scratch

Disegnare poligoni regolari con scratch

Numeri primi in Scratch

La successione di Fibonacci in Scratch

Massimo fra tre numeri in Scratch

Minimo tra 3 numeri in Scratch

Numeri perfetti con algobuild

Numeri amicabili con algobuil

Selection sort in Scratch

Olimpiadi di matematica

Olimpiadi di matematica

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:

variabili gara matematica

Scelgo uno sfondo e uno sprite qualunque e inserisco il testo, del problema delle olimpiadi di matematica, direttamente nello sfondo.

gara nazionale matematica

Cliccando sullo stage compaiono gli strumenti per personalizzare gli sfondi:

testo scratch

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.

script gara matematica

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.

Alcuni link utili:

Figure equivalenti con scratch

Riconoscere gli angoli con scratch

Morra cinese con scratch

Giochi matematici autunno 2018

Esempi di giochi matematici Bocconi

Gioco della tabellina con scratch

Gioco indovina numero con scratch

Frazioni con scratch

Equazioni di primo grado con scratch

Disegnare poligoni regolari con scratch

Numeri primi in Scratch

La successione di Fibonacci in Scratch

Massimo fra tre numeri in Scratch

Minimo tra 3 numeri in Scratch

Numeri perfetti con algobuild

Numeri amicabili

Selection sort in Scratch


Anno bisestile con Scratch

Anno bisestile con Scratch

In quest’articolo affronteremo l’algoritmo che verifica se un anno è bisestile con Scratch.

Questo è un altro semplice esempio sull’uso della funzione se … altrimenti.

Questo stesso algoritmo è stato riproposto con algobuild al seguente link: https://www.codingcreativo.it/algoritmo-anno-bisestile/

Regola anno bisestile

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:

sfondo anno bisestile

Mi servirà una sola variabile che è quella che rappresenta l’anno, dove andrò a memorizzare la risposta dell’utente.

variabile anno

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:

anno bisestiel con scratch

Si poteva anche fare anche tutto in un unico se utilizzando l’operatore logico or. Provate pure voi a farlo.


Alcuni link utili

Figure equivalenti con scratch

Riconoscere gli angoli con scratch

Morra cinese con scratch

Giochi matematici autunno 2018

Esempi di giochi matematici Bocconi

Gioco della tabellina con scratch

Gioco indovina numero con scratch

Frazioni con scratch

Equazioni di primo grado con scratch

Disegnare poligoni regolari con scratch

Numeri primi in Scratch

La successione di Fibonacci in Scratch

Massimo fra tre numeri in Scratch

Minimo tra 3 numeri in Scratch

Numeri perfetti con algobuild

Numeri amicabili

Selection sort in Scratch


Selezione con Scratch

Selezione con Scratch

Affronteremo in questo articolo una serie di algoritmi di selezione con Scratch, cioè gli algoritmi che utilizzano le istruzioni condizionali.

In pratica utilizzeremo con Scratch la funzione se e la funzione se altrimenti.

Questi stessi esercizi sono stati proposti con Algobuild in questo articolo https://www.codingcreativo.it/algoritmi-di-selezione-con-il-confronto-tra-due-numeri/

Esercizio 1 sulla selezione con Scratch

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:

selezione con scratch

Per la realizzazione dell’algoritmo ho utilizzato quindi le seguenti variabili:

istruzioni condizionali

Ecco lo script completo che fa uso delle istruzioni condizionali se … altrimenti.

script selezione con scratch

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:

istruzioni condizionali se

Ecco dunque lo script completo che utilizza come nell’esercizio precedente le istruzioni condizionali se … altrimenti.

scrip scratch


Alcuni link utili

Riconoscere gli angoli con scratch

Morra cinese con scratch

Giochi matematici autunno 2018

Esempi di giochi matematici Bocconi

Gioco della tabellina con scratch

Gioco indovina numero con scratch

Frazioni con scratch

Equazioni di primo grado con scratch

Disegnare poligoni regolari con scratch

Numeri primi in Scratch

La successione di Fibonacci in Scratch

Massimo fra tre numeri in Scratch

Minimo tra 3 numeri in Scratch

Numeri perfetti con algobuild

Numeri amicabili

Selecion sort in Scratch


Selection sort con Scratch

Selection sort con Scratch

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.

Ragioniamo come abbiamo anche fatto per il selection sort in C.


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!

lista numeri iin scratch

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.

variabili utilizzate per selection sort in scratch

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.

lettura lista scratch

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.

selection sort in scratch

Questo è solo un esempio di sviluppo dell’algoritmo selection sort con Scratch, proponete pure la vostra nei commenti sotto.

Alcuni link utili

Selection sort in C

Array o vettori

Quick sort in linguaggio C

Merge sort in linguaggio C

Insertion Sort in lingaggio C