Indovinelli con Scratch

In questa lezione realizzemo un gioco con gli indovinelli con Scratch.
Proporremo 4 semplici indovinelli:
1) Giro curioso nel bosco fitto e frondoso. Mi arrotolo in palla, sono piccolo e gioioso.
2) Mi nutro di insetti nell’oscurità, Un piccolo mammifero nella mia verità.
3) Nella notte mi senti cantare, Con occhi grandi posso guardare.
4) Faccio il sonnellino durante la lunga stagione. Amo miele e pesce, sono un buon pescatore!

Per individuare la risposta corretta, occorre trascinare ciascun animale sulla macchina. Se la macchina parte con l’animale vuol dire che la risposta è corretta, altrimenti la macchina cambia colore e l’animale ritorna in posizione.

Ecco una possibile implementazione del gioco indovinelli con Scratch:

Numeri perfetti con Scratch

Numeri perfetti con Scratch

Realizziamo adesso un algoritmo con Scratch che controlli se i numeri inseriti in input sono numeri perfetti.

Definizione di numero perfetto

Un numero si dice perfetto quando è uguale alla somma dei divisori propri (tutti i divisori tranne il numero stesso).

Ad esempio il più piccolo numero perfetto è 6 in quanto i suoi divisori escluso se stesso sono 1, 2 e 3.


Procedimento algoritmo sui numeri perfetti con Scratch

script numeri perfetti scratch

Per la risoluzione dell’algoritmo utilizziamo le variabili:

numero che rappresenta il numero da valutare

div che rappresenta il divisore per cui verrà diviso il numero

somma che conterrà la somma dei divisori.

Quindi chiediamo all’utente di inserire un numero e memorizziamo la risposta nella variabile numero.

Dobbiamo trovare i divisori del numero preso in input, sommarli e dopo confrontare la somma ottenuta con il numero.

Quindi dovrei cominciare a dividere i numeri prima per 1, poi per 2, poi per 3, ecc…

Ma è scontato che ciascun numero è divisibile per 1, quindi faccio partire il divisore da 2. Chiamiamo la variabile divisore div e assegniamo a div il valore di 2.

Creo inoltre la variabile somma che conterrà la somma dei divisori.

Farò partire la variabile somma da 1, perché come detto sopra, possiamo già sommare il divisore 1.

All’interno del ciclo controlliamo se il numero è divisibile per div.

Come si fa a controllarlo?

Basterà controllare se il resto della divisione di numero diviso div è uguale a zero.

Se vero allora aggiorno la variabile somma aggiungendo il valore di div, altrimenti non lo aggiungo. In ogni caso vado avanti e incremento div di 1.

Continuo finché il divisore non raggiunge la metà del numero (numero/2) infatti è scontato che dividendo un numero per un numero maggiore della sua metà si avrà un numero con la virgola, ovvero si avrà che il resto è diverso da zero.

Al termine controllo se il numero inserito coincide con la somma.

Se è così il numero è perfetto, altrimenti non lo è.

È chiaro che ci possono essere altre possibili soluzioni o ampliamenti dell’algoritmo stesso. Proponete pure la vostra soluzione nei commenti e ne discuteremo assieme.


Alcuni link utili

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

Equazioni di primo grado in Scratch

Equazioni di primo grado in Scratch

Oggi realizzeremo un semplice script che ci permetterà di risolvere le equazioni di primo grado in Scratch.

Partiamo dando una definizione.

Si dice equazione una uguaglianza tra due espressioni che si verifica solo per particolari valori assegnati alle variabili dette incognite in essa contenute.

Le equazioni di primo grado sono equazioni in cui l’incognita è elevata all’esponente 1.

Le equazioni di primo grado sono dunque quelle espresse ad esempio nella forma:

ax+b=0

Facciamo un esempio banale:

4x+8=0 è un’equazione di primo grado

4x2+8=0 non è ovviamente di primo grado

Algoritmo in Scratch per il calcolo delle equazioni di primo grado.

Realizziamo adesso il nostro algoritmo.
Prendiamo in input a, ovvero il coefficiente del termine di primo grado e b, il termine noto.

Dobbiamo calcolare il valore della nostra incognita x che facendo un semplice passaggio sarà:

ax+b=0 da cui ax=-b e da qui si ricava x=-b/a

È necessario fare un controllo sulle due variabili a e b perché se sono entrambe uguali a zero la nostra equazione è indeterminata, invece se solo la variabile a è uguale a zero l’equazione è impossibile, in quanto dovremmo dividere per zero.

Se una delle condizioni sopra non si verifica allora posso risolvere la mia equazione.
Infatti, anche se b fosse uguale a zero l’equazione si potrebbe risolvere, in questo caso la nostra x sarebbe uguale a zero.


Esempio:

Se ho questa equazione:

7x+5=0 la nostra x sarà uguale a 0,714528…

Sarebbe preferibile arrotondare il risultato a 0,714.

Ma la funzione arrotonda di Scratch porterebbe la variabile x a 1.

Con il semplice metodo che ho utilizzato invece ottengo un valore approssimato a 0,714. Come ho fatto?

Premettendo che è possibile trovare altre soluzioni, io ho agito in questo modo.

Ho creato una variabile che ho chiamato approssimazione per gestire l’arrotondamento. Dopo ho moltiplicato arrotonda di x per 1000 così da avere 714 e poi per avere come risultato 0,714 chiaramente ho diviso per 1000.

Allego lo script completo per il calcolo delle equazioni di primo grado in Scratch.

equazione scratch

Potremmo anche pensare ad una soluzione che richieda di inserire nuovamente la variabile a se si inserisce da tastiera un valore uguale a zero.
Nei linguaggi di programmazione userei ad esempio il ciclo do-while.

