Esercizio sul ciclo for in C ?
int y=5, x=2, k;
for(k=y; k>0; k+=x) {x-=3; printf("#");}
Perchè questo ciclo non è infinito ? Inoltre non ho ben capito come si valuta l'istruzione x-=3 .
for(k=y; k>0; k+=x) {x-=3; printf("#");}
Perchè questo ciclo non è infinito ? Inoltre non ho ben capito come si valuta l'istruzione x-=3 .
Risposte
"x -= 3" è equivalente a "x = x - 3" (eccetto in C++ per tipi complessi). Stesso discorso per +=, *=, /=, %=, >>=, <<=, &=, |=, ^=.
Quindi dopo la prima iterazione k inizia a decrescere e prima o poi diventa negativo.
Quindi dopo la prima iterazione k inizia a decrescere e prima o poi diventa negativo.
Sisi questo lo sapevo. Non riesco a spiegarmi perchè questo frammento stampa 2 "#" .Quello rinchiuso nel for l'ho capito ma non capisco come dall'istruzione seguente si arrivi a 2.
Conta quante volte il ciclo viene eseguito.
All'inizio y = 5, x = 2, k = y = 5.
Prima iterazione, continuo il ciclo? k = 5 > 0, sì, quindi esegui il corpo del ciclo.
x = x - 3 = 2 - 3 = -1
Stampa un cancelletto
Fine del corpo, k = k + x = 5 + -1 = 4
Seconda iterazione, continuo il ciclo? k = 4 > 0, sì, quindi esegui il corpo del ciclo.
x = x - 3 = -1 - 3 = -4
Stampa un cancelletto
Fine del corpo, k = k + x = 4 + -4 = 0
Terza iterazione, continuo il ciclo? k = 0 > 0, no, quindi esci dal ciclo.
In tutto hai stampato due cancelletti.
All'inizio y = 5, x = 2, k = y = 5.
Prima iterazione, continuo il ciclo? k = 5 > 0, sì, quindi esegui il corpo del ciclo.
x = x - 3 = 2 - 3 = -1
Stampa un cancelletto
Fine del corpo, k = k + x = 5 + -1 = 4
Seconda iterazione, continuo il ciclo? k = 4 > 0, sì, quindi esegui il corpo del ciclo.
x = x - 3 = -1 - 3 = -4
Stampa un cancelletto
Fine del corpo, k = k + x = 4 + -4 = 0
Terza iterazione, continuo il ciclo? k = 0 > 0, no, quindi esci dal ciclo.
In tutto hai stampato due cancelletti.
Grazie, sei stato chiarissimo.