Barninga Z
a- a+

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.

 



Ti potrebbe interessare anche

commenta la notizia