Dopo aver studiato la struttura di controllo itarativa while, oggi ne vediamo un’altra che in Tcl è realizzata con il comando for.
Sintassi
Il comando for necessita di quattro argomenti:
- start: dove tipicamente inizializziamo una variabile contatore.
- test: dove confrontiamo il valore della variabile contatore con un determinato limite.
- next: dove tipicamente incrementiamo/decrementiamo la variabile contatore.
- body: corpo contenente il codice da eseguire ad ogni iterazione.
Ecco quindi la sintassi del comando for:
for start test next body
Valutazione del comando for
L’interprete Tcl nella valutazione del comando for procede seguendo questi passi:
- Valutazione del codice contenuto nell’argomento start.
- Valutazione della espressione contenuta nell’argomento test.
- Se l’esito della valutazione è
true, allora si procede con il passo 4, altrimenti si procede con il passo 7. - Valutazione del codice contenuto nel body.
- Valutazione del codice contenuto nell’argomento next.
- Iterazione del processo dal passo 2 (test).
- Uscita dal ciclo
for.
Se in un qualsiasi punto della parte body inseriamo l’istruzione continue, l’interprete salta immediatamente allo step 5.
Se invece inseriamo l’istruzione break, allora si passa immediatamente allo step 7 e si esce dal ciclo.
Incremento/decremento
Per l’incremento della variabile contatore Tcl mette a disposizione uno specifico comando:
incr varName ?increment?
Il comando incr fa sì che il valore della variabile nominata nel nostro caso varName venga incrementato del valore riportato nel secondo argomento increment. Se il secondo argomento, che è opzionale, viene omesso, allora il valore di default per l’incremento sarà 1.
Note sull’uso delle parentesi graffe {...}
Per scrivere in maniera più leggibile il codice della parte body, che potrebbe contenere anche molte righe, lo si racchiude tra parentesi graffe {...}.
Attenzione: la parentesi graffa di apertura {... deve stare sulla stessa linea del comando for, questo fa sì che l’accapo (nuova linea) non venga interpretato come fine del comando.
Esempio
for {set i 0} {$i < 10} {incr i} {
puts "This is loop number $i"
}
---
This is loop number 0
This is loop number 1
This is loop number 2
This is loop number 3
This is loop number 4
This is loop number 5
This is loop number 6
This is loop number 7
This is loop number 8
This is loop number 9
Nel prossimo articolo vedremo come creare un nuovo comando.
