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 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.

 



Ti potrebbe interessare anche

commenta la notizia

C'è 1 commento
Luca
Ti è piaciuto l'articolo?