Ecco quindi un’altra possibile soluzione nella quale chiedo l’inserimento di entrambi a e b, ma potrei chiedere anche solo a.

equazioni scratch

Chiaramente proponete pure la vostra soluzione nei commenti al fine di confrontarci.

Alcuni link utili

Disegnare poligoni regolari in 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


Massimo tra N numeri con Scratch

Massimo tra N numeri con Scratch

Realizziamo un programma che calcoli il massimo tra N numeri in Scratch.
Ovvero dati N numeri determinare il maggiore.

Definizione di massimo

Il valore massimo, molte volte detto semplicemente max, è il valore più grande tra una serie di numeri.

Procedimento dell’algoritmo che calcola il massimo tra N numeri con Scratch

Primo procedimento con ripeti N volte

Per sviluppare l’algoritmo utilizzeremo due variabili: N e Max.

Quindi, chiediamo quanti numeri vogliamo inserire e memorizziamo il risultato in N.

Dopo chiediamo il primo numero e lo memorizziamo nella variabile Max. Quindi, dato che abbiamo chiesto un numero adesso ne dovrò inserire N-1.

Poniamo N uguale ad N-1.

Realizziamo poi un ciclo che per N volte chiede di inserire dei numeri. All’interno del ciclo ciascun numero verrà confrontato con il MAX e se è maggiore la variabile Max assumerà il valore di quel numero.

script max n numeri

Abbiamo così realizzato l’algoritmo che calcola il massimo tra N numeri in Scratch.

Questa soluzione è stata realizzata utilizzando ripeti N volte e quindi non è servito il contatore.

Ma realizziamo anche una soluzione che invece utilizzi il ciclo ripeti fino a quando.

Secondo procedimento dell’algoritmo che calcola il massimo tra N numeri con Scratch

Seconda soluzione con l’utilizzo di ripeti fino a quando

Per realizzare questa soluzione servono tre variabili:

N che indica quanti numeri vogliamo inserire;

La variabile Max che conterrà il valore massimo;

La variabile contatore che terrà traccia dei numeri inseriti.

Quindi chiediamo quanti numeri vogliamo inserire e memorizziamo il valore nella variabile N.

Dopo, come abbiamo fatto prima, chiediamo il primo numero e lo memorizziamo in Max.

Facciamo partire la variabile contatore da N-1 perché abbiamo già inserito un elemento, allo scopo di decrementarla ogni volta che si inserisce un numero.

Quindi realizziamo un ciclo che si fermerà quando il valore di contatore raggiungerà zero, ovvero quando si inseriranno tutti i numeri.

All’interno del ciclo, come abbiamo fatto prima, confrontiamo i valori inseriti con Max e ne sostituiamo il valore solo nel caso in cui N è maggiore del Max.
Dobbiamo anche decrementare il contatore di 1. Se dimenticheremo di farlo il ciclo infatti diventerebbe infinito.

Ecco lo script completo.

massimo in scratch

Chiaramente l’algoritmo può essere ampliato con tanto altro, ad esempio si potrebbe inserire un controllo dell’input.

Molte volte si vedono alcuni algoritmi risolti assegnando max=0 invece di chiedere il primo numero. A mio avviso non è molto corretta in quanto se ad esempio si presenta il caso in cui tutti i numeri inseriti sono dei numeri negativi il massimo risulterà essere 0!


Alcuni link utili

Numeri primi in Scratch

La successione di Fibonacci in Scratch

Massimo fra tre numeri in Scratch

Minimo tra 3 numeri in Scratch

Numeri perfetti

Numeri amicabili

Minimo fra tre numeri in Scratch

Minimo fra tre numeri in Scratch

Vediamo adesso come realizzare un algoritmo che calcoli il minimo fra tre numeri in Scratch.

Il procedimento che adotteremo sarà quello che abbiamo già utilizzato nella ricerca del massimo fra tre numeri.

Definizione di minimo

Il valore minimo non è altro che il valore più piccolo tra un insieme di numeri.

Procedimento

Per sviluppare l’algoritmo creiamo 4 variabili come in figura:

minimo scratch

Le variabili posso chiamarle ad esempio A, B, C e minimo.

Successivamente sviluppo lo script, chiedendo in input i tre numeri A, B, C.

Assegno al minimo il primo valore, ovvero A.

Dopo confronto il secondo numero con B. Se B è minore assegno al minimo il valore di B.

Poi vado avanti e confronto C con il minimo. Se C è più piccolo assegno al minimo il valore di C.

script minimo tra tre numeri


Alla fine dirò qual è il minimo fra tre numeri e si fermerà lo script.

Esempio Minimo fra tre numeri in Scratch

Se provo ad inserire ad esempio questi numeri:

A=4

B=8

C=2

Si avranno questi passaggi:

All’inizio al minimo viene assegnato il valore di A.

Quindi minimo=4

Poi si controllerà se B è più piccolo del minimo.
In questo caso ci chiediamo 8 è minore di 4? Non lo è, quindi andiamo avanti.
Dunque adesso controlleremo se C è più piccolo del minimo.
In questo caso ci chiediamo 2 è minore di 4? Lo è quindi assegniamo al minimo il valore di C.

Dunque minimo=2

Alla fine il programma terminerà dicendo: il minimo è 2.


In Scratch ci possono essere tante altre soluzioni che possono risolvere questo algoritmo che calcola il minimo tra tre numeri.
Provate anche voi a sviluppare una soluzione a aggiungetela nei commenti sotto!

Numeri primi in Scratch

La successione di Fibonacci in Scratch

Massimo fra tre numeri in Scratch

Massimo tra n numeri in Scratch

Numeri perfetti

Numeri amicabili