目录
Tcl循环
循环控制语句
无限循环
Tcl while循环
语法
流程图
示例
Tcl for循环
语法
流程图
示例
Tcl嵌套循环
语法
示例
Tcl break语句
语法
流程图
示例
Tcl continue语句
语法
流程图
示例
Tcl循环
可能有一种情况,当需要执行一个代码块多次。在一般情况下,语句是顺序执行的:如在函数内的第一条语句,首先执行,然后是第二个 ... 等等。
编程语言提供了各种控制结构,允许更多复杂的执行路径。
循环语句可以让我们执行语句多次或代码组,下面是在大多数编程语言循环语句的一般形式:
TCL语言提供循环以下类型来处理循环。
循环类型 | 描述 |
---|---|
while循环 | 重复声明语句或一组,当给定的条件为真。它测试条件在执行循环体前。 |
for循环 | 执行语句多次,序列和简写管理循环变量的代码。 |
内嵌循环 | 可以使用一个或多个循环内再使用其它的while语句,或do..while循环。 |
循环控制语句
循环控制语句改变其正常的顺序执行。当执行离开范围,在该范围内创建的所有自动对象被销毁。
TCL支持下面的控制语句。
控制语句 | 描述 |
---|---|
break语句 | 终止循环或switch语句并将执行立即循环或切换到下面的语句。 |
continue语句 | 导致循环跳过它的主体的其余部分,并立即重新测试其条件声明之前。 |
无限循环
如果条件永远不会为假那么一个循环就是无限循环。 while循环是传统上用于此目的。可以通过条件表达式为1,来执行一个死循环。
while {1} {puts "This loop will run forever." }
当条件表达式为不存在,它被假定为真。 TCL程序员更普遍使用while {1} 构造以表示无限循环。
注意:可以通过按 Ctrl+ C键 终止无限循环。
Tcl while循环
在Tcl语言while循环,只要给定的条件为真,执行目标语句声明多次。
语法
在Tcl语言while循环的语法是:
while {condition} {statement(s) }
在这里,声明(S)可以是单个语句或语句块。所述条件可以是任何表达,真是指任何非零值。循环迭代当条件为真。
当条件为假,则程序控制进到紧接在循环之后的代码行。
流程图
在这里,while循环的关键点是,当条件测试结果为假时,在循环可能不会永远运行。循环体将跳过while循环后的第一个语句将被执行。
示例
#!/usr/bin/tclshset a 10#while loop execution while { $a < 20 } {puts "value of a: $a"incr a }
当上述代码被编译和执行时,它产生了以下结果:
value of a: 10 value of a: 11 value of a: 12 value of a: 13 value of a: 14 value of a: 15 value of a: 16 value of a: 17 value of a: 18 value of a: 19
Tcl for循环
for循环是一个循环控制结构,可以有效地编写需要执行特定的代码次数。
语法
Tcl语言for循环的语法是:
for {initialization} {condition} {increment} {statement(s); }
下面是一个循环控制的流程:
-
初始化步骤首先执行,并且只有一次。这一步可以声明和初始化任何循环控制变量。不需要把一个声明放在这里,只要给定一个分号。
-
接着,条件condition进行了计算。如果为真,则执行循环体。如果是假的,循环体不执行,for循环之后的流程控制跳转到下一条语句。
-
循环的执行主体之后,控制流跳转回到增量语句。此语句可以更新任何循环控制变量。这个语句可以留空,只需要一个分号。
-
条件现在重新计算评估。如果条件为真,循环执行的过程中重新执行(循环体,然后增加步,然后再次计算条件)。之后当条件为假时,for循环终止。
流程图
示例
#!/usr/bin/tclsh# for loop execution for { set a 10} {$a < 20} {incr a} {puts "value of a: $a" }
当上述代码被编译和执行时,它产生了以下结果:
value of a: 10 value of a: 11 value of a: 12 value of a: 13 value of a: 14 value of a: 15 value of a: 16 value of a: 17 value of a: 18 value of a: 19
Tcl嵌套循环
TCL允许使用一个循环内的另一个循环。下面的内容展示几个例子来说明这个概念。
语法
Tcl语言的嵌套的循环语句的语法如下:
for {initialization} {condition} {increment} {for {initialization} {condition} {increment} {statement(s);}statement(s); }
Tcl语言嵌套while循环语句的语法如下:
while {condition} {while {condition} {statement(s);}statement(s); }
在循环嵌套最后需要说明的是,可以把任何类型循环嵌套在其他类型循环内。例如,for循环可以是一个while循环的内循环,或反之亦然。
示例
下面的程序使用嵌套for循环从2至100找出所有的素数:
#!/usr/bin/tclshset j 0; for {set i 2} {$i<100} {incr i} {for {set j 2} {$j <= [expr $i/$j] } {incr j} {if { [expr $i%$j] == 0 } {break} }if {$j >[expr $i/$j] } {puts "$i is prime"} }
当上述代码被编译和执行时,它产生了以下结果:
2 is prime 3 is prime 5 is prime 7 is prime 11 is prime 13 is prime 17 is prime 19 is prime 23 is prime 29 is prime 31 is prime 37 is prime 41 is prime 43 is prime 47 is prime 53 is prime 59 is prime 61 is prime 67 is prime 71 is prime 73 is prime 79 is prime 83 is prime 89 is prime 97 is prime
Tcl break语句
在Tcl语言break语句用于终止循环。当循环中遇到break语句,循环立即终止,程序控制继续循环体后面的语句。
如果使用嵌套循环(即,一个循环在另一个循环体中),break语句将停止最内层循环的执行,并开始执行的下一行代码段程序之后。
语法
Tcl break语句的语法如下:
break;
流程图
示例
#!/usr/bin/tclshset a 10# while loop execution while {$a < 20 } {puts "value of a: $a"incr aif { $a > 15} {# terminate the loop using break statement break} }
当上述代码被编译和执行时,它产生了以下结果:
value of a: 10 value of a: 11 value of a: 12 value of a: 13 value of a: 14 value of a: 15
Tcl continue语句
Tcl语言中continue语句的工作有点像break语句。但不是强制终止,但是,继续强制循环的下一个迭代发生,跳过中间的代码。
对于for循环,continue语句使循环的条件测试和增量部分执行。对于while循环,continue语句通过程序控制的条件测试。
语法
在Tcl continue语句的语法如下:
continue;
流程图
示例
#!/usr/bin/tclshset a 10 # do loop execution while { $a < 20 } {if { $a == 15} {#skip the iteration incr acontinue}puts "value of a: $a"incr a }
当上述代码被编译和执行时,它产生了以下结果:
value of a: 10 value of a: 11 value of a: 12 value of a: 13 value of a: 14 value of a: 16 value of a: 17 value of a: 18 value of a: 19