TCL语言编程_NX
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一)、准备知识:TCL语言—脚本语言P87(注:本文所列程序全部通过了验证)
1、安装软件:ActiveTcl8.5,软件的打开和退出(exit)
2、格式:命令选项参数1 参数2 参数3….参数N
注:中间必须用空格或TAB隔开
交互式与非交互式:TCL的一个命令行,以交互式的方式执行,边编制边执行;TCL脚本程序是以非交互式的方式运行,通过SOURCE打开执行。讲课时会分别进行演示。
特殊符号的使用:
;-----分开命令行
# ------解释,写在命令行后,单独一行时可不写“;”
$ ----置换变量的值,可用到二重置换
\ -----反斜杠置换,对引用特殊符号分配特种功能比如\n 换行;\t 空格;\$ 关闭$的置换功能;\ 用在引用中可续行(持续添加字符串);紧跟在字符串后用于连接后面的字符串
[ ] ----置换嵌套命令,返回最后一个命令的值
注:置换是指取出变量的值或变量运算后的返回值;有的书上称为替换。
" "-----引用标记字符串为一个参数,如出现换行、$和[ ]等置换命令仍有效
{ }-------引用标记字符串为一个参数,视所有字符视为普通字符,置换无效
4、表达式:expr 数学运算可以运算+ - * \ sqrt 三角函数
5、变量:
变量的类型分为标量和数组, 变量名区分大小写.
对变量赋值时,数据类型不用指定(默认为10进制整数),也无须提前声明,如果想改变数据类型必须按规定格式书写,如通过int double 来改变参与运算的参数类型。当标记字符串为一个参数,如出现$等置换命令仍有效;程序外的变量是全局性的:子程序内不能看到,但用全局命令global 就可以在子程序内外都可以看到。
6、赋值与显示变量内容(置换)
set 变量参数
注:参数可以是表达式或变量置换等,清除已赋数据使用unset
puts $变量(有时在puts后会写上标准输出stdout—标准输出)
练习:(1)对参数a 和b分行赋值,并显示执行结果
(2)利用puts输出字符串功能,显示如下结果
ABCDEFG
HIJ
KL
MNO
(3)定义a1.1为变量,并赋值为20,将变量a1.1的值赋给变量b,最后显示变量b的值
(4)算术计算:a. 求4÷7的值,小数点保留3位(预先通过tcl内部变量tcl_precision
定义小数点位,缺省值tcl_precision=0小数点为12位)
b.已知一直角三角形,斜边长为10mm,一直角边长6,求另一直角边长
举例:jisuan.tcl
set c 10
set b 6
set a [expr sqrt($c*$c-$b*$b)]
puts "Another edge len= $a"
或交互式执行set c 10;set b 6\
;puts "Another edge len= [expr sqrt($c*$c-$b*$b)]"
7、集合:list
格式:list 集合元素
赋值set 变量[list集合元素]
list结构下标是从零开始,引用方式使用命令:lindex ,格式:lindex 集合元素位置如:显示集合yy的第二个元素
set yy [list 0 ac 1 vy 2 ii 3 p]
puts " [lindex $yy 1] "
列出所有元素使用foreach 循环;
格式:set i 0;
foreach j $yy { ;
puts "$j is item number $i in list yy"
incr i;
}
获取list中的元素个数:llength $list
8、数组:(重点掌握一维数组)
一维数组格式:数组名(下标)
下标下标可以是任何字符,对数组赋值同样使用set命令,清除使用unset 数组名
有关数组的关键指令:
*array
格式:array 选项数组关系项
(1)判断数组是否存在:array exists 数组名,存在返回值1 ;否则0
(2)对数组赋值:array set 数组名相关项(相关项为一个变量,存放下标和赋值)(3)获取数组的个数(列数):array size 数组名
(4)获取数组内容和下标变量:array get 数组名
(5)获取数组id :array startsearch 数组名返回第一项id
(6)浏览数组:使用foreach
foreach id [array names yy] { ;
puts "$yy($id) has ID: $id"
}
可通过list命令对数组赋值
格式:array set 数组名[list 下标赋值……]
输出数组全部内容格式parray 数组名
练习:
(1)将数组hh(0)=”abc” hh(1)=”cd” hh(2)=”efg”赋给数组gt,并输出gt(2)的内容
set ad "0 abc 1 cd 2 efg"\;array set hh $ad\;array set gt[array get hh]
parray gt
(2)将刀具参数定义为一维数组,并显示
举例:set str "dia 10 rad 5 len 50"
array set tool $str
foreach {key value} [array get tool] {
puts "$key: $value" }
或parray tool