Media di N numeri con scratch

Media di N numeri con scratch

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.

media sfondo

Dopo creiamo le variabili necessarie.

materie sfondo

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.

media 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ì:

calcolo della media


Alcuni link utili

Area e perimetro con scratch

Divisori di un numero con scratch

Multipli di un numero con scratch

Numeri pari con scratch

Esercizi con scratch

Potenze con scratch

Quoziente potenze stessa base con scratch

Palindroma con scratch

Storiella con scratch

Serie buffa con scratch

Operazioni matematiche con scratch

Come sommare un intervallo di numeri con scratch

Anno bisestile con scratch

Selezione con scratch

Olimpiadi di informatica con scratch

Olimpiadi di matematica con scratch

Figure equivalenti con scratch


Quiz Scratch scuola primaria

Quiz Scratch scuola primaria

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:

variabili scratch

Scegliamo uno sfondo e uno sprite qualunque:

sfondo sprite

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.

domande

Ecco il codice completo:

quiz scratch
seconda parte quiz

Il blocco invia a tutti finito per il calcolo del punteggio:

punteggio scratch

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.


Alcuni link utili

Area e perimetro con scratch

Divisori di un numero con scratch

Multipli di un numero con scratch

Numeri pari con scratch

Esercizi con scratch

Potenze con scratch

Quoziente potenze stessa base con scratch

Palindroma con scratch

Storiella con scratch

Serie buffa con scratch

Operazioni matematiche con scratch

Come sommare un intervallo di numeri con scratch

Anno bisestile con scratch

Selezione con scratch

Olimpiadi di informatica con scratch

Olimpiadi di matematica con scratch

Figure equivalenti con scratch


Algoritmo di Euclide

Algoritmo di Euclide

L’algoritmo di Euclide è un metodo per trovare il massimo comune divisore tra due numeri interi.

Ricordiamo che il massimo comune divisore, MCD, tra due numeri interi è il più grande divisore comune ad entrambi.

Come si determina? Si calcola per ognuno l’elenco dei divisori e tra i due gruppi si individua il numero più grande.

Ricordo che vi avevo presentato l’algoritmo in questa lezione: massimo comune divisore con scratch.

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.

euclide

Dopo creiamo le variabili necessarie:

variabili algoritmo di euclide

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.

scratch 2


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.

Alcuni link utili

Area e perimetro con scratch

Divisori di un numero con scratch

Multipli di un numero con scratch

Numeri pari con scratch

Esercizi con scratch

Potenze con scratch

Quoziente potenze stessa base con scratch

Palindroma con scratch

Storiella con scratch

Serie buffa con scratch

Operazioni matematiche con scratch

Come sommare un intervallo di numeri con scratch

Anno bisestile con scratch

Selezione con scratch

Olimpiadi di informatica con scratch

Olimpiadi di matematica con scratch

Figure equivalenti con scratch


Massimo Comune Divisore con Scratch

Massimo Comune Divisore con Scratch

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à.

massimo comune divisore

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.

lista MCD

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.

blocco MCD

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.

trova mcd

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.

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.

Alcuni link utili

Divisori di un numero con scratch

Multipli di un numero con scratch

Numeri pari con scratch

Esercizi con scratch

Potenze con scratch

Quoziente potenze stessa base con scratch

Palindroma con scratch

Storiella con scratch

Serie buffa con scratch

Operazioni matematiche con scratch

Come sommare un intervallo di numeri con scratch

Anno bisestile con scratch

Selezione con scratch

Olimpiadi di informatica con scratch

Olimpiadi di matematica con scratch

Figure equivalenti con 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