Iterazione

L’UTILITA’ DEI CICLI ITERATIVI

Quando una sequenza di istruzioni viene ripetuta fino a quando non si verifica una certa condizione prende il nome di struttura iterativa.

Un algoritmo avente una struttura iterativa è una tipologia di algoritmo costituito da una sequenza di azioni che viene ripetuta, finché è necessaria la ripetizione stessa (un ciclo). Tutte le operazioni che richiedono la ripetizione di una stessa azione più volte, ma in numero finito sono dette procedure iterative. Ad ogni iterazione, l’esecutore svolge un compito. Al termine verifica se tale compito vada ripetuto mediante una condizione di ripetizione.

 

A cosa servono i cicli iterativi?

I cicli iterativi sono utilizzati per due scopi:

  • Risparmiare codice.
  • Agevolare la scrittura del codice.

 

Definizione

Nella programmazione dei computer, l’iterazione, chiamata anche ciclo o con il termine inglese loop, è una struttura di controllo, all’interno di un algoritmo risolutivo di un problema dato, che ordina all’elaboratore di eseguire ripetutamente una sequenza di istruzioni, solitamente fino al verificarsi di particolari condizioni logiche specificate.

 

 

Esempio 1

Per spiegare meglio il concetto di algoritmo iterativo, si consideri il lavoro svolto da un utente che vuole prendere una bevanda da 35 cent da un distributore automatico. Supponiamo che il distributore accetti solo monete da 5 cent. Egli deve eseguire le stesse azioni ripetutamente finché non ha raggiunto 35 cent.

  1. Inserisci una moneta da 5 cent.
  2. Se non hai inserito almeno 35 cent torna al punto 1.

 

Esempio 2

Catena di montaggio per assemblare i componenti di un PC.

  1. Preleva un componente.
  2. Assembla il componente.
  3. Se ci sono altri componenti da assemblare, torna al punto 1.

 

Esempio 3

Invio di una email contenente un allegato costituito da 10 file.

  1. Invia un file.
  2. Verifica se ci sono altri file. Se Si torna al punto 1 altrimenti prosegui.

 

Esempio 4

Leggere 5 interi, calcolare la media e stamparla a video.

IN v1

IN v2

IN v3

IN v4

IN v5

SOMMA ß v1 + v2 + v3 + v4 + v5

MEDIA ß SOMMA/5

OUT MEDIA

 

Questa strategia di soluzione non è accettabile, in quanto porta alla realizzazione di un algoritmo illeggibile e costituito da molte istruzioni. Inoltre, se si volesse modificare l’algoritmo al fine di gestire non più 5 voti ma 10, occorrerebbe aggiungere ulteriori istruzioni e modificare la formula della media.

 

La prima osservazione da fare, indipendentemente dalle tecniche di iterazione che andremo a definire, è che possiamo generalizzare il precedente codice in modo da renderlo adattabile a future modifiche.

 

ITERAZIONI

In un algoritmo può capitare di dover eseguire un insieme di istruzioni, in modo identico, più volte. Si parla allora di cicli iterativi (LOOP).

L’esempio precedente può così essere riscritto utilizzando i cicli iterativi:

iterare

NUM ISTRUZIONI
1

2

3

4

5

6

7

8

9

10

11

12

PROG main

ASSIGN SOMMA=0

ASSIGN MAX=5

ASSIGN CONTA=0

WHILE CONTA<MAX

IN NUM

ASSIGN SOMMA=SOMMA+NUM

ASSIGN CONTA=CONTA+1

END WHILE //CONTA<MAX

ASSIGN MEDIA=SOMMA/MAX

OUT MEDIA

END PROG //main

 

TRACING (NUM=6,5,7,6,6)
NUM SOMMA MAX CONTA NUM MEDIA CONTA<MAX OUT
1              
2 0            
3   5          
4     0        
5           VERO  
6       6      
7 6            
8     1        
5           VERO  
6       5      
7 11            
8     2        
5           VERO  
6       7      
7 18            
8     3        
5           VERO  
6       6      
7 24            
8     4        
5           VERO  
6       6      
7 30            
8     5        
5           FALSO  
9              
10         6    
11             6
12              

MAX = 5 //Numero di voti da sommare

IN v1

IN v2

IN v3

IN v4

IN v5

SOMMA ß v1 + v2 + v3 + v4 + v5

MEDIA ß SOMMA/ MAX

OUT MEDIA

 

Grazie alla variabile MAX, inizializzata a 4 la formula per il calcolo della media è stata generalizzata. Se in futuro volessimo gestire la media di 10 voti, oppure di 100 voti, basterà modificare solo l’assegnazione MAX = 5 in MAX = 10 piuttosto che in MAX = 100 a seconda della necessità, senza apportare modifiche a nessun’altra parte del codice.

Rimane comunque ancora un problema, pesante, della lunghezza del codice, in quanto per gestire 10 voti si dovrebbero utilizzare 10 variabili e fare 10 acquisizioni e modificare la formula della SOMMA (SOMMA ß v1 + v2 ….. + v10). Senza parlare poi che se i voti fossero 100 l’algoritmo diventa ingestibile. È necessario, in questi casi, allora cambiare strategia e utilizzare i cicli iterativi.