L'iterazione
La terza struttura di controllo fondamentale, dopo la sequenza, e la selezione binaria, per la costruzione degli algoritmi è l'iterazione ( o ripetizione o ciclo). Quando si risolve un problema può accadere che un gruppo di istruzioni debba essere ripetuto mentre si ripete una determinata condizione.
Iterazione precondizionale o ciclo While
Lo schema di iterazione precondizionale o ciclo while è uno schema in cui un’azione o un gruppo di azioni può essere ripetuta un numero di volte infinito.
In questo caso la condizione è messa all'inizio e in caso positivo, esegue l'iterazione delle istruzioni.
Linguaggio di pseudocodifica
esegui mentre condizione è vera
istruzione 1
istruzione 2
istruzione 3
...............
istruzione n
ripeti
Diagramma di flusso del ciclo while
Esempio con il While
Iterazione postcondizionale ciclo Do...While
In questo caso la ripetizione delle istruzioni viene eseguita almeno una volta in quanto il controllo della condizione è alla fine.
Linguaggio di pseudocodifica
esegui
istruzione 1
istruzione 2
istruzione 3
.............
istruzione n
ripeti mentre condizione
Le istruzioni comprese tra le parole esegui e ripeti mente sono ripetute nella sequenza indicata mentre condizione mantiene il valore di verità uguale a vero; si esce dal ciclo quando il valore di verità di condizione deiventa falso.
Diagramma di flusso del Do ... While
Esempio con il do ... while
CICLO FOR
Adesso vi propongo qualche esercizio che possiamo fare con il ciclo FOR.
Il ciclo For puo' essere utilizzato con la seguente sintassi:
for (i=0;i<100;i++) {
...................................
}
oppure può essere utilizzato con un doppio for o for concatenato
for (i=0;i<100;i++) {
for(j=0;j<10;j++) {
............}
}
oppure può essere utilizzato come un for per sempre
for(;;) {
.........}
Quest'ultimo utilizzo deve essere inserito con molta attenzione perchè bisogna inserire un caso ( se è inserito con lo switch... case) oppure con una condizione dell'IF...Else che faccia uscire dal programma con il comando
exit(0);
Tavola di numeri da 1 a 100
Esercizio
//Disegniamo adesso sullo schermo i numeri fino a 100
//utilizzando due cicli for concatenati:
.......................
void main()
{
int i,j,numero;
numero=1;
printf(" tavola numeri fino a 100 ");
printf("**************************************************************");
for(i=1;i<=10;i++)
{
for(j=1;j<=10;j++)
{
printf("%4d",numero);
numero=numero+1;
}
printf("");
}
printf("**************************************************************");
getch();
}
Tavola pitagorica
//Disegnamo adesso una TAVOLA PITAGORICA sullo schermo
......................................
int tavolapit[11][11];
int i,j;
for(i=1;i<=10;i++)
{
for(j=1;j<=10;j++)
{
tavolapit[i][j]=i*j;
}
}
printf(" tavola pitagorica ");
printf("**************************************************************");
for(i=1;i<=10;i++)
{
for(j=1;j<=10;j++)
printf("%4d",tavolapit[i][j]);
printf("");
}
printf("**************************************************************");
..................................
Esempio con il do
Il ciclo FOR
L'istruzione FOR nel linguaggio C crea un ciclo iterativo predefinito compiendo N cicli.
Sintassi dell'istruzione for
for(inizio;controllo;incremento){
//blocco istruzioni
}
Nella componente inizio è indicato il valore iniziale della variabile mentre nella componente controllo è indicata la condizione di esecuzione del ciclo. Nell'elemento incremento, infine, si indica l'incremento o il decremento della variabile al termine di ogni ciclo.
Esempio:
Il ciclo For puo' essere realizzato con la seguente sintassi, dove abbiamo inserito i come variabile contatore:
for (i=0;i<100;i++) {
//blocco istruzioni
}
Il ciclo FOR può essere utilizzato con un doppio for o for concatenato, con due variabili i e j per il conteggio.
Esempio:
for (i=0;i<100;i++) {
for(j=0;j<10;j++) {
//blocco istruzioni
}
}
Esercizio:
Disegniamo adesso sullo schermo i numeri fino a 100 utilizzando due cicli for concatenati:
//inserire le librerie
void main()
{
int i,j,numero;
numero=1; //inizializzazione della variabile
printf(" tavola numeri fino a 100 ");
printf("**************************************************************");
for(i=1;i<=10;i++)
{
for(j=1;j<=10;j++)
{
printf("%4d",numero);
numero=numero+1;
}
printf("");
}
printf("**************************************************************");
getch();
}
Il ciclo FOR per sempre
Il ciclo for per sempre può essere realizzato inserendo nella sisntassi del ciclo for due punti e virgola dentro le parentesi tonde; questo perche il for per sempre non ha inizio e non ha fine
for(;;) {
.........}
Quest'ultimo utilizzo deve essere inserito con molta attenzione perchè bisogna inserire un caso ( se è inserito con lo switch... case) oppure con una condizione dell'IF...Else che faccia uscire dal programma con il comando
exit(0);
che si trova nella libreria stdlib.h
Se non si inserisce l'istruzione exit(0) il programma andrà in loop, cioè non avrà mai fine, e non potrmmo uscire dal C.
Disegnamo adesso una TAVOLA PITAGORICA sullo schermo
//inserire le librerie
main(){
int tavolapit[11][11];
int i,j;
for(i=1;i<=10;i++)
{
for(j=1;j<=10;j++)
{
tavolapit[i][j]=i*j;
}
}
printf(" tavola pitagorica ");
printf("**************************************************************");
for(i=1;i<=10;i++)
{
for(j=1;j<=10;j++)
printf("%4d",tavolapit[i][j]);
printf("");
}
printf("**************************************************************");
getch()
}