Domanda 1)

Quale e' il funzionamento dell'istruzione for.

Risposta 1)

Un’istruzione “for” é scritta come segue:

 for(inizio; condizione; incremento) corpo     (oppure istruzione)

 Un esempio:

 for( i=0;( i<10); ++i) scanf(“%d”,A[i]);

Il “for” é un istruzione iterativa, come la while. Un “for” prima esegue l’istruzione di inizio (i=0, in questo caso). Se la condizione é vera (ed in questo caso (i<10) lo é), esegue il corpo (legge A[0]). Quindi esegue l’incremento (passa i ad 1). Di nuovo, se la condizione é vera, esegue il corpo (legge A[1]), poi esegue l’incremento (passa i a 2). E così via: dunque legge nell’ordine A[0], ..., A[9]. Quando la condizione diventa falsa (perche i=10), termina. Ora i vale 10 e A contiene 10 valori.

Domanda 2)

Si puo' simulare una istruzione while attraverso l'istruzione for e viceversa.

Risposta 2)

Il “for” e la “while” sono equivalenti, l’uno può esprime l’altra. Una “while” si può ottenere da   un “for” lasciando  inizio  e  incremento  vuoti:

 

for(  ;condizione;  ) corpo

 

Viceversa, un “for” si può ottenere da un “while” scrivendo:

 

inizio;    while condizione {corpo; incremento}

 

La differenza é quindi solo stilistica. Un “for” é considerato più chiaro quando il numero di iterazioni del corpo é fisso, come, appunto, nel caso appena visto della lettura di un vettore di lunghezza 10.

Domanda 3)

Quali errori sono tipicamente commessi nell'uso del for.

Risposta 3) 

a) E’ un errore inserire un punto e virgola dopo la parentesi tonda chiusa del for:

for(inizio; cond; incr); corpo  ¬ errore (sembra che il for finisca al punto e virgola)

b) E’ un errore inserire un’istruzione I; del corpo del for prima del for:

I; for(inizio; cond; incr); corpo  ¬ errore (I viene eseguita una volta sola, prima del for)

c) Nel caso che il corpo sia avvolto tra parentesi graffe, è un errore inserire un’istruzione I; del corpo del for dopo la chiusura delle graffe:

for(inizio; cond; incr); {…} I;  ¬ errore (I viene eseguita una volta sola, dopo il for)

   

Indietro

 

 

1.