CAPITOLO 12 - ALGORITMI (MODELLI ITERAZIONE)
IL COSTRUTTO ITERAZIONE
Il costrutto iterazione (o iterativo) viene utilizzato quando un’istruzione (o un gruppo di istruzioni)
deve essere eseguita, finché non si verifica una determinata condizione. Nella programmazione strutturata
vengono utilizzati due costrutti iterativi, ma, prima di enunciarli dettagliatamente, facciamo qualche
esempio per comprendere bene la loro utilità. Supponiamo di dover scrivere un algoritmo, che restituisca
la somma di tre numeri A,B,C. Acquisiamo dall’esterno i valori di A, B, C, li sommiamo e visualizziamo
il risultato. E se avessimo dovuto fare la somma di 100 numeri? Avremmo utilizzato 100 variabili?
Avremmo realizzato l’algoritmo seguente?
Certamente no!!! Per risolvere problemi di questo tipo, in cui un’azione o un gruppo di azioni devono
essere ripetute un certo numero di volte, conviene utilizzare il costrutto iterazione.
1
CAPITOLO 12 - ALGORITMI (MODELLI ITERAZIONE)
COSTRUTTO ITERAZIONE CON CONTROLLO IN TESTA (WHILE)
MODALITA’ DI FUNZIONAMENTO: Durante la sua esecuzione si
valuta la <condizione> e se è vera si eseguono le istruzioni del ciclo;
una volta terminate, si ritorna a valutare la condizione del ciclo. Se la
condizione è falsa ( e prima o poi dovrà succedere altrimenti si verifica
un ciclo infinito) il ciclo termina e l’algoritmo passa all’istruzione
immediatamente successiva presente nella strada del falso.
MODELLO 1: “DATI N NUMERI….” (CICLO DEFINITO)
Tutti gli esercizi che presentano la dicitura “Dati N numeri….” o che necessitano di eseguire un
numero N finito di ripetizioni possono essere risolti con la seguente struttura ciclica:
Tralasciando per il momento i blocchi evidenziati in rosso, contenenti istruzioni caratteristiche per
la soluzione del problema dato (vedere la sezione Tipologia di problemi richiesti, più avanti in
questo capitolo per le istruzioni da inserirvi), tutto il resto permette di richiedere all’utente il
numero di numeri da inserire e, successivamente, procedere al loro effettivo inserimento.
2
CAPITOLO 12 - ALGORITMI (MODELLI ITERAZIONE)
L’algoritmo si basa sul confronto tra il numero di cicli effettuati (utilizzo della variabile C come
contatore) e il numero di cicli da effettuare (contenuto della variabile N ).
Nell’algoritmo precedente la variabile C veniva inizialmente impostata a 1; a volte può essere utile
iniziare il conteggio da zero, se ciò fosse necessario ricordarsi di modificare anche la condizione
impostata nel ciclo passandola da (C<=N) a (C<N).
MODELLO 2: “DATA UNA SEQUENZA DI NUMERI TERMINANTE CON ZERO….”
(CICLO INDEFINITO)
Tutti gli esercizi che presentano la dicitura “Dati una sequenza di numeri terminante con
zero….” possono essere risolti con la seguente struttura ciclica:
Questo algoritmo può funzionare solamente quando il numero 0 non fa parte dei numeri validi
della sequenza (il numero zero diventa un numero di controllo). Come si può notare, infatti, tutte
le volte che un numero viene inserito in input immediatamente dopo lo si confronta con lo zero: se
il test da esito negativo il numero viene utilizzato nelle operazioni per la determinazione del
risultato (numero valido) altrimenti ne provoca l’immediata fine (numero di controllo).
Attenzione: Lo zero potrebbe essere sostituito con qualsiasi altro numero e l’algoritmo
continuerebbe ad essere valido. Si pensi, ad esempio, ad un programma che, data una sequenza di
temperature, debba calcolarne la media. In questo caso, la temperatura zero non sarebbe possibile
3
CAPITOLO 12 - ALGORITMI (MODELLI ITERAZIONE)
inserirla perché provocherebbe il termine del ciclo ma essa stessa è una temperatura valida. In
questo caso nasce la necessità di indentificare un altro numero come elemento di controllo al posto
dello zero utilizzato in precedenza. Considerando che in natura non esiste una temperatura più
bassa dello zero assoluto (-273°C) si potrebbe chiedere all’utente di inserire -999 per manifestare
la sua volontà di terminare e non lo zero. (-999 diventerebbe un numero di controllo mentre zero
diventerebbe un numero valido).
Rispetto all’algoritmo “Dati N Numeri..” l’utente può decidere di terminare in qualsiasi momento
la sequenza dei numeri semplicemente inserendo il numero di controllo; non conoscendo a priori
quando l’utente vorrà terminare si dice che questo ciclo è un ciclo indefinito.
MODELLO 3: “CHIEDENDO ALL’UTENTE LA VOLONTA’ DI CONTINUARE
OPPURE NO….” (CICLO INDEFINITO)
Tutti gli esercizi che presentano la dicitura “chiedendo all’utente la volontà di continuare
oppure no ….” possono essere risolti con la seguente struttura ciclica:
Questo algoritmo costituisce una valida alternativa al modello 2 quando non è possibile definire
nella sequenza un numero di controllo ma sono tutti numeri validi. Ovviamente risulta più oneroso
di input rispetto al precedente.
4
CAPITOLO 12 - ALGORITMI (MODELLI ITERAZIONE)
COSTRUTTO ITERAZIONE ( CICLO FOR)
MODALITA’ DI FUNZIONAMENTO: Il ciclo FOR
consente di gestire in automatico una variabile che gli
viene assegnata (nel nostro esempio i). La variabile
assumerà tutti i valori compresi tra due valori specificati
nell’istruzione (valore iniziale/ valore finale). Il valore
della variabile passerà dal valore iniziale al valore finale
con l’incremento di un passo. Il passo, se non specificato,
vale 1.
ATTENZIONE: QUESTO CICLO PUO’ ESSERE UTILIZZATO SOLO QUANDO GLI
ESERCIZI PRESENTANO LA DICITURA “DATI N NUMERI….” (CICLO DEFINITO)
5
CAPITOLO 12 - ALGORITMI (MODELLI ITERAZIONE)
TIPOLOGIA DI PROBLEMI RICHIESTI
Solitamente i problemi che si possono incontrare in abbinamento ad una serie di numeri chiesti in input
all’utente sono:
 Somma o Prodotto
 Conteggio
 Minimo o Massimo
In generale, ad ogni risultato richiesto dal problema si assegna una variabile che dovrà avere un valore
iniziale (Blocco1), sulla variabile si effettueranno delle operazioni (Blocco 2), e alla fine, visualizzando il
contenuto della variabile, si visualizzerà il risultato del problema. Lo schema successivo schematizza, in
modo dettagliato, i blocchi necessari per la soluzione delle varie problematiche che andranno sostituiti nei
modelli visti nel paragrafo precedente.
Variabile
associata
Blocco 1
Somma
Prodotto
Conteggio
Minimo
Max
somma
prod
cont
min
max
Blocco 2
Blocco 3
6