欢迎光临散文网 会员登陆 & 注册

2022年的 Tcl/Tk 编程入门参考 5.条件、遍历、循环

2022-04-15 14:56 作者:象喻  | 我要投稿

控制结构:条件、遍历、循环

这是编程语言普遍具有的控制特性,在介绍之前,让我先介绍一下Tcl/Tk里的布尔值。

布尔值

布尔值是编程语言中,普遍存在的一种数据类型。即便没有这种数据类型,也会有这个概念,比如Tcl/Tk。

布尔值表示 "是、非" 或者 "真、假" 这么一个成对的概念。Tcl语言里都是字符串,它通过一些特定字符表示布尔值。首先,很好理解的表示布尔值的单词(大小写均可):

yes, no

true, false

on, off

其次,数值 1, 0


但是实际上tcl语言中还有很多情况表示布尔值:


此外,布尔值单词的一部分,也被认为是布尔值(😱这是极其坑爹的设定)

if  条件

如果 {表达式结果为"真"} 那么 {搞点事情~}

基本用法:if {表达式} then {代码段}

if命令用于条件执行。它需要两个必要参数:一个参数是表达式,另一个是代码段,而then参数是可选的。当表达式运算结果为真时就会执行代码段。

表达式可以是多行语句,结果必须是布尔值。并不局限于数学表达式,其具体可执行的范围,跟expr命令一样,可以参考expr命令的文档。then这个参数是可以省略的,主要用于加强代码的可读性。


else

else参数:如果表达式结果为“假”时,就运行一段代码。

if {表达式} ?then? {代码段} else {代码段2}

如果 {表达式结果为"真"} 那么 {搞点事情~} 否则 {另外搞点事情~}


elseif

elseif类似于在else后面再接一个if命令。一个if命令可以有多个elseif。

如果 {表达式结果为"真"}  {搞点😼事情}

要不换个姿势 {表达式2结果为"真"}  {搞点*事情}

再试一次 {表达式3结果为"真"}  {搞点🦊事情}

实在不行 {搞点🐼事情}


*注意,虽然看上去像语法,但是if命令就是普通的Tcl命令,它有接受多个参数,其中像then、else和elseif这样的参数属于预设参数,后接的代码段,无论多长本身也是参数。


switch 匹配

switch  ?可选参数?  字符串  匹配值1  代码段1  匹配值2  代码段2....

switch命令用于进行匹配操作,该命令需要指定一个字符串来跟多个值进行匹配,每个进行匹配的值都有一段对应的代码段,当字符串与匹配值相同时,就执行这个匹配值对应的代码段。

*提示:Tcl语言的字符串只要不是{}括起来的,都能进行变量替换和命令替换。

该命令用于简化需要使用多个 if...elseif 语句的情况,也就是说如果不怕麻烦的话,该命令也可以用if...elseif语句来改写。

可选参数

 -exact  严格模式(默认值,精确识别特殊字符,比如: *、$ )
 -glob  与 string match 命令相同,支持 * ? 匹配
 -regexp  正则表达式
 -nocase  不区分大小写
 --  表示参数结束(用于匹配字符串以 - 开头时,这会导致tcl误认为是参数-xxx)


foreach 遍历

foreach  变量名  列表  ?变量名2?  ?列表2?  {代码段}

用于遍历列表中的所有元素:

  • 按顺序将元素赋值给变量,并执行代码段

  • 完毕后,将下一个元素赋值给变量,再次执行代码段……

  • 不断重复直到遍历全部元素

*提示:如果元素不足时,用空字符代替

 


break 中断

break中止当前的遍历/循环,直接结束遍历/循环命令。也有叫它“跳出”的。

 


continue 跳过

continue 跳过本轮遍历/循环,直接进入下一轮


incr 增加

incr 给变量增加数值,主要搭配下面介绍的循环命令。

incr 变量名 ?增量?  (变量值和增量都必须为整数)


for 循环

for  起始定义  测试条件  每轮最后执行的语句  {代码段}

For命令,也就是for循环,是编程语言里的经典循环语句,各个编程语言的具体实现略有不同,但是功能都类似。

TCL语言的for命令需要四个参数:第一个参数起始定义,第二测试条件,第三个参数是每轮最后执行的语句,最后一个参数是{代码段}。

for命令的运行方式:

  • 首先只运行一次<起始定义>部分的语句

  • 然后进入循环,判断<测试条件>的执行结果是否为真,如果结果为真,就运行{代码段}中的代码,代码段运行完毕之后,再运行<每轮最后执行的语句>,运行完毕之后,本轮结束,进入下一轮

  • 下一轮继续判断<测试条件>的执行结果是否为真,如果为真,就继续执行{代码段}和<每轮最后执行的语句>,然后继续进入下一轮

  • 一直循环直到<测试条件>为假,结束命令。

 



while 循环

while 测试条件 {代码段}

只要测试条件为"真",就会反复执行代码段

 



2022年的 Tcl/Tk 编程入门参考 5.条件、遍历、循环的评论 (共 条)

分享到微博请遵守国家法律