Il ciclo while, che abbiamo introdotto nella scorsa lezione, serve a ripetere delle istruzioni un determinato numero di volte. Il ciclo while è dunque indicato ad esempio quando dobbiamo prendere N numeri e li dobbiamo sommare, ed in tantissimi altri casi.
Continuiamo a fare degli esempi di utilizzo.
Uso del ciclo while – esempio
Prendere in input 10 numeri e sommarli, quindi visualizzare la somma in output.
Analizziamo il problema. Ci serve, come spiegato nella precedente lezione, un contatore che parte da 0 e che si fermi a 9.
Ogni volta che prendiamo in input un numero poi dobbiamo memorizzarlo in una variabile somma che inizializziamo a 0. Nella nuova versione di Algobuild occorre inizializzarla a 0.0 per non avere errori.
Infatti, se non dichiariamo il tipo di dato del numero n, preso in input, di default Algobuild considera questo numero come double.
Quindi, ogni volta, dobbiamo sommare il nuovo numero alla variabile iniziale che ha valore 0. Ricordiamo infatti che 0 è l’elemento neutro della somma, in quanto il risultato finale non viene alterato.
Ecco dunque l’algoritmo completo che realizza la somma di 10 numeri con il ciclo while.
Ricordiamo che nel while, verrà intrapreso il percorso verso il basso se la condizione espressa all’interno del while (rombo) è vera. Mentre si prenderà il percorso a destra quando la condizione all’interno del while è falsa.
Seconda soluzione
Possiamo anche realizzare il ciclo partendo da 10, decrementandolo ogni volta di 1. In pratica utilizziamo direttamente N come contatore.
Quindi assegniamo ad N il valore 10 e lo decrementeremo di 1 per ogni numero che inseriremo.
Poi inizializziamo la variabile somma a zero, cioè scriviamo somma=0.
Se lo sviluppiamo con Algobuild, nella nuova versione, occorre indicare il valore 0.0.
Impostiamo poi la condizione all’interno del while: N>0, cioè finché N è positivo eseguiamo queste istruzioni:
Inseriamo in input il numero n;
Sommiamo il numero n: somma=somma+n. Quindi la prima volta che sarà eseguita questa istruzione avremo: somma=0+n, infatti 0 è l’elemento neutro della somma. Non fare l’inizializzazione comporterebbe degli errori, in quanto le variabili non inizializzate contengono dei cosiddetti valori “immondizia” cioè contengono l’ultimo dato immagazzinato nella locazione di memoria riservata per quella variabile.
Decrementiamo N di uno.
Tutto ciò verrà ripetuto 10 volte, ecco i decrementi che subirà N: 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0. Quando arriva a zero uscirà dal ciclo while, perché la condizione (N>0) è falsa, dunque stamperemo la somma totale.
Ecco dunque il diagramma a blocchi completo dell’algoritmo per la somma di 10 numeri, realizzato con l’uso del ciclo while. Per lo sviluppo ho utilizzato il software Algobuild nella versione vecchia, nella nuova vi ricordo di impostare somma=0.0.
Questo è solo un semplice esempio di utilizzo del ciclo while con i diagrammi di flusso, ne proporrò tanti altri.
Alcuni link utili
Indice argomenti diagrammi di flusso
Divisori di un numero con Algobuild
Algoritmi di selezione sugli angoli
Numeri amicabili con Algobuild