Ripetere più volte l'esecuzione di una sequenza (con decisione in testa alla sequenza) Diagramma di flussoRispetto alla ripetizione con decisione in coda si prevede la possibilità che la sequenza non venga eseguita per nulla. Allora è necessaria una decisione ulteriore in testa 
Decide (selezione singola) se eseguire o meno il blocco costituito da una ripetizione (con decisione in coda). Il diagramma può essere semplificato riorganizzando i collegamenti 
Decide se eseguire le istruzioni 1 e 2 o proseguire con le successive; in caso di risposta affermativa ritornerà a ripetere il test. MAC Adattiamo il diagramma di flusso alla logica di basso livello (salta se non esegue la sequenza): decide se saltare le istruzioni 1 e 2; in caso di risposta negativa ritornerà in alto a ripetere il test ...
... ...... '
SU LDA A '
JLE DOPO ' SE(A <= 0): PC <-- DOPO
I1 ...... '
I2 ...... '
JMP SU '
DOPO ... ...... '
Linguaggi di alto livello
VBasic | TPascal | C... |
---|
While A > 0
Istr1
Istr2
Wend | While A > 0 Do
Begin
Istr1;
Istr2;
End; | while(A > 0)
{
istr1;
istr2;
} | Do While A > 0
Istr1
Istr2
Loop | Do Until A <= 0
Istr1
Istr2
Loop |
In VB c'è l'imbarazzo della scelta...

Il ciclo con controllo in testa assume spesso una forma "standardizzata"
 | una variabile intera è utilizzata come contatore o indice all'interno della sequenza |
 | il valore iniziale della variabile è assegnato prima del ciclo |
 | il valore della variabile è modificato (incrementato...) a ogni passo |
 | la ripetizione termina se la variabile supera un certo valore fissato |
Si ottiene la struttura
VBasic | TPascal | C... |
---|
I=1
While I <= N
Istr1
...
I=I+1
Wend | I:=1;
While I <= N Do
Begin
Istr1;
...
I:=I+1;
End; | i=1;
while(i <= N)
{
istr1;
...
i=i+1;
} |
In questi casi tutta la scrittura è convenientemente riassunta nella struttura di controllo for
VBasic | TPascal |
C... |
---|
For I=1 to N
Istr1
...
Next I | For I:=1 To N Do
Begin
Istr1;
...
End; | for(i=1; i <= N; i++)
{
istr1;
...
} | For I=N to 1 Step -1
Istr1
...
Next I | for I:=N DownTo 1 Do
Begin
Istr1;
...
End; | for(i=N; i >= 1; i--)
{
istr1;
...
} | For I=... to ... Step ...
Istr1
...
Next I | | for(...; ...; ...)
{
istr1;
...
} |
 | In VB il passo può essere scelto positivo/negativo e intero/decimale tramite lo step. |
 | In TP il passo è +1/-1. |
 | I linguaggi C... offrono invece una grande flessibilità, all'interno delle parentesi tonde, che viene spesso utilizzata a sproposito... |
|