## Tcl8.6.17/Tk8.6.17 Documentation > Tcl Commands > for

### Tcl/Tk Applications | Tcl Commands | Tk Commands | [incr Tcl] Package Commands | SQLite3 Package Commands | TDBC Package Commands | tdbc::mysql Package Commands | tdbc::odbc Package Commands | tdbc::postgres Package Commands | tdbc::sqlite3 Package Commands | Thread Package Commands | Tcl C API | Tk C API | [incr Tcl] Package C API | TDBC Package C API

### NAME

for — 'for' 繰り返し 'For' loop

### SYNOPSIS

for start test next body

### DESCRIPTION

for は C の for 文と同じ様な構造の繰返し命令である｡ start と next と body 引数はTcl 命令文字列でなければならない､又 test は式の文字列である｡ for 命令は最初に start を遂行する為に Tcl 解釈実行機能を起動する｡次に､test を式として繰返し評価する; もし､結果が非零であれば､ body についてTcl 解釈実行機能を起動し､次に､ next についてTcl 解釈実行機能を起動し､循環を繰返す｡ test 評価が0の時命令は終息する｡ body の中で continue 命令が起動されると､ body の中の実行の残りの命令は飛越される; 手順は next のTcl 解釈実行機能の起動により継続され､test が評価され､又続く｡もし､ body か next の中で break 命令が起動されると､for 命令は直ちに戻る｡ break と continue の操作は対応するＣ言語の命令と似ている｡for は空文字列を返す｡ For is a looping command, similar in structure to the C for statement. The start, next, and body arguments must be Tcl command strings, and test is an expression string. The for command first invokes the Tcl interpreter to execute start. Then it repeatedly evaluates test as an expression; if the result is non-zero it invokes the Tcl interpreter on body, then invokes the Tcl interpreter on next, then repeats the loop. The command terminates when test evaluates to 0. If a continue command is invoked within body then any remaining commands in the current execution of body are skipped; processing continues by invoking the Tcl interpreter on next, then evaluating test, and so on. If a break command is invoked within body or next, then the for command will return immediately. The operation of break and continue are similar to the corresponding statements in C. For returns an empty string.

註意: test は殆どいつも波括弧で括られることが望ましい｡そうしないと､for 命令の実行が開始される前に変数置換が起り､それは繰返し本体による変数の変化が式に反映されなくなることを意味する｡これにより無限繰返しの結果になり易い｡もし test が波括弧で括られると､変数置換は式の評価(各繰返しの前)迄遅らされ､そこで変数の変化が現れる｡下記の例を参照されたい｡ 　　 Note: test should almost always be enclosed in braces. If not, variable substitutions will be made before the for command starts executing, which means that variable changes made by the loop body will not be considered in the expression. This is likely to result in an infinite loop. If test is enclosed in braces, variable substitutions are delayed until the expression is evaluated (before each loop iteration), so changes in the variables will be visible. See below for an example:

### EXAMPLES

0から9迄の各整数の行を印刷する｡ 　　　 Print a line for each of the integers from 0 to 9:

    for {set x 0} {$x<10} {incr x} {
        puts "x is $x"
    }

無限回繰返しが行われるか､全く行われないかのどちらかであり､理由は､評価される式が実質上常数であるか､不具合までも発生するかであるから｡実際の振舞いは､ for 命令が実行される前に変数 x が実在するか､そして､その値が十より小さいか､又は､大きい/等しい 値か､に依存する､その理由は､for 命令が遂行される前に､その式が置換される為である｡ 　　 Either loop infinitely or not at all because the expression being evaluated is actually the constant, or even generate an error! The actual behaviour will depend on whether the variable x exists before the for command is run and whether its value is a value that is less than or greater than/equal to ten, and this is because the expression will be substituted before the for command is executed.

    for {set x 0} $x<10 {incr x} {
        puts "x is $x"
    }

1から1024迄の２の冪乗を印刷する: 　　 Print out the powers of two from 1 to 1024:

    for {set x 1} {$x<=1024} {set x [expr {$x * 2}]} {
        puts "x is $x"
    }

### SEE ALSO

break, continue, foreach, while

### KEYWORDS

boolean, for, iteration, loop
Copyright © 1993 The Regents of the University of California.
Copyright © 1994-1997 Sun Microsystems, Inc.