- 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 tipowhile. 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 esempiutilizzati poco sopra con riferimento all'istruzionewhile: in effetti i due cicli sono identici in tuttoe per tutto, tranne che per un particolare. Nei cicli di tipodo...while il test sulla condizione èeffettuato al termine dell'iterazione, e nonall'inizio: ciò ha due conseguenzeimportanti.
In primo luogo un ciclo do...while èeseguito sempre almeno una volta, infatti il flussoelaborativo deve percorrere tutto il blocco di codice delciclo prima di giungere a valutare per la prima volta lacondizione. Se questa è falsa il ciclo non vieneripetuto e l'elaborazione prosegue con la primaistruzione che segue la while, ma resta evidenteche, comunque, il ciclo è già stato compiutouna volta.
In secondo luogo l'istruzione continue nondetermina un salto a ritroso, bensì in avanti. Essainfatti forza in ogni tipo di ciclo un nuovo controllo dellacondizione; nei cicli while la condizione èall'inizio del blocco di codice, e quindi per poterlaraggiungere da un punto intermedio di questo ènecessario un salto all'indietro, mentre nei ciclido...while il test è a fine codice, e vieneraggiunto, ovviamente, con un salto in avanti.
Per ogni altro aspetto del comportamento dei ciclido...while, in particolare l'istruzionebreak, valgono le medesime considerazioni effettuatecirca quelli di tipo while.