Quali valori mostrer il ciclo while?
Per ogni iterazione del ciclo, scrivi quali valori verranno mostrati e poi confrontali con la soluzione.
Entrambi i cicli mostreranno gli stessi valori in alert, o no?
-
La forma prefissa
++i:let i = 0; while (++i < 5) alert( i ); -
La forma postfissa
i++let i = 0; while (i++ < 5) alert( i );
Lesercizio dimostrava come le forme prefissa/postfissa possono portare a risultati differenti.
-
Da 1 a 4
let i = 0; while (++i < 5) alert( i );Il primo valore
i = 1, perch++iincrementa primaie poi ritorna il nuovo valore. Quindi il primo confronto1 < 5ealertmostra1.Poi seguono
2, 3, 4i valori vengono mostrati uno dopo laltro. Il confronto utilizza sempre il valore incrementato, perch++posto prima della variabile.Ultima iterazione,
i = 4viene incrementato a5, il confrontowhile(5 < 5)risultafalse, e il ciclo termina.5non viene mostrato. -
Da 1 a 5
let i = 0; while (i++ < 5) alert( i );Il primo valore ancora
i = 1. La forma postfissai++incrementaie ritorna il vecchio valore, quindi il confrontoi++ < 5utilizzai = 0(a differenza di++i < 5).La chiamata ad
alertseparata. E un istruzione che viene eseguita dopo lincremento diie il controllo della condizione. Quindii = 1.Seguono
2, 3, 4Fermiamoci a
i = 4. La forma prefissa++iincrementerebbe ed utilizzerebbe5nel controllo della condizionei < 5. Qui per stiamo usando la forma postfissai++. Quindi incrementaia5, ma ritorna il vecchio valore. Il confronto dunquewhile(4 < 5)vero; il controllo passa alla chiamataalert.Il valore
i = 5lultimo, perch nelliterazione successiva avremmowhile(5 < 5)e la condizione sarebbe falsa.