Il ciclo For
Il ciclo for è utile per ripetere l'esecuzione di un blocco di codice per un numero definito di volte. Il costrutto del ciclo FOR è il seguente:
- For x = 1 to 10
- ...
- EndFor
"x" è la variabile di controllo utilizzata come contatore. Segue l'operatore di assegnamento "=". Il numero "1" è il valore di partenza del ciclo, mentre "10" è il valore di arrivo. La parola chiave "to" separa il valore di partenza da quello di arrivo.
Per esempio:
- For x = 1 to 10
- Circle(x*10, 50, 8)
- EndFor
Questo esempio realizza una linea orizzontale di dieci cerchi che si intersecano l'uno con l'altro. Come appena visto, l'istruzione FOR è usata quando un ciclo deve essere eseguito un numero prestabilito di volte. La variabile di controllo "x" del ciclo viene inizializzata, controllata e modificata dalle azioni dell'istruzione FOR. Può essere usata nel corpo del ciclo, ma non dovrebbe mai essere modificata. I valori di partenza e di arrivo del ciclo possono essere ascendenti o discendenti: sarà compito dell'interprete incrementare o decrementare la variabile di controllo.
Più cicli FOR possono essere annidati tra loro. Per esempio, il codice che segue stampa un grafico di cerchi che si intersecano per tutto il foglio.
- For x = 1 to 10
- For y = 1 to 10
- Circle(x*10, y*10, 8)
- EndFor
- EndFor
L'incremento o il decremento del ciclo generalmente viene impostato dall'interprete al valore 1. Ciò significa che la variabile di controllo viene incrementata o decrementata di una unità per iterazione. Il passo di incremento o decremento però può essere definito esplicitamente usando la parola chiave "Step". L'istruzione "Step" è opzionale.
Per esempio:
- For x = 1 to 10 step 2
- Circle(x*10, 50, 8)
- EndFor
Abbiamo variato il passo di incremento impostandolo esplicitamente a 2. Concretamente significa che verranno tracciati 5 cerchi, e non più 10. La variabile di controllo "x" verrà incrementata di due unità, pertanto il ciclo verrà ripetuto solo cinque volte, anziché dieci. Il valore Step può essere solo in positivo, poiché penserà l'interprete a utilizzarlo o come incremento o come decremento della variabile di controllo. Anche se si utilizzasse un numero negativo, questo sarebbe riportato in positivo prima dell'uso.
I valori di partenza, di arrivo e di passo possono essere solo di tipo numerico. Il tipo numerico include tutti i numeri interi e in virgola mobile. Nel ciclo FOR possiamo quindi utilizzare anche numeri in virgola.
Per esempio:
- For x = 0 to 3.13 step 0.01
- ...
- EndFor
L'iterazione di un ciclo FOR può essere interrotta utilizzando l'istruzione Break. Quando si incontra l'istruzione Break l'esecuzione passa a eseguire l'istruzione subito dopo il corpo del ciclo.
Per esempio:
- For x = 1 to 10
- If x > 5
- Break
- EndIf
- Circle(x*10, 50, 8)
- EndFor
L'esempio è naturalmente un non-sense, perché l'istruzione If interrompe il ciclo quando la variabile di controllo "x" supera 5. Più semplicemente il ciclo può arrivare a 5 e terminare. L'istruzione Break solitamente non dovrebbe essere utilizzata, avendo strumenti più idonei per scrivere un ciclo. Tuttavia, in caso di necessità, se ne può tollerare l'uso.
L'istruzione Continue ha un effetto simile al Break sull'esecuzione del ciclo. Esso viene interrotto ma, diversamente dal Break, l'esecuzione ritorna all'inizio, la variabile di controllo viene aggiornata e, se necessario, il corpo del ciclo viene rieseguito.
Per esempio:
- For x = 1 to 10
- If (x >= 4) and (x <= 7)
- Continue
- EndIf
- Circle(x*10, 50, 8)
- EndFor
Nell'esempio viene tracciata una linea orizzontale di cerchi. Però il quarto, quinto, sesto e settimo cerchio non vengono disegnati, grazie all'istruzione If che fa ripartire il ciclo se la variabile "x" è uguale o maggiore di 4 e minore o uguale a 7. Così come l'istruzione Break, Continue può essere sostituita da istruzioni più performanti che rendono il codice più leggibile.