Sviluppiamo oggi un programma che calcola la media di N numeri con scratch. Svilupperò l’algoritmo presentando due possibili soluzioni, di cui la più semplice è l’ultima, in fondo all’articolo.
Prendere in input da 1 a 9 materie, facendo un controllo dell’input, calcolare e visualizzare la media dei voti.
Procedimento algoritmo per il calcolo della media di N numeri con Scratch
La prima operazione da fare è scegliere uno sfondo e uno sprite qualunque.
Dopo creiamo le variabili necessarie.
In questo caso utilizzo: la variabile materie per indicare il numero delle materie; la variabile media per il calcolo della media; la variabile voto dove memorizzo il voto di ciascuna materia e la variabile numero_materia per indicare il numero della materia.
Quindi sviluppo il codice a blocchi.
Innanzitutto inizializzo la variabile media a zero, questa operazione è importante perché la prima volta che all’interno del ciclo eseguirò l’operazione: media=media+voto, l’elemento che ho messo in grassetto non avrà un valore ben definito perché non ancora calcolato. Allora conviene inizializzarlo all’elemento neutro della somma in quanto non comporta nessuna variazione nei risultati.
Dopo chiedo quante materie inserire e memorizzo questo valore in una variabile. Faccio un controllo per verificare che l’utente non inserisca valori minori di zero o maggiori di 9, cioè permettiamo l’inserimento da 1 a 9 materie.
Poi portiamo la variabile numero_materie a 1 e iniziamo ad inserire i voti (volendo potete anche effettuare un controllo sul voto inserito), utilizzando un ciclo ripeti materie volte (volendo potrei anche utilizzare un ciclo con contatore – ovvero ripeti fino a quando). Ogni voto è sommato e memorizzato nella variabile media. Al termine del ciclo si calcola la media con questa operazione: media=media/materie. Infine si visualizza il risultato.
Avrei anche potuto utilizzare una variabile somma dove sommare a parte i risultati, qualora servisse conservare il risultato della somma.
Ecco il codice a blocchi completo dell’algoritmo per calcolare la media di N numeri con Scratch.
Chiaramente l’algoritmo per il calcolo della media di N numeri con Scratch presenta altre soluzioni alternative.
Ad esempio, nella versione più semplice, senza controllo dell’input e conteggio delle materie, si poteva implementare semplicemente così:
Quiz Scratch scuola primaria – Realizziamo in questo articolo un semplice quiz in Scratch che affronta i problemi di matematica della scuola primaria.
In realtà questo esercizio può anche essere ripreso alle medie magari con altri tipi di problemi.
Ipotizziamo dunque di avere tre quesiti:
Primo quesito:
Lorenzo entra a scuola alle 8 ed esce alle 16. Quanto dura la giornata scolastica di Lorenzo?
Secondo quesito:
Angelo ha trovato sulla spiaggia 20 conchiglie rosa e 13 conchiglie bianche. Quante conchiglie ha raccolto in tutto?
Terzo quesito:
Un grappolo d’uva era costituito da 22 acini. Maria ne ha mangiati 8. Quanti acini sono rimasti sul grappolo?
Chiaramente potete aumentare a piacimento il numero dei quesiti da proporre agli alunni.
Procedimento quiz Scratch scuola primaria
Procediamo creando le variabili necessarie.
Innanzitutto ci servirà una variabile che chiameremo risultato dove memorizzeremo la risposta data dall’utente.
Dopo ci servirà pure una variabile punti che si incrementerà di uno se la risposta è corretta.
Notiamo poi che tutti i quesiti sono composti da operazioni matematiche che sono effettuate su due numeri, ad esempio n1 ed n2.
Allora ecco le variabili necessarie:
Scegliamo uno sfondo e uno sprite qualunque:
Iniziamo a creare il codice a blocchi.
Innanzitutto inizializziamo la variabile punti a zero.
Dopo, di volta in volta, impostiamo le variabili create n1 ed n2 ai valori del problema dato.
Potevamo anche fare a meno di utilizzare le variabili, ma sono estremamente utili in quanto facilitano il cambio dei dati in tutto il problema.
Se la risposta data dall’utente coincide con il risultato calcolato dal programma allora si guadagnerà un punto.
Essendo tre i quesiti, il punteggio massimo totale è tre.
Al termine del quiz aggiungiamo l’invio del messaggio finito.
Quando dunque si riceve finito, in base al punteggio ottenuto verrà visualizzato un messaggio a video.
Questi sono i quiz inseriti nei blocchi unione. Fate riferimento ai quesiti scritti sopra.
Ecco il codice completo:
Il blocco invia a tutti finito per il calcolo del punteggio:
Chiaramente questo è solo un metodo per la risoluzione del semplice ‘quiz Scratch scuola primaria’, potete trovare tanti altri metodi, come ad esempio l’utilizzo dei blocchi.
Ma Euclide riuscì a risolvere il problema senza calcolare tutti i divisori!
L’idea è stata questa: anziché calcolare il MCD tra i due numeri a e b, si divide a per b e si calcola il resto r.
Dopo si ricava il MCD tra b ed r e si procede fino a quando si ha resto 0. L’ultimo divisore è il MCD cercato.
Facciamo un esempio:
Prendiamo i due numeri 40 e 15 e procediamo secondo l’algoritmo di Euclide.
Primo passaggio: a/b cioè 40/15=2 resto 10
Secondo passaggio scambiamo a con b e b con r cioè 15/10=1 resto 5
Terzo passaggio scambiamo a con b e b con r cioè 10/5=2 resto 0.
Abbiamo trovato resto zero, quindi il MCD è 5.
Facciamo ancora un altro esempio:
Consideriamo i due numeri 84 e 48.
Avremo questi passaggi:
84/48=1 resto 36
48/36=1 resto 12
36/12=3 resto 0
Allora MCD è 12.
Algoritmo di Euclide per il MCD con Scratch
Bene una volta capito il procedimento sviluppiamo l’algoritmo di Euclide con Scratch.
Innanzitutto scegliamo uno sfondo e uno sprite qualsiasi.
Dopo creiamo le variabili necessarie:
Poi realizziamo il nostro codice a blocchi.
– Prendiamo inizialmente i nostri due numeri in input.
– Dopo finché il secondo numero non diventa zero facciamo queste operazioni:
– Memorizziamo nella variabile resto il resto della divisione di numero1 per numero2.
– Nella variabile numero1 memorizziamo il valore di numero2 e nella variabile numero2 memorizziamo il resto.
Provando con l’esempio sopra:
numero1=84 e numero2=48
quindi resto=numero1%numero2 cioè resto=84%48 ovvero resto=36.
Poi memorizziamo in numero1 il valore di numero2 e in numero2 il valore di resto e quindi numero1=48 e numero2=36.
E così via, faccio questi passaggi finché non ottengo più il resto.
Notate che dopo il ciclo ho inserito un’istruzione condizionale: se il numero1 che corrisponde al nostro massimo comune divisore è negativo allora diventa positivo. Perché ad esempio il MCD(84,48)=MCD(-84,48)=MCD(84, -48)=MCD(-84, -48).
Ecco il diagramma a blocchi completo.
Chiaramente si poteva introdurre il controllo per verificare che i numeri presi in input siano interi. Provate a farlo, vi darò la soluzione in un prossimo articolo.
Come si nota l’algoritmo di Euclide per il massimo comune divisore è una soluzione molto più semplice rispetto alla precedente.
In questa lezione studieremo come trovare il massimo comune divisore con Scratch.
Innanzitutto diamo la definizione di massimo comune divisore, che possiamo abbreviare più semplicemente con il simbolo MCD.
L’MCD è il più grande divisore comune dei numeri presi in considerazione.
Ad esempio consideriamo i numeri 15 e 5. Troviamo dapprima i divisori di 15 che sono: 1,3,5,15 e poi i divisori di 5 che sono:1,5.
Quindi il più grande divisore tra i due numeri è 5.
Se il più grande divisore è 1 si dice che i numeri sono coprimi ovvero primi tra di loro.
Nell’implementazione dell’esercizio faremo uso delle liste e dei blocchi.
Quando si è davanti ad un problema complesso conviene infatti dividerlo in sottoprogrammi per poter sviluppare le varie parti separatamente.
Procedimento per trovare il massimo comune divisore con Scratch
Ecco innanzitutto le variabili che ho utilizzato e che a mano ve ne spiegherò l’utilità.
Utilizzo della lista
Ci servirà una lista per contenere tutti i possibili divisori del primo numero preso in input.
Dunque creo una lista e la chiamo ad esempio divisori.
Utilizzo del blocco divisori
Creiamo il blocco divisori che serve a trovare tutti i divisori del primo numero preso in input, che è memorizzato nella variabile appositamente creata di nome numero.
Quindi utilizziamo la variabile div che rappresenta il divisore. Questa variabile la inizializziamo a 1. Dopo realizziamo un ciclo utilizzando l’istruzione ripeti fino a quando che si fermerà quando la variabile div sarà uguale al valore del numero preso in input.
Quindi controlliamo all’interno del ciclo se il resto della divisione del numero per il divisore è uguale a zero. Se è vero allora inseriamo la variabile div all’interno della lista divisori, altrimenti non facciamo nulla. In ogni caso incrementiamo la variabile div di uno per trovare altri divisori possibili del numero preso in input.
Utilizzo del blocco trova
Ci servirà adesso un altro blocco che chiamo ad esempio trova che servirà a trovare il divisore più grande possibile.
Come agirà questo blocco? Assegniamo alla variabile lunghezza il valore della lunghezza dei divisori. Dopo usiamo un indice i che scorre la lista dalla fine all’inizio. Appena trova un divisore, quello sarà il massimo comune divisore e quindi il programma si può fermare. Se arriva ad 1 vuol dire che i numeri sono coprimi.
N.B. Potevo anche fare a meno di utilizzare la variabile lunghezza, cambiando alcune impostazioni. Cioè portando i uguale alla lunghezza di divisori e cambiare il ciclo ripeti fino a quando lunghezza di divisori è uguale a zero.
Programma principale per trovare il massimo comune divisore con Scratch
Adesso dobbiamo sviluppare il programma principale.
Chiediamo il primo numero e se negativo lo trasformiamo in positivo, perché il procedimento è uguale. Per trasformare il numero in positivo o lo moltiplichiamo semplicemente per -1 oppure utilizziamo la funziona abs.
Dopo avviamo il blocco divisori.
Poi chiediamo il secondo numero e anche questo, se negativo, lo trasformiamo in positivo.
Infine avviamo il blocco trova che troverà il massimo comune divisore.
Chiaramente questo è uno dei possibili metodi per trovare il massimo comune divisore con Scratch.
Nella prossima lezione vi presenterò la soluzione con il metodo di Euclide.
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.