FOR NEXT: i cicli incondizionati in ASP
Nel linguaggio ASP posso creare dei cicli incondizionati o, per meglio dire, delle strutture cicliche senza controllo.
Cosa significa?
Un ciclo incondizionato è un blocco di istruzioni che viene ripetuto per un determinato numero di volte. Non c'è una condizione da rispettare.
Come funziona?
Ogni ciclo è una esecuzione del blocco delle istruzioni. Il numero dei cicli complessivi è detto loop.
Le strutture cicliche incondizionate eseguono un numero determinato di cicli senza essere condizionate da un particolare evento o controllo.
La sintassi dell'istruzione For Next
Per creare un ciclo incondizionato in ASP utilizzo l'istruzione FOR / NEXT
FOR TO STEP NEXT
Nell'istruzione devo impostare una variabile con un valore numerico iniziale, uno finale ed eventualmente l'incremento dopo ogni ciclo.
Dopo ogni ciclo la variabile viene incrementata. Il loop si conclude quando la variabile raggiunge il valore finale.
L'istruzione esegue il corpo delle istruzioni per l'esatto numero equivalente di cicli.
Un esempio pratico
In questo script si può vedere un esempio di ciclo incondizionato.
<%
FOR var = 1 TO 5 STEP 1
Response.Write("Hello Word! ");
NEXT
%>
Nell'istruzione FOR / NEXT utilizzo la variabile var. Il blocco delle istruzioni è compreso tra la prima e la terza riga. In questo caso è solo l'istruzione Response.Write(var).
L'istruzione esegue cinque cicli ( 1 TO 5 ) perché dopo ogni ciclo incrementa la variabile var di una unità ( STEP 1 ).
Spiegazione. Il contatore var ha inizialmente il valore iniziale 1. Dopo ogni ciclo si incrementa di 1. Il loop si conclude quando la variabile var assume un valore superiore a 5.
Il risultato finale sullo schermo è il seguente:
Hello Word! Hello Word! Hello Word! Hello Word! Hello Word!
Questo ciclo equivale a scrivere cinque volte la stessa istruzione:
<%
Response.Write("Hello Word! ");
Response.Write("Hello Word! ");
Response.Write("Hello Word! ");
Response.Write("Hello Word! ");
Response.Write("Hello Word! ");
%>
Come modificare il passo
In un ciclo incondizionato posso modificare il passo modificando la clausola STEP che per default è pari a +1.
Ad esempio, per incrementare di due unità la variabile di controllo dopo ogni ciclo, posso scrivere nel seguente modo:
<%
FOR var = 1 TO 5 STEP 2
Response.Write("Hello Word! ");
NEXT
%>
Questo script esegue il blocco delle istruzioni soltanto tre volte. Il risultato a video è il seguente:
Hello Word! Hello Word! Hello Word!
Al primo ciclo la variabile di controllo var è uguale a uno (1). Nel secondo ciclo è incrementata di due unità, diventando così pari a tre (3). Nel terzo ciclo diventa pari a cinque (5). Infine il loop si conclude.
L'annidamento dei cicli incondizionati
Le istruzioni FOR / NEXT possono essere annidate una nell'altra creando così un ciclo annidato.
La tecnica dei cicli annidati mi consente di eseguire un loop all'interno di un altro loop.
Un esempio pratico
Per visualizzare una lista di anni dal 1980 al 1990 e scrivere per ogni anno il numero dei mesi da 1 a 12, posso sviluppare il seguente ciclo annidato:
<%
FOR anno=1980 TO 1990
response.write(anno)
FOR mese=1 TO 12
response.write(mese)
NEXT
response.write("
")
NEXT
%>
Il loop più esterno esegue dieci cicli ( da 1980 a 1990 ). Non è indicata la clausola STEP pertanto si applica un incremento unitario (+1) dopo ogni ciclo.
Il blocco di istruzioni è composto a sua volta da un altro loop interno che reitera la variabile mese da 1 a 12 e stampa a video il numero del mese.
In pratica, in ogni ciclo viene eseguita la seconda iterazione più interna. Complessivamente lo script esegue 10x12 cicli ossia 120 cicli.