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();
}

 ESCAPE='HTML'

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()

}

Esempio do...while

Esempio con for per sempre:

 ESCAPE='HTML'