初识Tcl(四):Tcl 决策

举报
李锐博恩 发表于 2021/07/15 03:27:57 2021/07/15
【摘要】 目录   Tcl决策  ? : 操作符 Tcl if语句 语法 流程图 示例 Tcl if...else 语句 语法 流程图 示例 if...else if...else 语句 语法 示例 Tcl 嵌套if语句 语法 示例 Tcl Switch语句 语法 流程图 例如:未加引号版本 例如:引用版本 Tcl嵌套S...

目录

 

Tcl决策

 ? : 操作符

Tcl if语句

语法

流程图

示例

Tcl if...else 语句

语法

流程图

示例

if...else if...else 语句

语法

示例

Tcl 嵌套if语句

语法

示例

Tcl Switch语句

语法

流程图

例如:未加引号版本

例如:引用版本

Tcl嵌套Switch语句

语法

示例


Tcl决策

决策结构需要程序员指定的一个或多个条件进行评估,或由程序进行测试,如果条件被确定为真以及一条或多条语句,任选的其它语句,如果条件被确定为假则被执行。

以下是在大多数编程语言中找到的典型决策结构的一般形式:

Decision Making

TCL语言使用expr内部命令,因此它为我们声明使用expr的声明不是必需的。

TCL语言提供了以下几种类型的决策语句。

语名 描述
if语句 if语句包含一个布尔表达式后跟一个或多个语句。
if...else语句 if语句可以跟着一个可选的else语句,当else执行时,布尔表达式是假。
内嵌if语句 可以使用一个if 或else if 里面再声明 if 或 else if 语句(S)。
switch语句 switch语句可以让一个变量对值列表相等进行测试。
内嵌switch语句 可以使用一个switch语句在另一个switch语句中。

 ? : 操作符

我们已经覆盖条件操作符 ? :在前面的章节中可以用它来代替 if ... else语句。以下是它的一般形式:

Exp1 ? Exp2 : Exp3;

 

计算Exp1,Exp2和Exp3表达式。注意使用和放置。

a的值?表达是确定这样:Exp1计算评估。如果是真的,那么Exp2后进行评估计算,并成为整个的值?表达式。如果计算Exp1是假的,那么Exp3计算它的值变为表达式的值。一个例子如下所示。


  
  1. #!/usr/bin/tclsh
  2. set a 10;
  3. set b [expr $a == 1 ? 20: 30]
  4. puts "Value of b is $b\n"
  5. set b [expr $a == 10 ? 20: 30]
  6. puts "Value of b is $b\n"

当编译和执行上面的程序,将会产生以下结果:


  
  1. Value of b is 30
  2. Value of b is 20

Tcl if语句

if语句包含一个布尔表达式后跟一个或多个语句。

语法

Tcl语言的if语句的语法是:


  
  1. if {boolean_expression} {
  2. # statement(s) will execute if the boolean expression is true
  3. }

如果代码里布尔表达式的值为真,那么if语句块将被执行。如果 if 语句的结束(右大括号后)布尔表达式的值为false,那么第一套代码会被执行。

TCL语言使用expr内部命令,因此它不是明确地使用expr语句声明所需的。

流程图

If Statement

示例


  
  1. #!/usr/bin/tclsh
  2. set a 10
  3. #check the boolean condition using if statement
  4. if { $a < 20 } {
  5. # if condition is true then print the following
  6. puts "a is less than 20"
  7. }
  8. puts "value of a is : $a"

当上述代码被编译和执行时,它产生了以下结果:


  
  1. a is less than 20
  2. value of a is : 10

Tcl if...else 语句

if语句可以跟着一个可选的else语句,else语句块执行时,布尔表达式是假的。

语法

在Tcl语言的if ... else语句的语法是:


  
  1. if {boolean_expression} {
  2. # statement(s) will execute if the boolean expression is true
  3. } else {
  4. # statement(s) will execute if the boolean expression is false
  5. }

如果布尔表达式的值为true,那么if代码块将被执行,否则else块将被执行。

TCL语言使用expr内部命令,因此它不是明确地使用expr语句所需的。

流程图

If Else Statement

示例


  
  1. #!/usr/bin/tclsh
  2. set a 100
  3. #check the boolean condition
  4. if {$a < 20 } {
  5. #if condition is true then print the following
  6. puts "a is less than 20"
  7. } else {
  8. #if condition is false then print the following
  9. puts "a is not less than 20"
  10. }
  11. puts "value of a is : $a"

当上述代码被编译和执行时,它产生了以下结果:


  
  1. a is not less than 20;
  2. value of a is : 100

if...else if...else 语句

if语句可以跟着一个可选的else if ... else语句,使用单个if 测试各种条件if...else if 声明是非常有用的。

当使用if , else if , else语句有几点要记住:

  • 一个if可以有零或一个else,它必须跟在else if之后。

  • 一个if语句可以有零到多个else if,并且它们必须在else之前。

  • 一旦一个 else if 成功,任何剩余else if 或else 不会再被测试。

语法

Tcl语言的 if...else if...else语句的语法是:


  
  1. if {boolean_expression 1} {
  2. # Executes when the boolean expression 1 is true
  3. } elseif {boolean_expression 2} {
  4. # Executes when the boolean expression 2 is true
  5. } elseif {boolean_expression 3} {
  6. # Executes when the boolean expression 3 is true
  7. } else {
  8. # executes when the none of the above condition is true
  9. }

