初识Tcl(五):Tcl 循环

news/2024/10/30 11:32:11/

目录

 

Tcl循环

循环控制语句

无限循环

Tcl while循环

语法

流程图

示例

Tcl for循环

语法

流程图

示例

Tcl嵌套循环

语法

示例

Tcl break语句

语法

流程图

示例

Tcl continue语句

语法

流程图

示例


Tcl循环

可能有一种情况,当需要执行一个代码块多次。在一般情况下,语句是顺序执行的:如在函数内的第一条语句,首先执行,然后是第二个 ... 等等。

编程语言提供了各种控制结构,允许更多复杂的执行路径。

循环语句可以让我们执行语句多次或代码组,下面是在大多数编程语言循环语句的一般形式:

Loop Architecture

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 Loop

在这里,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循环终止。

流程图

For Loop

示例

#!/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;

流程图

Break Statement

示例

#!/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;

流程图

Continue Statement

示例

#!/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

 

 

 

 

 

 

 


http://www.ppmy.cn/news/149520.html

相关文章

十二、TCL脚本

文章目录 引言学习核心基础语法置换(substitution)变量置换命令置换反斜杠置换双引号和花括号 变量简单变量数组其它相关命令unsetappendincr表达式 list 控制流ifwhileforforeachswitch命令break/continuesourceeval 过程proc 命令局部变量和全局变量 字符串操作formantscanre…

Tcl -- upvar

1. upvar&#xff1a;类似于C语言中的引用传参&#xff08;别名&#xff09; 这里涉及到层级&#xff08;栈级&#xff09;的概念&#xff0c;upvar 2表示向上两级&#xff0c;默认值是1. 我们知道局部变量&#xff08;函数参数&#xff09;都是存在栈中的&#xff0c;这样做…

[TCL]Tcl语言基礎教程(一)

Tcl语言参考&#xff08;一&#xff09; Tcl("Tool Command Language"&#xff0c;即工具命令语言&#xff1b;Tcl念作“踢叩” "tickle" )是一种易学易用易于扩展的脚本语言,实际上包 含了两个部分&#xff1a;一个语言和一个库。 首先&#xff0c;Tcl是…

TCL语言

目录 引言概述其他 变量、数组和列表变量数组列表 控制流过程函数正则匹配文本处理 引言 TCL&#xff08;Tool Command Language&#xff09;脚本语言是对EDA兼容性最好的语言&#xff0c;非常适合做EDA流程控制。如下图所示&#xff1a; IC设计中另一种常用语言是Perl&#…

TCL: tcl小结

&#xfeff;&#xfeff; lindex - 从列表中获得一个元素 语法 lindex list ?index...? 描述 lindex命令接受一个参数列表 list&#xff0c;可以接受0个或者多个 index参数&#xff0c;在多个参数的情况下&#xff0c;参数可以是单独的一次排列&#xff0c;也可以是在…

智能晾衣架(一)--设计

本文素材来源于红河学院 工学院 作者&#xff1a;赵德森 张艺锦 潘志慧 曹紫康 指导老师&#xff1a;江洁 张龙超 一、简介 本作品设计的晾衣系统从人们日常生活研究设计&#xff0c;体积小&#xff0c;收纳方便&#xff0c;不占空间可以在日常生活中极大的便利用户。我们…

Tcl 简介及特性

【简介|特性】 l 简介 Tcl是一门产生于80年代末的语言&#xff0c;和Python一样&#xff0c;她是用c开发出来的&#xff0c;如果说C/Java/C/C#为编译型语言的话&#xff0c;那么Python、Perl和Tcl就是一门解释性语言&#xff0c;也就是说程序不需要先编译为机器能识别的二进…

TCL 的安装

TCL 的安装 ActiveTcl的下载安装ActiveTcl交互式解释器tclsh的启动wish 解释器Lets do it&#xff01; ActiveTcl的下载 ActiveTcl 是一款免费的Tcl 预编译器&#xff0c;可以在ActiveState网站ActiveState下载所需要的版本&#xff0c;也可以在作者的博客中免费下载ActiveTcl…