Now what: LOOP

Ovvero: Come affrontare i cicli senza impazzire.

... premesse

• Il C (c99) è un linguaggio imperativo: Ok
 

• Nel C c'è un solo costrutto primitivo, lo Statement: Ok
 

• Si possono creare combinazioni di più Statement: OK

Ogni Statement ha uno scope: ... erh

LO SCOPE

Purtroppo non è una parolaccia...
Lo SCOPE è questo:

{ * }


 

Istruction Flow

... tutte le cose buone tendono a Cadere

Begin

End

 

Statement 1

Statement 2

Statement 3

Statement 4

CICLI

... ma a volte ritornano indietro.

Begin

End

 

Statement 1

Statement 2

Statement 4

Statement 3

Expression

CICLI

Statement 

Statement 

Statement(s)

Expression

In generale, diremo che data una ITERAZIONE se il valore di Expression è assimilabile a "VERO" allora Statement di iterazione (Statement 3) viene eseguito.
Altrimenti, il flow procede verso il basso come sempre.

}

ITERAZIONE

CICLI

Esistono tre tipi diversi di cicli "canonici", ovvero che creano nella loro struttura un blocco (tramite { }), e quindi danno vita ad uno scope.

  • FOR
     
  • WHILE
     
  • DO ... WHILE

CICLO FOR

for ( a ; b ; c ) { d }

 

a: statement inizializzatore

 

b: expression (espressione di controllo)

 

c: statement di incremento

d: statement(s) di iterazione (SCOPE)

CICLO FOR

for ( a ; b ; c ) { d }

 

 

for ( int i=0 ; i < 5 ; i++){

       printf("\n iterazione numero %d", i +1);

}

CICLO WHILE

while ( a ) { d }

 

a:  expression (espressione di controllo)

 

d: statement(s) di iterazione (SCOPE)

CICLO WHILE

while ( a ) { d }

 

int i = 0;

while (  i < 5 ) {

       printf("\n iterazione numero %d", i +1);

       i++;

}

CICLO DO ... WHILE

do { d } while ( a )

 

a:  expression (espressione di controllo)

 

d: statement(s) di iterazione (SCOPE)

CICLO DO ... WHILE

do { d } while ( a )

 

int i = 0;
do {

     printf("\n iterazione numero %d", i +1);

     i++;

} while (  i < 5 ) ;

CICLI: PROPRIETA'

FOR :
• Possibilità di inizializzare e istanziare una variabile nello scope.

 

WHILE
• Espressione di controllo non legata a nessuna variabile nello scope: "libertà d'azione"
 

DO ... WHILE
• A differenza degli altri due, il ciclo viene eseguito almeno una volta.

CONTROLLO DEL CICLO

• Controllo aritmetico e logico coerente

• Interruzioni

- break

- continue

CICLO ... infinito?

break

Statement 

Statement 

Statement(s)

Expression

BREAK

CICLO ... infinito?

continue

Statement 

Statement 

Statement(s)

Expression

CONTINUE

/break

Loop

By frafolo

Loop

  • 547