In questa lezione implementeremo un algoritmo per la somma dei pari e dei dispari in Scratch 3.
Dati N numeri stampare la somma di quelli pari e di quelli dispari.
Algoritmo per la somma dei pari e dei dispari
Come sempre, innanzitutto scegliamo uno sfondo ed uno sprite qualsiasi.
Dopo creiamo le variabili necessarie:
N indica i numeri da inserire;
numero rappresenta il numero da inserire di volta in volta;
somma_p per la somma dei numeri pari;
somma_dper la somma dei numeri dispari.
1. Inizializziamo a zero le variabili che servono a sommare i pari e i dispari, che chiamiamo somma_p e somma_d.
2. Chiediamo quanti numeri inserire.
3. Portiamo la variabile N a risposta.
4. Realizziamo un cicloche ripeteremo finché la condizione N maggiore di 0è falsa e inseriamo queste istruzioni:
a. Chiediamo quanti numeri inserire.
b. Portiamo la variabile N a risposta.
Il ciclo serve ad inserire nuovamente N, qualora l’utente dovesse inserire un numero uguale a zero o negativo.
5. Realizziamo un altro cicloche ripeteremo N volte e inseriamo queste istruzioni:
a. Chiediamo quindi di inserire il numero.
b. Portiamo la variabile numero a risposta.
c. Con l’istruzione se controlliamo se il numero è pari, cioè se il resto della divisione di numero diviso 2 è uguale a zero e se vero:
d. Sommiamo il numero alla variabile somma_p.
e. Altrimenti sommiamo il numero alla variabile somma_d.
6. Infine visualizziamo le due somme utilizzando l’istruzione dire.
Ecco dunque il codice a blocchi completo dell’algoritmo per la somma dei pari e dei dispari:
Chiaramente si poteva utilizzare anche un’istruzione ripeti fino a quando ed utilizzare così una variabile contatore.
Allego anche il codice in C++ dell’algoritmo per la somma dei pari e dei dispari, per chi volesse consultarlo:
#include <iostream>
using namespace std;
int main() {
int i, N, numero, somma_p=0,somma_d=0;
do{
cout<<"Quanti numeri vuoi inserire?: \t";
cin>>N;
}while (N<=0);
i=0;
while(i<N) {
cout<<"Inserisci il numero: \t";
cin>>numero;
if(numero%2==0)
somma_p+=numero;
else
somma_d+=numero;
i++;
}
cout<<"La somma dei pari e': "<<somma_p<<endl;
cout<<"La somma dei dispari e': "<<somma_d<<endl;
return 0;
}
Nelle prossime lezioni faremo ancora degli esempi di algoritmi sulle strutture iterative in Scratch 3.
Risolviamo questo nuovo problema che consiste nel trovare quante volte ricorre il maggiore in una serie di numeri immessa in input.
Dati N numeri determinare il valore maggiore e quante volte esso ricorre.
Algoritmo per trovare quante volte ricorre il maggiore in scratch 3
Al solito, innanzitutto scegliamo uno sfondo ed uno sprite qualsiasi.
Dopo creiamo le variabili necessarie:
Nindica i numeri da inserire;
numerorappresenta il numero da inserire di volta in volta;
max rappresenta la variabile che contiene il numero massimo;
conta_max rappresenta la variabile che conta quante volte ricorre il valore massimo;
1. Inizializziamo la variabile conta_maxa 1
2. Chiediamo quanti numeri inserire.
3. Portiamo la variabile N a risposta.
4. Realizziamo un cicloche ripeteremo finchè la condizione N maggiore di 0è falsa e inseriamo queste istruzioni:
a. Chiediamo quanti numeri inserire.
b. Portiamo la variabile N a risposta.
Il ciclo serve a inserire nuovamente N qualora l’utente dovesse inserire un numero uguale a zero o negativo.
6. Chiediamo quindi di inserire il primo numero.
7. Portiamo la variabile maxa risposta.
Facendo in questo modo stiamo inizializzando il valore massimo al primo numero inserito. Non è infatti possibile inizializzare il valore massimo a zero, in quanto, se ad esempio inserissi questi numeri: -5, -4, -11, il valore massimo inserito risulterebbe zero anzichè -4.
8. Realizziamo un cicloche ripeteremo N-1 (perchè un numero è già stato inserito) volte e ripetiamo queste istruzioni:
a. Chiediamo unnumero
b. Memorizziamo in numerola risposta
c. Utilizziamo l’istruzione se per controllare che il numeroappena inserito sia maggioredel valore massimo.
d. se vero allora aggiorniamo la variabile maxcon il nuovo valore e riportiamo conta_maxa 1.
e. altrimenti utilizziamo nuovamente l’istruzione seper controllare che il numeroappena inserito sia ugualeal valore massimo. Dunque se vero incrementiamo la variabile conta_max.
9. Infine visualizziamo il valore massimo e quante volte occorre con l’istruzione dire.
Ecco dunque una possibile soluzione per trovare quante volte ricorre il maggiore in Scratch 3.
In questo esercizio implementeremo un algoritmo per trovare il massimo di N numeri in Scratch.
Procedimento: calcolo del massimo di N numeri in Scratch 3
Scegliamo dapprima uno sfondo ed uno sprite qualsiasi. Dopo, nello sprite scelto, aggiungiamo i seguenti passi:
1. Chiediamo quanti numeri inserire.
2. Portiamo la variabile N a risposta.
3. Realizziamo un cicloche ripeteremo finché la condizione N maggiore di 0è falsa e inseriamo queste istruzioni:
a. Chiediamo quanti numeri inserire.
b. Portiamo la variabile N a risposta.
Il ciclo serve a inserire nuovamente N qualora l’utente dovesse inserire un numero uguale a zero o negativo.
5. Chiediamo quindi di inserire il primo numero.
6. Portiamo la variabile maxa risposta.
Facendo in questo modo stiamo inizializzando il valore massimo al primo numero inserito. Non è infatti possibile inizializzare il valore massimo a zero, in quanto, se ad esempio inseriamo questi numeri: -5, -4, -11, il valore massimo inserito risulterebbe zero anziché -4.
7. Realizziamo un cicloche ripeteremo N-1 (perché un numero è già stato inserito) volte e ripetiamo queste istruzioni:
a. Chiediamo unnumero
b. Memorizziamo in numerola risposta
c. Utilizziamo l’istruzione se per controllare che il numeroappena inserito sia maggiore del valore massimo.
8. Infine visualizziamo il valore massimo di N numeri così ottenuto, utilizzando l’istruzione dire.
Al posto di ripeti N-1 volte si poteva utilizzare una variabile contatore ed il ciclo ripeti fino a quando la variabile contatore è uguale ad N-1.
Ricordiamo che in Scratch si entra nel ciclo se la condizione è falsa e si esce quando è vera.
Ecco quindi la seconda soluzione del massimo di N numeri in Scratch 3:
Per chi volesse consultare l’algoritmo in C++ per il calcolo del massimo di N numeri, ecco un esempio di possibile sviluppo:
#include <iostream>
using namespace std;
int main() {
int i, N, max, numero;
do{
cout<<"Quanti numeri vuoi inserire? : \t";
cin>>N;
}while (N<=0);
i=0;
cout<<"Inserisci il primo numero: \t";
cin>>max;
while(i<N-1) {
cout<<"Inserisci il numero: \t";
cin>>numero;
if(numero>max)
max=numero;
i++;
}
cout<<"Il massimo e': \t"<<max<<endl;
return 0;
}
In questo esempio realizziamo la media di N numeri con Scratch 3.
Quindi chiediamo in input quanti numeri inserire, li sommiamo tra loro ed alla fine calcoliamo e visualizziamo la media.
Procedimento media di N numeri con Scratch
Innanzitutto scegliamo uno sfondo ed uno sprite qualunque. Dopo, nello sprite scelto, aggiungiamo i seguenti passi:
1. Portiamo la variabile sommaa zero.
2. Chiediamo quanti numeri inserire.
3. Portiamo la variabile N a risposta.
4. Realizziamo un cicloche ripeteremo N volte e ripetiamo queste istruzioni:
a. Chiediamo unnumero
b. Memorizziamo in numerola risposta
c. Aggiorniamo la sommaaggiungendo il numeroappena inserito.
5. Al termine del ciclo facciamo la media con l’operazione media=somma/N
6. Infine dire il risultato memorizzato nella variabile media.
Ecco quindi il codice a blocchi per il calcolo della media di N numeri con Scratch 3:
Chiaramente però l’utente potrebbe inserire valori di N negativi, o uguale a zero. Quindi sarebbe opportuno fare un controllo dell’input su N.
Per fare ciò basterà inserire un blocco ripeti fino a quando N è maggiore di 0 e all’interno richiedere nuovamente il numero.
Ecco dunque l’algoritmo per il calcolo della media di N numeri con controllo dell’input.
Sviluppiamo adesso lo stesso algoritmo in linguaggio C++, per chi vuole vedere le analogie con un linguaggio di programmazione.
Noterete che si entra nel ciclo while se la condizione è vera, al contrario di Scratch.
#include <iostream>
using namespace std;
int main() {
int i, N;
float numero, somma, media;
somma=0;
do{
cout<<"Quanti numeri vuoi inserire? : \t";
cin>>N;
}while (N<=0);
i=0;
while(i<N) {
cout<<"Inserisci il numero: \t";
cin>>numero;
somma=somma+numero;
i++;
}
media=somma/N;
cout<<"La media dei numeri e': \t"<<media<<endl;
}
Potremmo anche fare a meno di utilizzare la variabile somma e memorizzare tutto nella variabile media, in quanto non ci serve riutilizzare il valore della somma.
Inoltre l’istruzione somma=somma+numero; si può scrivere anche come somma+=numero.
Chiaramente al posto del while si potrebbe utilizzare anche il ciclo for.