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 );
L’esercizio 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 confronto è1 < 5ealertmostra1.Poi seguono
2, 3, 4…– i valori vengono mostrati uno dopo l’altro. 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
alertè separata. E’ un istruzione che viene eseguita dopo l’incremento diie il controllo della condizione. Quindii = 1.Seguono
2, 3, 4…Fermiamoci 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 = 5è l’ultimo, perchè nell’iterazione successiva avremmowhile(5 < 5)e la condizione sarebbe falsa.