Iterazione vuol dire ripetere una o più istruzioni un certo numero di volte, per ottenere il risultato desiderato.
Iterazione con i diagrammi di flusso – esempi
Di seguito ecco l’algoritmo da risolvere:
Prendere in input 10 numeri e contare quanti numeri pari e quanti dispari sono stati inseriti.
Proponiamo di risolvere questo algoritmo iterativo utilizzando il ciclo while, anche se precisiamo è un ciclo con contatore e quindi il ciclo for sarebbe più indicato. Difatti questa risoluzione viene affrontata esclusivamente per permettere una discussione ed un confronto tra i due metodi.
Iterazione – Primo metodo
Innanzitutto inizializziamo a zero le variabili che ci servono.
In questo caso sono conta, contap e contad e per comodità le ho inserite in un unico rettangolo. Dopo inseriamo il ciclo while impostando la condizione conta<10.
Quindi chiediamo di inserire in input il numero n e controlliamo se è pari.
Per controllare se un numero è pari si considera il resto della divisione del numero diviso 2. Se è pari, incrementiamo il contatore dei pari, altrimenti incrementiamo il contatore dei dispari.
Non dimentichiamo di incrementare conta, altrimenti il ciclo sarà infinito.
Al termine dire quanti sono i numeri pari e dispari inseriti.
Iterazione con i diagrammi di flusso – secondo metodo
Per risolvere l’algoritmo innanzitutto assegniamo ad N il valore 10, in quanto dobbiamo inserire 10 elementi.
N=10
Successivamente per ogni elemento inserito decrementeremo N.
Dopo inizializziamo anche le due variabili contap e contad a zero:
contap=0 e contad=0
Queste variabili dunque serviranno per contare quanti numeri pari e dispari sono stati inseriti.
Successivamente realizziamo un ciclo while dove metteremo la condizione: N>0. Il ciclo cioè continuerà finché N sarà positivo.
Le istruzioni che saranno eseguite all’interno del ciclo while sono:
Chiediamo in input il numero n;
Dopo, utilizzando l’istruzione di selezione if, facciamo un test per vedere se il numero è pari: n%2==0. Cioè il resto della divisione di n diviso due è uguale a zero? Ricordiamo che % è l’operatore modulo che permette di calcolare il resto della divisione. Quindi se la condizione è vera incrementiamo il contatore dei pari (contap=contap+1), altrimenti incrementiamo quello dei dispari (contad=contad+1).
Poi decrementiamo N di uno.
Alla fine del ciclo stampiamo i valori dei due contatori ottenuti.
Ecco quindi l’algoritmo di iterazione sviluppato con il diagramma di flusso:
Chiaramente ci possono essere tante altre soluzioni all’algoritmo proposto.
Questo è solo un semplice esempio di iterazione rappresentato con i diagrammi di flusso.
Alcuni link utili
Indice argomenti diagrammi a blocchi
Divisori di un numero con Algobuild
Algoritmi di selezione sugli angoli
Numeri amicabili con algobuild