目录

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

初识Tcl(五):Tcl 循环相关推荐

  1. 初识MIMO(五):CSI反馈及其仿真

    初识MIMO(五):CSI反馈及其仿真 零 代码地址 https://github.com/liu-zongxi/MIMO_simulation 一. 发射端的信道估计 这章其实给了我隔靴搔痒的感觉, ...

  2. c程序设计语言第五单元,(C语言程序设计基础课件)第五单元循环结构程序设计.pptx...

    第五单元 循环结构程序设计;知识目标 了解goto语句以及用goto语句构成循环:掌握用while语句.do-while语句.for语句实现循环:熟悉循环语句的嵌套:掌握break语句和continu ...

  3. python正则匹配_Python正则表达式初识(五)

    原标题:Python正则表达式初识(五) 正则表达式的内容很丰富,今天小编继续给大家分享Python正则表达式的基础知识.今天要给大家的讲的特殊字符是竖线"|".竖线"| ...

  4. c语言如何实现一只蜗牛爬的循环,[工程科技]第五章 循环结构程序设计c语言程序设计.ppt...

    [工程科技]第五章 循环结构程序设计c语言程序设计 第5章 循环结构程序设计 while语句 while语句 do while语句 do while语句 do while语句 do while语句 d ...

  5. C++PrimerPlus 第五章 循环和关系表达式 - 5.5 循环和文本输入

    C++PrimerPlus 第五章 循环和关系表达式 - 5.5 循环和文本输入 5.5 循环和文本输入 5.5.1 使用原始的cin进行输入 5.5.2 使用cin.get(char)进行补救 5. ...

  6. Java 北大青鸟 第一学期 第五章 循环结构(一) 上级练习+课后作业

    第一学期 第五章 循环结构(一) 实例1 打印50分试卷 实例5 如何进行程序调试 Java MyShopping管理系统 > 购物结算+管理系统 本章作业 源码下载 实例1 int i = 1 ...

  7. C++PrimerPlus 第五章 循环和关系表达式 - 5.1 for循环

    C++PrimerPlus 第五章 循环和关系表达式 - 5.1 for循环 5.1 for循环 5.1.1 for循环的组成部分 5.1.1.1 表达式和语句 5.1.1.2 非表达式和语句 5.1 ...

  8. python从入门到出家(五)循环语句

    目录 python从入门到出家(0)环境搭建 python从入门到出家(一)输入输出 python从入门到出家(二)变量和注释 python从入门到出家(三)运算符 python从入门到出家(四)条件 ...

  9. tcl计算机语言,TCL语言

    本词条缺少概述图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! Tcl (最早称为"工具命令语言""Tool Command Language", 但 ...

  10. C语言 第五章 循环结构

    一.for 二.while 三.do while 四.continue 五.break 一.for 请在屏幕上输出1000个*号 printf("********************** ...

最新文章

  1. 一文掌握Conda软件安装:虚拟环境、软件通道、加速solving、跨服务器迁移
  2. 解决grub引导错误的问题
  3. 快速实现移动端短视频功能?没你想得那么难!
  4. 第三次学JAVA再学不好就吃翔(part106)--字符流
  5. jdbc java连接oracle_java连接oracle jdbc连接
  6. 开课吧Web:学习Web前端技术有哪些好处?
  7. mysql 触发器和存储过程组合使用,实现定时触发操作
  8. Ubuntu下安装nginx支持rtmp和http流媒体方案
  9. 多线程编程之二——MFC中的多线程开发(收藏)
  10. Nacos集群(二)阿里自研弱一致性Distro协议核心实现
  11. python加载机制_yui3与python模块加载机制感悟
  12. ei会议和ei源刊的区别_Ei期刊和ei会议论文有哪些区别
  13. 开源推荐:可用于生产的java聚合支付系统
  14. 如何用手机在图片上标箭头_如何在手机上快速给图片做标记?
  15. 挂耳耳机哪个牌子好,盘点五款挂耳式蓝牙耳机推荐
  16. 针对firefox的恶意软件分析取证
  17. Git基础(三)--常见错误及解决方案
  18. kingview3d在楼宇行业的应用
  19. 锂离子电池保护板你懂多少呢?
  20. 50个人围成一圈数到3和3的倍数时出圈,问剩下的人是谁?在原来的位置是多少(简单易懂)

热门文章

  1. 整系数多项式的整除平移不变性
  2. system.gc会立即执行垃圾回收吗_JVM垃圾回收系列之 垃圾回收器
  3. 怎样用java编写日志_用JAVA写一个日志类程序以供大家学习
  4. SET NOCOUNT ON 作用
  5. redisson版本_Redisson实现Redis分布式锁的N种姿势
  6. java开发经验分享_java开发经验分享(一)
  7. 每年的智能车竞赛赛道是如何产生的?
  8. AI视觉组培训第二弹——入门篇
  9. 在国内安装Pytorchy以及遇到的问题
  10. 光敏电阻与光强之间什么关系?