- Programmazione » Programmazione » Guida C - Manuale programmazione con articoli e risorse interessanti
Il flusso elaborativo: do while
do... while
I cicli di tipo do...while sono, come si può immaginare, "parenti stretti" dei cicli di tipo while. Vediamone subito uno:
do {
if(a++ < c)
continue;
printf("a = %d
" ,a);
while(c < x)
++c;
if(++a == 100)
break;
--c;
} while(a < b);
Non a caso è stato riportato qui uno degli esempi
utilizzati poco sopra con riferimento all'istruzione
while: in effetti i due cicli sono identici in tutto
e per tutto, tranne che per un particolare. Nei cicli di tipo
do...while il test sulla condizione è
effettuato al termine dell'iterazione, e non
all'inizio: ciò ha due conseguenze
importanti.
In primo luogo un ciclo do...while è
eseguito sempre almeno una volta, infatti il flusso
elaborativo deve percorrere tutto il blocco di codice del
ciclo prima di giungere a valutare per la prima volta la
condizione. Se questa è falsa il ciclo non viene
ripetuto e l'elaborazione prosegue con la prima
istruzione che segue la while, ma resta evidente
che, comunque, il ciclo è già stato compiuto
una volta.
In secondo luogo l'istruzione continue non
determina un salto a ritroso, bensì in avanti. Essa
infatti forza in ogni tipo di ciclo un nuovo controllo della
condizione; nei cicli while la condizione è
all'inizio del blocco di codice, e quindi per poterla
raggiungere da un punto intermedio di questo è
necessario un salto all'indietro, mentre nei cicli
do...while il test è a fine codice, e viene
raggiunto, ovviamente, con un salto in avanti.
Per ogni altro aspetto del comportamento dei cicli
do...while, in particolare l'istruzione
break, valgono le medesime considerazioni effettuate
circa quelli di tipo while.