示例


  
  1. #!/usr/bin/tclsh
  2. set a 100
  3. #check the boolean condition
  4. if { $a == 10 } {
  5. # if condition is true then print the following
  6. puts "Value of a is 10"
  7. } elseif { $a == 20 } {
  8. # if else if condition is true
  9. puts "Value of a is 20"
  10. } elseif { $a == 30 } {
  11. # if else if condition is true
  12. puts "Value of a is 30"
  13. } else {
  14. # if none of the conditions is true
  15. puts "None of the values is matching"
  16. }
  17. puts "Exact value of a is: $a"

当上述代码被编译和执行时,它产生了以下结果:


  
  1. None of the values is matching
  2. Exact value of a is: 100

Tcl 嵌套if语句

Tcl嵌套if-else语句它始终是合法的,这意味着可以使用一个 if 或 else if 在另一 if 或 else if 声明中。

语法

嵌套if语句的语法如下:


  
  1. if { boolean_expression 1 } {
  2. # Executes when the boolean expression 1 is true
  3. if {boolean_expression 2} {
  4. # Executes when the boolean expression 2 is true
  5. }
  6. }

可以嵌套else if...else 在类似嵌套if语句的方式。

示例


  
  1. #!/usr/bin/tclsh
  2. set a 100
  3. set b 200
  4. # check the boolean condition
  5. if { $a == 100 } {
  6. # if condition is true then check the following
  7. if { $b == 200 } {
  8. #if condition is true then print the following
  9. puts "Value of a is 100 and b is 200"
  10. }
  11. }
  12. puts "Exact value of a is : $a"
  13. puts "Exact value of b is : $b"

当上述代码被编译和执行时,它产生了以下结果:


  
  1. Value of a is 100 and b is 200
  2. Exact value of a is : 100
  3. Exact value of b is : 200

Tcl Switch语句

switch语句可以让一个变量值的列表进行相等测试。每个值被称为一个的情况(case),该变量被接通检查每个switch case。

语法

Tcl语言未加引号的switch语句的语法如下:

switch switchingString matchString1 {body1} matchString2 {body2} ... matchStringn {bodyn}
 

Tcl语言未加引号的switch语句的语法如下:


  
  1. switch switchingString {
  2. matchString1 {
  3. body1
  4. }
  5. matchString2 {
  6. body2
  7. }
  8. ...
  9. matchStringn {
  10. bodyn
  11. }
  12. }

以下规则适用于switch语句:

  • 在switch语句中使用的switchingString通过比较matchString使用在不同块之间。

  • 在一个switch内可以任何数量matchString块。

  • switch语句可以具有可选默认块,其中必须出现在开关的末尾。缺省情况下,可用于执行任务时没有一个case是真实的。

流程图

Switch Statement

例如:未加引号版本


  
  1. #!/usr/bin/tclsh
  2. set grade C;
  3. switch $grade A { puts "Well done!" } B { puts "Excellent!" } C { puts "You passed!" } F { puts "Better try again" } default { puts "Invalid grade" }
  4. puts "Your grade is $grade"

当上述代码被编译和执行时,它产生了以下结果:


  
  1. You passed!
  2. Your grade is C

例如:引用版本


  
  1. #!/usr/bin/tclsh
  2. set grade B;
  3. switch $grade {
  4. A {
  5. puts "Well done!"
  6. }
  7. B {
  8. puts "Excellent!"
  9. }
  10. C {
  11. puts "You passed!"
  12. }
  13. F {
  14. puts "Better try again"
  15. }
  16. default {
  17. puts "Invalid grade"
  18. }
  19. }
  20. puts "Your grade is $grade"

当上述代码被编译和执行时,它产生了以下结果:


  
  1. Well done
  2. Your grade is B

Tcl嵌套Switch语句

有可能有一个switch作为外开关的语句序列的一部分。即使在内外switch case 的常数包含共同的值,如果没有冲突将出现。

语法

嵌套switch语句的语法如下:


  
  1. switch switchingString {
  2. matchString1 {
  3. body1
  4. switch switchingString {
  5. matchString1 {
  6. body1
  7. }
  8. matchString2 {
  9. body2
  10. }
  11. ...
  12. matchStringn {
  13. bodyn
  14. }
  15. }
  16. }
  17. matchString2 {
  18. body2
  19. }
  20. ...
  21. matchStringn {
  22. bodyn
  23. }
  24. }

示例


  
  1. #!/usr/bin/tclsh
  2. set a 100
  3. set b 200
  4. switch $a {
  5. 100 {
  6. puts "This is part of outer switch"
  7. switch $b {
  8. 200 {
  9. puts "This is part of inner switch!"
  10. }
  11. }
  12. }
  13. }
  14. puts "Exact value of a is : $a"
  15. puts "Exact value of a is : $b"

当上述代码被编译和执行时,它产生了以下结果:


  
  1. This is part of outer switch
  2. This is part of inner switch!
  3. Exact value of a is : 100
  4. Exact value of a is : 200

 

 

 

 

 

文章来源: reborn.blog.csdn.net,作者:李锐博恩,版权归原作者所有,如需转载,请联系作者。

原文链接:reborn.blog.csdn.net/article/details/85158907

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。