I cicli in Javascript: while, do-while e for.

Vi è mai capitato qualche volta che per qualsiasi motivo, avete dovuto ripetere una serie di azioni un determinato numero di volte o finché non avevate raggiunto lo scopo di un qualche cosa che stavate facendo? Beh io penso che capiti quasi praticamente a tutti noi nella vita di tutti i giorni, ma vedremo in questo corso che questa cosa non vale solamente nel mondo reale, ma vale anche in altri ambiti, e uno di questo è proprio quello in cui ci troviamo con questo corso, ovvero quello della programmazione! Vedremo quindi che per una serie di motivi vari, i quali li vedremo anche in altre successive lezioni oltre che questa, può nascere per un programmatore l’esigenza di dover far compiere al suo programma una serie di istruzioni un determinato numero di volte, o finché non si verifichi una particolare condizione (N.B. se non hai ancora guardato le lezioni precedenti di questo corso ti invito a farlo perché sono fondamentali per continuare da questo punto in poi, soprattutto per capire alcuni concetti come appunto il “verificarsi di una condizione all’interno di un programma”).

Bene! Fatta questa breve premesse iniziamo a mettere a fuoco questo nuovo concetto di “ripetizione di un insieme di istruzioni”, e per fare ciò abbiamo bisogno di introdurre un nuovo elemento della programmazione, le iterazioni, o detti più comunemente, cicli. Per quanto riguarda Javascript, nonché il linguaggio che stiamo trattando in questo corso, supporta diverse strutture iterative:

  • for();
  • do{ } while();
  • while();

Vediamo singolarmente queste tre strutture iterative focalizzandoci sul loro funzionamento, facendo anche degli esempi pratici di implementazione.

Il ciclo for()

Un ciclo for() serve a ripetere una serie di istruzioni un determinato numero di volte impostato all’interno delle parentesi del for() da parte del programmatore. Per definire quindi un ciclo for() si imposta all’interno delle sue parentesi:

  • Una variabile contatore a cui si assegna un valore di partenza arbitrario (solitamente 0);
  • La condizione di terminazione (e cioè un valore della variabile contatore) la quale una volta raggiunta, blocca il ciclo e lo fa terminare;
  • Uno step (dall’inglese “passo”), ovvero un istruzione di incremento o decremento (esempio: ++, –) che ad ogni ciclo del for() incrementa o decrementa la variabile contatore.

Si dice che la variabile contatore del ciclo for() non debba essere obbligatoriamente dichiarata ma che questo passaggio sia facoltativo, ma si osservi però che per le buone norme di programmazione questa cosa invece è di fondamentale importanza, sia per la leggibilità e facile comprensione del codice, ma soprattutto per evitare che in alcuni casi il nostro programma non funzioni o non venga compilato correttamente. Un esempio di utilizzo del ciclo for() è il seguente:

var i; for (i=0; i<3; i++) { /* istruzioni che verranno ripetute 3 volte */ }

Come si può vedere nel segmento di codice qui sopra riportato ho definito una variabile “i” che svolge il ruolo di contatore. All’interno delle parentesi tonde che seguono il  for ho definito il valore di partenza (i=0), la condizione che termina il ciclo (i<3) ed il nostro step (i++). In pratica for eseguirà le istruzioni contenute tra le parentesi graffe per tre volte in quanto al primo passaggio “i” avrà valore 0, al secondo 1, al terzo 2 ed a questo punto terminerà in quanto la condizione di terminazione ci dice che il ciclo dovrà continuare sino a quanto “i” è minore di 3.

Più avanti, nel proseguimento di questo corso, ritroveremo i cicli for() nella lezione dedicata agli array dove assumono un ruolo determinante nell’esplorazione del contenuto del vettore.

Il ciclo while()

A differenza di for(), il ciclo while() non prevede l’utilizzo di alcun contatore ma semplicemente l’indicazione di una condizione di terminazione: il ciclo terminerà non appena la condizione impostata si verifica. La sintassi del ciclo while() è la seguente:

while (condizione) { istruzioni; }

Vediamo ora un semplice esempio di utilizzo del while():

var i = 0; while (i < 10) { document.write('Conto: ' + i); i++; }

Per fare un esempio similitudine tra un ciclo for() e un while(), possiamo vedere che il seguente for() equivale al while() appena visto:

var i; for (i=0; i<10; i++) { document.write('Conto: ' + i); }

Nell’esempio del while(), come in for(), il ciclo è determinato da una variabile numerica, in realtà nulla vieta di impostare un ciclo while() che utilizza come condizione un altro tipo di variabile come, ad esempio, un valore booleano.

Il ciclo do{} while()

La struttura do{} while() è una variante del semplice while(). La differenza tra le due sintassi consiste nel fatto che il controllo della condizione avviene dopo l’esecuzione dell’istruzione e non prima (quindi sostanzialmente il while() viene detto “ciclo iterativo pre-condizionale” mentre il do{} while() è detto “ciclo iterativo post-condizionale” proprio per questa particolarità in cui la validazione della condizione del ciclo avviene prima nel caso del while() e dopo nel caso del do{} while(); E quindi per questo la differenza, da un punto di vista pratico, è che l’istruzione viene eseguita sempre almeno una volta nel caso del do{} while(). Questa è la sua sintassi:

do { istruzioni; } while (condizione);

Vediamo anche per il ciclo do{} while() un esempio pratico:

var i = 0; do { document.write('Conto: ' + i); i++; } while (i < 10);

Osservazione importate sui cicli iterativi

Attenzione ai loop!  In chiusura di questa altra lezione dedicata ai cicli iterativi nella programmazione in Javascript, ritengo fare un doveroso avvertimento, il quale andrebbe fatto sempre in qualsiasi linguaggio di programmazione perché riguarda strettamente l’utilizzo dei cicli iterativi in un programma e la loro implementazione all’interno di un blocco di codice: quando impostate un ciclo abbiate sempre cura di impostare con attenzione la condizione conclusiva che deve SEMPRE verificarsi. Questo è molto importante per evitare un grosso problema che si riscontra spesso nell’ambito della programmazione, infatti, se la condizione non dovesse mai verificarsi, il ciclo continuerebbe all’infinito e quindi si entrerebbe appunto in un ciclo iterativo senza un termine (il così detto loop). Da un punto di vista pratico del Javascript un loop comporterebbe un esaurimento delle risorse del client ed un blocco del browser, quindi si tratta di una situazione che non deve mai potersi verificare!

Fatta quest’ultima importante osservazione direi che questa mia lezione sui cicli iterativi del linguaggio Javascript finisce qui! Mi auguro che anche con quest’altro articolo sia stato d’aiuto per molti e vi invito a condividere i miei articoli sui social in modo da aiutare WorldTecno a crescere nel Web! Inoltre vi invito a rimanere sempre connessi e aggiornati con WorldTecno! E per qualsiasi dubbio o informazioni sapete dove contattarmi, io farò in modo di essere presente costantemente e di soddisfare ogni dubbio o richiesta! Ora vi saluto ci rivediamo al prossimo articolo ciao! 😉

0
HeartHeart
0
HahaHaha
0
LoveLove
0
WowWow
0
YayYay
0
SadSad
0
PoopPoop
0
AngryAngry
Voted Thanks!