Iterazione

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca
Disambiguazione– Se stai cercando la figura retorica, vediAnafora (figura retorica).
Disambiguazione– "Loop (informatica)" rimanda qui. Se stai cercando il linguaggio di programmazione, vediLOOP (linguaggio di programmazione).

L'iterazioneè l'atto di ripetere un procedimento con l’obiettivo di avvicinarsi a un risultato desiderato. Ogni ripetizione del procedimento è essa stessa definita un'iterazione, e i risultati di una sono utilizzati come punto di partenza per quella successiva. Diffuso è l'utilizzo neglialgoritmie nellaprogrammazionein ambitoinformatico,ma anche in campi come quello della gestione del progetto (project management).

Teorema di Böhm-Jacopini

[modifica|modifica wikitesto]
Lo stesso argomento in dettaglio:Teorema di Böhm-Jacopini.

Nellaprogrammazione informatica,l'iterazione,chiamata anchecicloo con il termineingleseloop,è unastruttura di controllo,all'interno di unalgoritmorisolutivo di un problema dato, che ordina all'elaboratore di eseguire ripetutamente unasequenzadiistruzioni,solitamente fino al verificarsi di particolari condizioni logiche specificate.

Assieme allasequenzao blocco e allaselezioneè una delle tre strutture fondamentali per la risoluzionealgoritmicadi un dato problema secondo il Teorema di Böhm-Jacopini. Esistono varie forme di iterazione; le più conosciute sono ilMENTRE(in inglese:while..do), ilRIPETI(in inglese:repeat..untilodo..while), ed ilPER(comunemente dettociclo for). Si può dire che l'iterazione è l'anello forte della programmazione che consente di automatizzare portando a termine un processo, al quale non basta la semplice esecuzione in sequenza di istruzioni.

Il cosiddetto "ciclo infinito", o "loop infinito",è un caso di iterazione dovuto solitamente ad un errore di programmazione che manda in stallo l'esecuzionedelprogramma,mentre in alcune tecniche di programmazione soprattutto conmicrocontrolloriè utilizzato in maniera voluta per iterare infinitamente all'interno del programma.

MENTRE ( condizione )
blocco di istruzioni
FINE-MENTRE

L'iterazioneMENTREcontrolla la condizione e successivamente, se la condizione lo permette, esegue il blocco di istruzioni che contiene, che può anche non essere eseguito nemmeno una volta (ciò avviene nel caso in cui la condizione risulti falsa già al primo controllo).

Esempio inC:

while(condizione){
...;
...;
}
RIPETI
blocco di istruzioni
FINCHÉ condizione

L'iterazioneRIPETItermina quando la condizione è falsa, e, siccome la condizione viene controllata dopo aver eseguito il blocco di istruzioni, esegue sempre almeno una volta il ciclo.

Esempio inC:

do{
...;
...;
}
while(condizione);
PER N volte
blocco di istruzioni
FINE-PER

L'iterazionePERè paragonabile alMENTREma contiene una condizione implicita che deriva dal fatto che in questo tipo di ciclo il numero di volte che si dovrà eseguire il blocco di istruzioni è noto sin dall'inizio; moltissimi linguaggi di programmazione obbligano il programmatore ad utilizzare unavariabilecontatore, il cui compito è contare il numero di iterazioni compiute, che contiene ad ogni ciclo un numero (solitamente intero), e la condizione solitamente è che una determinata variabile sia minore, maggiore o uguale della variabile contatore. Essa assume tutti i valori intermedi via via che i cicli proseguono, partendo da un valore iniziale fino ad arrivare al valore finale (entrambi dichiarati esplicitamente dal programmatore).

La forma sopra diventa quindi:

PER variabile = inizio A fine PASSO = passo
blocco di istruzioni
FINE-PER

Per scrivere 10 volte la parolaCiao

[modifica|modifica wikitesto]
PER variabile = 1 A 10 PASSO = 1
SCRIVI "Ciao"
FINE-PER

Esempio inC:

for(v=1;v<=10;v++){
printf("Ciao");
}

Tabellina del 2

[modifica|modifica wikitesto]
PER variabile = 2 A 20 PASSO = 2
SCRIVI variabile
FINE-PER

Esempio inC:

for(v=2;v<=20;v+=2){
printf("%d\n",v);
}

Strutture cicliche

[modifica|modifica wikitesto]

Nella creazione diprogrammi informatici,spesso è necessario ripetere più volte uno stesso gruppo di istruzioni; le istruzioni di controllo che permettono di controllare la ripetizione vengono dettestrutture ciclicheoripetitive. Le strutture cicliche permettono quindi di ripetere una sequenza di operazioni, terminando quando si verifica una particolare condizione.

La realizzazione di algoritmi ripetitivi

[modifica|modifica wikitesto]

Per realizzare unalgoritmociclico si devono determinare:

  • le inizializzazioni da effettuare prima del ciclo;
  • le operazioni che devono essere ripetute all'interno del ciclo;
  • la condizione di terminazione del ciclo;
  • le istruzioni da eseguire alla fine del ciclo.

Il ciclo può terminare:

  • quando è stato eseguito un certo numero di ripetizioni noto;
  • quando l'utente lo richiede esplicitamente;
  • quando viene inserito un valore particolare;
  • più in generale quando si verifica una condizione particolare dipendente dal problema.

Una scelta più tecnica riguarda il fatto di utilizzare:

  • la ripetizione con controllo della condizione in testa, cioè all'inizio del ciclo(precondizionale);
  • la ripetizione con controllo della condizione in coda, cioè alla fine del ciclo(postcondizionale).

La differenza sostanzialmente riguarda il fatto di valutare la condizione di terminazione prima di eseguire il ciclo o dopo averlo eseguito almeno una volta. Un'altra differenza più marginale riguarda il fatto se si deve uscire dal ciclo quando la condizione è vera o quando la condizione è falsa.

  • F. Scorzoni - Giuseppe Costa,Informatica: Programmazione in C++,Loescher

Collegamenti esterni

[modifica|modifica wikitesto]