
Parliamo adesso delle strutture di controllo iterative, ovvero i cicli.
Quando si desidera ripetere un’operazione un determintato numero di volte si ricorre alle strutture di controllo iterative.
Tipi di strutture di controllo iterative.
Ci sono tre tipi di strutture iterative:
- while
- do…while
- for
Inoltre, anche i costrutti iterativi, come quelli di selezione, possono essere annidati.
while
Il while è un costrutto pre-condizionale ovvero il controllo della condizione è precedente all’esecuzione delle istruzioni.
La sintassi è la seguente:
while (<Condizione>)
<Istruzione/i>;
dove istruzione/i rappresenta un’istruzione singola oppure un blocco di istruzioni, in quest’ultimo caso sono necessarie le parentesi graffe.
La semantica è la seguente:
- si valuta la Condizione;
- se la condizione è vera, viene eseguita l’Istruzione/i e si ritorna al punto 1;
- se la condizione è falsa l’Istruzione/i non viene eseguita e il controllo passa all’istruzione successiva al while.
Esempio:
Programma che inserisce dieci numeri.
…
int i=0; //inizializzo il contatore a zero
while(i<10)
{
printf(“inserisci un numero: “);
scanf(“%d”, &numero);
i=i+1; //incremento il contatore di uno
}
Il ciclo si fermerà quando i sarà uguale a 9.
do while
Il do … while diversamente dal while, è post condizionale, ovvero valuta la condizione alla fine del ciclo.
Quindi i corpo del ciclo do … while viene eseguito almeno una volta.
La sintassi è la seguente:
do
<Istruzione/i>;
while (<Condizione>);
dove Istruzione/i rappresenta un’istruzione singola oppure un blocco di istruzioni, in quest’ultimo caso sono necessarie le parentesi graffe.
La semantica è la seguente:
- Si esegue l’Istruzione/i;
- Si valuta la Condizione;
- Se la Condizione è vera si ritorna al punto 1;
- Se la Condizione è falsa, il controllo passa all’istruzione successiva al do … while.
Esempio:
Programma che inserisce dei numeri minori di 10
do
{
printf(“inserisci un numero: “);
scanf(“%d”, &numero);
} while (numero<10);
for
Una struttura più potente delle precedenti è il for.
La sintassi è la seguente:
for ([<Espressione1>]; [<Espressione2>];[<Espressione3>])
<Istruzione/i>;
dove:
- Espressione1 è il punto di partenza dell’iterazione, può anche essere un’espressione che inizializza le variabili del ciclo o una dichiarazione di variabili.
- Espressione2 è la condizione che permetterà al ciclo di continuare.
- Espressione3 è di solito un’istruzione di incremento o decremento del contatore.
Istruzione/i indica un’istruzione singola o un blocco di istruzioni racchiuse tra parentesi graffe ed è il corpo dell’iterazione.
Esempio:
for(i=0;i<10;i++)
{
printf(“inserisci un numero: “);
scanf(“%d”, &numero);
}