L'iterazione è l'atto di ripetere un processo, per generare una sequenza di risultati (possibilmente illimitata), con l'obiettivo di avvicinarsi a uno scopo o risultato desiderato. Nel contesto della matematica o dell'informatica, l'iterazione (insieme alla relativa tecnica di ricorsione) è un elemento costitutivo standard degli algoritmi.
Nella programmazione del computer, l'iterazione, chiamata anche dal termine inglese loop, è una struttura di controllo, all'interno di un algoritmo che risolve un dato problema, che ordina al computer di eseguire ripetutamente una sequenza di istruzioni, generalmente fino al verificarsi di condizioni logiche specifiche.
È importante sottolineare che la sequenza e la selezione costituiscono una delle tre strutture fondamentali per la risoluzione algoritmica di un dato problema secondo il teorema di Böhm-Jacopini. Esistono diverse forme di iterazione; i più noti sono il MENTRE, il REPEAT e il PER. Si può dire che l'iterazione è l' anello forte della programmazione che consente di automatizzare le prestazioni di un processo, il che non è sufficiente per eseguire semplicemente una sequenza di istruzioni.
Il cosiddetto "loop infinito" è un caso di iterazione dovuto ad un errore di programmazione che interrompe l'esecuzione del programma, mentre in alcune tecniche di programmazione, soprattutto con microcontrollori, si usa deliberatamente per iterare all'infinito all'interno del programma.
Nello sviluppo del software, l'iterativo viene utilizzato per descrivere un processo di pianificazione e sviluppo euristico in cui un'applicazione viene sviluppata in piccole sezioni chiamate iterazioni. Ogni iterazione viene esaminata e criticata dal team del software e dai potenziali utenti finali; Le intuizioni acquisite dalla critica di un'iterazione vengono utilizzate per determinare il passaggio successivo nello sviluppo. Modelli di dati o diagrammi di sequenza, che vengono spesso utilizzati per tracciare iterazioni, tenere traccia di ciò che è stato provato, approvato o scartato e, in ultima analisi, servono come una sorta di modello per il prodotto finale.
La sfida con lo sviluppo iterativo è essere in grado di assicurarsi che tutte le iterazioni siano compatibili. Man mano che ogni nuova iterazione viene approvata, gli sviluppatori possono utilizzare una tecnica nota come ingegneria a ritroso, che è una procedura di revisione e verifica sistematica per assicurarsi che ogni nuova iterazione sia compatibile con le precedenti. Il vantaggio dell'utilizzo dello sviluppo iterativo è che l'utente finale è coinvolto nel processo di sviluppo. Invece di aspettare che l'applicazione diventi un prodotto finale, quando le modifiche non possono essere facilmente apportate, i problemi vengono identificati e risolti in ogni fase dello sviluppo. Lo sviluppo iterativo è talvolta chiamato sviluppo circolare o evolutivo.