Il ciclo Do While
Nel linguaggio C la funzione Do While crea un'iterazione condizionata a un evento con controllo posticipato.
La sintassi della funzione Do While
DO {
// blocco di istruzioni
}
WHILE ( espressione di controllo );
Come funziona la funzione DO WHILE
Nel primo ciclo la funzione DO esegue le istruzioni racchiuse tra le parentesi graffe {} indipendentemente dall'espressione di controllo.
Al termine del primo ciclo la funzione WHILE verifica se l'espressione di controllo è vera.
Se l'espressione è vera, la funzione DO esegue il blocco di istruzioni tra le parentesi graffe per il secondo ciclo. E così via.
L'iterazione si interrompe quando l'espressione di controllo diventa falsa.
Un esempio pratico
Il seguente programma stampa a video i numeri da zero a dieci.
Nelle prime due righe viene dichiarata la variabile numerica intera N e gli viene assegnato il valore zero ( N=0 ).
int n;
n=0;
do {
printf(" %d ", n );
n++;
}
while ( n<11 );
return 0;
Nella terza riga compare la funzione DO seguita dal blocco di istruzioni da eseguire ciclicamente, posto tra parentesi graffe {}.
Il primo ciclo viene eseguito comunque
La funzione DO esegue il blocco di istruzioni senza verificare l'espressione di controllo.
Sullo schermo viene stampato il valore della variabile N ossia 0.
0
Poi la variabile N viene incrementata di uno ( N++ ) e diventa uguale a 1.
A questo punto, la funzione WHILE verifica se l'espressione di controllo (N<11) è vera.
L'espressione di controllo (N<11) è vera, quindi la funzione esegue il blocco di istruzioni DO per la seconda volta ( secondo ciclo ).
Nel secondo ciclo viene stampato sullo schermo il nuovo valore della variabile N ossia 1.
0 1
E così via finché l'espressione di controllo è vera.
Quando si interrompe l'iterazione?
L'iterazione si interrompe quando l'espressione di controllo diventa falsa.
Al dodicesimo ciclo la variabile N viene incrementata a 11.
Ora l'espressione di controllo (N<11) è falsa. Quindi, il programma esce dall'iterazione DO WHILE ed elabora la prima istruzione successiva ed esterna al ciclo ( return 0 ).
L'output finale del programma è il seguente:
0 1 2 3 4 5 6 7 8 9 10
La differenza tra While e Do While
Nel linguaggio C le funzioni WHILE e DO WHILE sono simili. Entrambe svolgono un'iterazione condizionata al verificarsi di un evento.
Tuttavia,la funzione WHILE si basa su un controllo anticipato, mentre nella funzione DO WHILE il controllo è posticipato al ciclo.
Esempio. Se l'evento è falso, la funzione WHILE non esegue nemmeno un ciclo, perché il controllo si svolge all'inizio. La funzione DO WHILE, invece, esegue il primo ciclo anche se l'evento è falso, perché il controllo avviene alla fine del ciclo.
In conclusione, se l'evento è falso la funzione WHILE non esegue nessun ciclo mentre la funzione DO WHILE esegue un ciclo di elaborazione.
Se l'evento è vero, invece, le funzioni compiono lo stesso numero di iterazioni.