« Tcl: Iterazioni: comando while • Appunti di Tcl/Tk • Tcl: Iterazioni: comandi continue e break »
La sintassi del comando for(n) è simile all'omonima istruzione C:
for start test next body
start è la stringa comando, tipicamente di inizializzazione della variabile (o delle variabili nel caso siano più d'una) di iterazione, e tipicamente è un comando set(n), anche se può essere qualsiasi script Tcl. Viene valutata una sola volta, prima di tutti gli altri argomenti. test, la condizione di continuazione, deve essere una stringa espressione, in quanto sarà valutata tramite il comando expr(n), come accadeva nel ciclo while(n). next è una qualunque stringa comando, tipicamente un incremento o decremento (vedi incr(n)), ma può essere qualsiasi stringa comando Tcl e viene valutata subito dopo ogni valutazione di body. body, detta il corpo del ciclo, è la stringa comando che verrà valutata ad ogni iterazione del ciclo se test risulta vera.
Uno tra i comandi for(n) e while(n) non è strettamente necessario. Ogni for(n) può essere espresso tramite while(n) o viceversa. for(n) esiste perché permette di esprimere in modo più compatto e leggibile molte iterazioni.
Come nel caso del comando while, la stringa espressione test dovrebbe essere sempre racchiusa tra { } per evitare che l'interprete effettui la sostituzione della variabile di iterazione col suo valore di partenza prima della valutazione del comando for.
Ad esempio riscriviamo il programma per la conversione in base 8 usando un ciclo for(n) anziché while(n):
for {set y ""} {$x} {set x [expr $x/8]} { set y [expr $x%8]$y } if {$y==""} {set y 0}
for ritorna sempre una stringa vuota.
« Tcl: Iterazioni: comando while • Appunti di Tcl/Tk • Tcl: Iterazioni: comandi continue e break »