收藏 分享(赏)

TCL基础教程——(五)TCL中的结构控制.docx

上传人:HR专家 文档编号:11985272 上传时间:2021-06-20 格式:DOCX 页数:6 大小:71.15KB
下载 相关 举报
TCL基础教程——(五)TCL中的结构控制.docx_第1页
第1页 / 共6页
TCL基础教程——(五)TCL中的结构控制.docx_第2页
第2页 / 共6页
TCL基础教程——(五)TCL中的结构控制.docx_第3页
第3页 / 共6页
TCL基础教程——(五)TCL中的结构控制.docx_第4页
第4页 / 共6页
TCL基础教程——(五)TCL中的结构控制.docx_第5页
第5页 / 共6页
点击查看更多>>
资源描述

1、TCL基础教程 ( 5) TCL中的结构控制TCL 中的控制结构是通过使用命令来实现的,命令中有循环命令:while ,foreach 和 for。还有条件命令: if 和 switch 。错误处理命令: catch。还有一些控制微调结构的命令,如: break,continue, return 和 error。一 if then else这个命令的语法为if espression then body1 else body2看这个程序:ppcornlocalhost ppcorn$ cat iftest1.tcl#!/usr/bin/tclsh# This program used to te

2、st if then eles# The number input by keyboard will be divide by 10 #puts -nonewline Please input a number: flush stdout;set x gets stdinif $x=0 then puts stderr Divide by zero else set slope expr 10/$xputs $slopeppcornlocalhost ppcorn$ ./iftest1.tclPlease input a number: 0Divide by zeroppcornlocalho

3、st ppcorn$ ./iftest1.tclPlease input a number: 25这个程序中,请大家注意一下读入键盘输入的方法,先执行flush stdout ,然后使用来读键盘输入。还有一个需要注意的是在程序的第一个字符为#的话,表示这行被注释。get stdin同时,在这个结构中,then 是可以省略的,也就是程序也可以是这个样子ppcornlocalhost ppcorn$ cat iftest2.tcl#!/usr/bin/tclsh# This program used to test if eles# The number input by keyboard wil

4、l be divide by 10#puts -nonewline Please input a number: flush stdout;set x gets stdinif $x=0 puts stderr Divide by zero else set slope expr 10/$xputs $slope除了 if else 外,还有 if elseif else 的用法,用来处理有更多可能结果的情况,如下面的这个程序ppcornlocalhost ppcorn$ cat iftest3.tcl#!/usr/bin/tclsh# This program used to test if

5、 elesif# The number input by keyboard will be compared by 0#puts -nonewline Please input a number: flush stdout;set x gets stdin if $x0 then puts The input number $x less than 0 elseif $x=0 puts The input number $x equal 0 else puts The input number $x large than 0ppcornlocalhost ppcorn$ ./iftest3.t

6、clPlease input a number: -1The input number -1 less than 0ppcornlocalhost ppcorn$ ./iftest3.tclPlease input a number: 0The input number 0 equal 0ppcornlocalhost ppcorn$ ./iftest3.tclPlease input a number: 1The input number 1 large than 0二 switchswitch 命令根据表达式的值的不同来执行多个分支命令中的一个,该命令的一般形式为:switch flags

7、 value pat1 body1 pat2 body2对于 flags 来说,可以为如下值:-exact 精确匹配,也是默认值-glob 使用通配符的格式-regexp 使用正则表达式匹配- 没有标志(或者标志结束) 。当 value 以- 开始的时候,必须用到这个。看一个使用精确匹配的例子ppcornlocalhost ppcorn$ cat switchtest1.tcl#!/usr/bin/tclsh# This program used to test switch# The number input will be comared with 0,10,100#puts -nonew

8、line Please input a number: flush stdout;set x gets stdinswitch -exact $x 0 puts The input is 010 puts The input is 10100 puts The input is 100default puts Helloppcornlocalhost ppcorn$ ./switchtest1.tclPlease input a number: 0The input is 0ppcornlocalhost ppcorn$ ./switchtest1.tclPlease input a numb

9、er: 10The input is 10ppcornlocalhost ppcorn$ ./switchtest1.tclPlease input a number: 100The input is 100ppcornlocalhost ppcorn$ ./switchtest1.tclPlease input a number: 90Hello在上个程序中,如果读入的是0, 10, 100,分别执行各自内部的指令,如果都不是,则执行默认的指令,也就是default 内部的。再看一个使用通配符的程序ppcornlocalhost ppcorn$ cat switchtest2.tcl#!/u

10、sr/bin/tclsh# This program used to test switch# The wordinput will be comared with a,e,i,o,u#puts -nonewline Please input word: flush stdout;set x gets stdinswitch -glob $x *a* puts The word has alpha a*e* puts The word has alpha e*i* puts The word has alpha i*o* puts The word has alpha o*u* puts Th

11、e word has alpha udefault puts The word is errorppcornlocalhost ppcorn$ ./switchtest2.tclPlease input word: patThe word has alpha appcornlocalhost ppcorn$ ./switchtest2.tclPlease input word: bedThe word has alpha eppcornlocalhost ppcorn$ ./switchtest2.tclPlease input word: bitThe word has alpha ippc

12、ornlocalhost ppcorn$ ./switchtest2.tclPlease input word: oldThe word has alpha oppcornlocalhost ppcorn$ ./switchtest2.tclPlease input word: pushThe word has alpha uppcornlocalhost ppcorn$ ./switchtest2.tclPlease input word: rtThe word is error三 whilewhile 接受两个变元,一个是测试表达式,一个命令体,如:while booleanExpr bo

13、dy看下面的程序,输入一个数字后,计算1 到该数字的累加之和。ppcornlocalhost ppcorn$ cat whiletest.tcl#!/usr/bin/tclsh# This program used to test while# The program will add from 1 to the number input by keyboard#puts -nonewline Please input a number: flush stdout;set x gets stdinset j 0set i 1while $i$x set j expr $j+$iincr ipu

14、ts $jppcornlocalhost ppcorn$ ./whiletest.tclPlease input a number: 1045请大家注意程序中incr i 的用法,这个表示自动给i 加1,类似别的语言中的i+ ,如果每次都要自动加2,则写为incr i 2 ,如果是递减的话,则是incr i -1 。四 forfor 命令的格式如下for initial test final body将上面的while 程序用 for 来实现ppcornlocalhost ppcorn$ cat fortest.tcl#!/usr/bin/tclsh# This program used to

15、 test for# The program will add from 1 to the number input by keyboard#puts -nonewline Please input a number: flush stdout;set x gets stdinset j 0for set i 0 $i$x incr i set j expr $j+$iputs $jppcornlocalhost ppcorn$ ./fortest.tclPlease input a number: 1045五 foreachforeach 命令循环执行一个命令体,每次将一个或多个列表中的值赋

16、给一个或多个变量,一般的语法为:foreach loopVar valuelist commandBody.关于列表的用法,将在下面讲到。看这个程序ppcornlocalhost ppcorn$ cat foreachtest.tcl#!/usr/bin/tclsh# This program used to test foreach#foreach value 1 3 2 11 5 4 7 6 9 puts $valueppcornlocalhost ppcorn$ ./foreachtest.tcl1321154769六 break, continue在循环中,如果遇到了 break,则会自动退出程序,而如果是遇到了 continue,则继续执行程序。两个的命令的用法将会以后介绍

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 实用文档 > 简明教程

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报