TCL语言学习入门
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
switch控制流:
基本语法:
1
2
3
4
5
6
switch $x{
数值1 { 操作1 ;}
数值2 { 操作2 ;}
}
9.循环
tcl提供三种循环命令,分别为:for,foreach,while。此外tcl还提供两个循环控制命令。注意:这个三个命令中的程序块的开始花括号必须要和三个命令同一行。
while基本语法:
3.数据类型:
tcl不支持.net中的形如int , double ,char等等类型,唯一支持的就是string类型。也就是说一个变量可以在不同的时刻理解为不同的类型。
4.变量
tcl可以定义两种类型的变量:变量和数组。
变量:在tcl变量不需要声明就可以直接赋值。给变量赋值的例子:
1
2
set ba 1;
1
parray qian;#将打印出qian数组的所有信息
5.字符串操作
string命令基本语法如下(这里的string1,string2可以是字符串也可以是变量,option是下列选项之一)
1
string option string1 string2;
option的操作选项:
compare按照字典的排序方式进行比较。根据string1 <,=,>string2分别返回-1,0,1
length返回string1的长度
例子:
1
string length $qian;#将返回变量qian的长度
6.数字操作
因为tcl中只有一个string类型的变量,所以当要操作数字进行运算的时候,tcl提供了incr和expr两个操作数。
incr的基本用法为:
incr variable integer(variable必须为数字)
set ma “qian li feng”;#加引号的作用是为了告诉编译器包括空格
取得变量的值可以在对应的变量名前面加$来取得,例如:
1
puts $ba;#表示打印出ba的值
数组:数组也不需要声明,直接赋值,例如:
1
2
set qian(0) 1;
set qian(1) 2;
一个比较有意思的地方是数组下标可以不按照顺序来写,也不一定是数字,可以是字符串。例如:
first返回string2中第一次出现string1的位置,如果没有出现string1则返回-1
last和first相反
trim从string1中删除开头和结尾的出现在string2中的字符
tolower返回string1中的所有字符被转换为小写字符后的新字符串
toupper返回string1中的所有字符串转换为大写后的字符串
例如我要将一个数字加3
1
2
set a 3;
incr a 3;#将a加3,如果要减3,则为 incr a –3;
默认的incr a等同于.net里面的a++的意思,即本身自增1。
expr的基本语法为:
1
expr functionnumber
expr是为了提供更加复杂的操作而设计的一个语法,比如运算乘除法等等。在执行算术操作的时候必须将expr命令放在算术操作之前。例如:
switch $element{
# 判断element的值
}
}
for是最常用的循环。其基本结构为:
for {initialization} {condition} {increment} {body}
例如:
1
for{set i 0} {$i< 10} {incr i} {puts $i;} #将打印出0到9
学习动机
因为需要研究NS2无线路由协议,其中ns2的模拟使用tcl来写的,如果tcl不搞懂的话就没法看懂,所以还是来系统的学习一下。另外不得不抱怨一句ns2真是够折磨人的,相当的考验人的耐心~~……真不知道最后能不能达到导师的要求,先厚着脸皮做吧。
基本语法
1.命令结构:
commandName arguments。每条命令之间通过换行或者;隔开。例如:
1
2
set foo 0
set bar 1;
2.注释:
使用#注释,不过要注意的是下面的注释是错误的:
1
set foo 0#这个是注释
因为tcl解析器总是认为一条命令应该以换行或者分号结束,其他的在同一行中都认为是参数。所以正确的应该是:
1
set foo 0;#这个是注释
其实对于习惯于.net编程的人来说每行末尾加个;应该是理所当然的事情,所以这个对我们应该没有什么不习惯的。
TCL脚本语言学习
语言简介
Tcl是一种很通用的脚本语言,它几乎在所有的平台上都可以解释运行,功能强大。是tool command language的缩写,发音为"tickle”。实际上包含了两个部分:一个语言和一个库。首先,Tcl是一种简单的脚本语言,主要使用于发布命令给一些互交程序如文本编辑器、调试器和shell。它有一个简单的语法和很强可扩充性,Tcl可以创建新的过程以增强其内建命令的能力。其次,Tcl是一个库包,可以被嵌入应用程序,Tcl的库包含了一个分析器、用于执行内建命令的例程和可以使你扩充(定义新的过程)的库函数。应用程序可以产生Tcl命令并执行,命令可以由用户产生,也可以从用户接口的一个输入中读取(按钮或菜单等)。但Tcl库收到命令后将它分解并执行内建的命令,经常会产生递归的调用。
1
2
3
set qian(123) f;
set qian(6789) fs;
set qian(good) yes;
我们可以使用puts $qian(123);的形式来获得数组的内容。当然tcl数组也支持多维数组,声明形式为:
1
set qian(1,1,1,1,1) fs;#随便多少维
如果我们要查看某个已经赋值的数组的信息,可以使用parray命令:如:
7.转义
在tcl中可以使用{}将需要转义的字符串括起来。例如:
1
2
set a 5;
set b {$a};#此时b的值为”$a“,而不是5。
8.流控制
if控制流
基本语法:
1
2
3
4
5
if{ 表达式 } {
#运算;
} else{
#其他运算;
}
需要注意的是if….else,if……elseif…中的else,elseif必须要和if的后面一个{在同一行。
while {条件} {程序块}
foreach将在一组变元中进行循环,并且每次都将执行他的循环体。基本结构:
foreach variable {items} {block}
这里的variable是变量的名字,便于block中使用。举例:
1
2
3
4
5
foreachelement {0 m n b v} {
1
2
set a 20; set b 4;
set c [expr $a/$b];#此时的c的值为5
除此之外,expHale Waihona Puke Baidu还能够识别一些函数及其返回值如下:
abs(x) x的绝对值
round(x) x舍入后得到的整数值
sin(x) x的正弦
…………………………………..
举个例子:
1
set a [expr sin(0.3)];#计算0.3的正弦
基本语法:
1
2
3
4
5
6
switch $x{
数值1 { 操作1 ;}
数值2 { 操作2 ;}
}
9.循环
tcl提供三种循环命令,分别为:for,foreach,while。此外tcl还提供两个循环控制命令。注意:这个三个命令中的程序块的开始花括号必须要和三个命令同一行。
while基本语法:
3.数据类型:
tcl不支持.net中的形如int , double ,char等等类型,唯一支持的就是string类型。也就是说一个变量可以在不同的时刻理解为不同的类型。
4.变量
tcl可以定义两种类型的变量:变量和数组。
变量:在tcl变量不需要声明就可以直接赋值。给变量赋值的例子:
1
2
set ba 1;
1
parray qian;#将打印出qian数组的所有信息
5.字符串操作
string命令基本语法如下(这里的string1,string2可以是字符串也可以是变量,option是下列选项之一)
1
string option string1 string2;
option的操作选项:
compare按照字典的排序方式进行比较。根据string1 <,=,>string2分别返回-1,0,1
length返回string1的长度
例子:
1
string length $qian;#将返回变量qian的长度
6.数字操作
因为tcl中只有一个string类型的变量,所以当要操作数字进行运算的时候,tcl提供了incr和expr两个操作数。
incr的基本用法为:
incr variable integer(variable必须为数字)
set ma “qian li feng”;#加引号的作用是为了告诉编译器包括空格
取得变量的值可以在对应的变量名前面加$来取得,例如:
1
puts $ba;#表示打印出ba的值
数组:数组也不需要声明,直接赋值,例如:
1
2
set qian(0) 1;
set qian(1) 2;
一个比较有意思的地方是数组下标可以不按照顺序来写,也不一定是数字,可以是字符串。例如:
first返回string2中第一次出现string1的位置,如果没有出现string1则返回-1
last和first相反
trim从string1中删除开头和结尾的出现在string2中的字符
tolower返回string1中的所有字符被转换为小写字符后的新字符串
toupper返回string1中的所有字符串转换为大写后的字符串
例如我要将一个数字加3
1
2
set a 3;
incr a 3;#将a加3,如果要减3,则为 incr a –3;
默认的incr a等同于.net里面的a++的意思,即本身自增1。
expr的基本语法为:
1
expr functionnumber
expr是为了提供更加复杂的操作而设计的一个语法,比如运算乘除法等等。在执行算术操作的时候必须将expr命令放在算术操作之前。例如:
switch $element{
# 判断element的值
}
}
for是最常用的循环。其基本结构为:
for {initialization} {condition} {increment} {body}
例如:
1
for{set i 0} {$i< 10} {incr i} {puts $i;} #将打印出0到9
学习动机
因为需要研究NS2无线路由协议,其中ns2的模拟使用tcl来写的,如果tcl不搞懂的话就没法看懂,所以还是来系统的学习一下。另外不得不抱怨一句ns2真是够折磨人的,相当的考验人的耐心~~……真不知道最后能不能达到导师的要求,先厚着脸皮做吧。
基本语法
1.命令结构:
commandName arguments。每条命令之间通过换行或者;隔开。例如:
1
2
set foo 0
set bar 1;
2.注释:
使用#注释,不过要注意的是下面的注释是错误的:
1
set foo 0#这个是注释
因为tcl解析器总是认为一条命令应该以换行或者分号结束,其他的在同一行中都认为是参数。所以正确的应该是:
1
set foo 0;#这个是注释
其实对于习惯于.net编程的人来说每行末尾加个;应该是理所当然的事情,所以这个对我们应该没有什么不习惯的。
TCL脚本语言学习
语言简介
Tcl是一种很通用的脚本语言,它几乎在所有的平台上都可以解释运行,功能强大。是tool command language的缩写,发音为"tickle”。实际上包含了两个部分:一个语言和一个库。首先,Tcl是一种简单的脚本语言,主要使用于发布命令给一些互交程序如文本编辑器、调试器和shell。它有一个简单的语法和很强可扩充性,Tcl可以创建新的过程以增强其内建命令的能力。其次,Tcl是一个库包,可以被嵌入应用程序,Tcl的库包含了一个分析器、用于执行内建命令的例程和可以使你扩充(定义新的过程)的库函数。应用程序可以产生Tcl命令并执行,命令可以由用户产生,也可以从用户接口的一个输入中读取(按钮或菜单等)。但Tcl库收到命令后将它分解并执行内建的命令,经常会产生递归的调用。
1
2
3
set qian(123) f;
set qian(6789) fs;
set qian(good) yes;
我们可以使用puts $qian(123);的形式来获得数组的内容。当然tcl数组也支持多维数组,声明形式为:
1
set qian(1,1,1,1,1) fs;#随便多少维
如果我们要查看某个已经赋值的数组的信息,可以使用parray命令:如:
7.转义
在tcl中可以使用{}将需要转义的字符串括起来。例如:
1
2
set a 5;
set b {$a};#此时b的值为”$a“,而不是5。
8.流控制
if控制流
基本语法:
1
2
3
4
5
if{ 表达式 } {
#运算;
} else{
#其他运算;
}
需要注意的是if….else,if……elseif…中的else,elseif必须要和if的后面一个{在同一行。
while {条件} {程序块}
foreach将在一组变元中进行循环,并且每次都将执行他的循环体。基本结构:
foreach variable {items} {block}
这里的variable是变量的名字,便于block中使用。举例:
1
2
3
4
5
foreachelement {0 m n b v} {
1
2
set a 20; set b 4;
set c [expr $a/$b];#此时的c的值为5
除此之外,expHale Waihona Puke Baidu还能够识别一些函数及其返回值如下:
abs(x) x的绝对值
round(x) x舍入后得到的整数值
sin(x) x的正弦
…………………………………..
举个例子:
1
set a [expr sin(0.3)];#计算0.3的正弦