06. Ciclo while

Quando si scrive un programma, molto spesso nasce l'esigenza di iterare un procedimento, cioè di eseguire lo stesso blocco di istruzioni più volte.

In linea di principio si potrebbe ottenere lo stesso comportamento ripetendo la scrittura del blocco di istruzioni più volte, ma questa possibilità, oltre ad essere una cosa molto scomoda, renderebbe il programma "bloccato" ad avere sempre lo stesso comportamento e non potrebbe dare risultati diversi in corrispondenza di input differenti.

L'esempio che segue è molto semplice ed ha l'obiettivo di iterare (cioè di ripetere) la funzione di stampa 10 volte.

#include <stdio.h>

int main()

{

int i;

printf("Esempio di ciclo while\n======================\n\n");

i=0;

while (i<10) {

printf("Iterazione numero: %d\n", i);

i=i+1;

}

printf("\nFine del programma\n");

return 0;

}

Il programma illustrato in questa pagina produce il seguente output:

while (i<10) {

...

}

Questa istruzione definisce un ciclo, cioè fa si che le istruzioni racchiuse tra le parentesi graffe siano eseguite più volte.

Quando si incontra l'istruzione while si verifica per prima cosa la condizione indicata in parentesi.

Una condizione, una volta valutata, può valere "vero" o "falso".

In questo caso ci si chiede se la variabile i ha un contenuto minore di 10.

All'entrata nel ciclo il contenuto di i è 0 per cui la condizione è vera.

Quando la condizione è vera sono eseguite una di seguito all'altra tutte le istruzioni racchiuse in parentesi.

Nel nostro caso sono eseguite le istruzioni:


printf("Iterazione numero: %d\n", i);

i=i+1;

La prima mostra a video un testo, la seconda è un'operazione di assegnazione che incrementa il valore contenuto in i. Poiché inizialmente il contenuto della variabile era 0 dopo questa istruzione il suo contenuto diventa 1.

Una volta eseguite tutte le istruzioni racchiuse tra parentesi graffe si torna a valutare la condizione del while.

In questo caso il contenuto di i è 1 che è un valore minore di 10. Ancora la condizione è vera per cui si ripetono le istruzioni racchiuse tra parentesi graffe.

Ad ogni iterazione il valore contenuto in i si incrementa fino a diventare 10.

A questo punto, quando si valuta la condizione i<10 essa risulta falsa. In questo caso NON si eseguono le istruzioni racchiuse tra parentesi ma si passa direttamente ad eseguire la prima l'istruzione posta oltre le parentesi graffe, in questo caso printf("\nFine del programma\n");