版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2020/10/12,Tcl/Tk语言介绍 研究院,王强 2009.09.09,2020/10/12,一. Tcl/Tk简介 二. Tcl总体结构图 三. Tcl语言的特点 四. Tcl与其它语言的比较 五. Tcl语法简介 六. Tcl操作文件的方法 七. Tk工具箱,2020/10/12,一. Tcl / Tk简介 背景 Tcl/Tk的发明人John Ousterhout教授在八十年代初,是伯克利大学的教授。在其教学过程中,他发现在集成电路CAD设计中,很多时间是花在编程建立测试环境上。并且,环境一旦发生了变化,就要重新修改代码以适应。这种费力而又低效的方法,迫使Ousterhout 教授
2、力图寻找一种新的编程语言,它即要有好的代码可重用性,又要简单易学,这样就促成了Tcl (Tool Command Language) 语言的产生。 Tcl最初的构想的是希望把编程按照基于组件的方法 (component approach),即与其为单个的应用程序编写成百上千行的程序代码,不如寻找一种方法将程序分割成一个个小的, 具备一定“完整”功能的,可重复使用的组件。这些小的组件小到可以基本满足一些独立的应用程序的需求,其它部分可由这些小的组件功能基础上生成。不同的组件有不同的功能,用于不同的目的。并可为其它的应用程序所利用。当然, 这种语言还要有良好的扩展性, 以便用户为其增添新的功能模块
3、。最后,需要用一种强的,灵活的“胶水”把这些组件“粘”合在一起, 使各个组件之间可互相“通信”,协同工作。程序设计有如拼图游戏一样,这种设计思想与后来的Java不谋而合。终于在1988年的春天, 这种强大灵活的胶水-Tcl语言被发明出来了。,2020/10/12,定义 按照Ousterhout教授的定义,Tcl是一种可嵌入的命令脚本化语言 (Command Script Language)。“可嵌入”是指把很多应用有效,无缝地集成在一起。“命令”是指每一条Tcl语句都可以理解成命令加参数的形式: 命令 参数 1 参数 2 参数 3 参数 4 . 参数 N 脚本化是指Tcl为特殊的,特定的任务所
4、设计。但从现在角度看,可以说Tcl是一种集C语言灵活强大的功能与BASIC语言易学高效的风格于一身的通用程序设计语言。 tcl (读作“tickle”)脚本语言和tk工具箱是为XWindow系统创建图形用户界面的编程环境。tcl和tk非常容易学习和使用,并且利用它们构造用户界面的速度要比利用传统的XWindow 编程方法快得多。它最初设计用来为交互式工具提供一种可复用的命令语言,但它的实际发展却远非如此,并且在众多的软件产品中被广泛应用。tcl/tk的真正功能在于,利用tcl脚本语言几乎完全可以编写复杂的图形应用程序,因而避开了利用C语言编写界面时所遇到的界面编程的许多复杂性。,2020/10
5、/12,简介 TCL(Tool Command Language)是一种解释执行的脚本语言(ScriptingLanguage)。它拥有一个固有的核心命令集,同时还具有和C/C+语言类似的控制结构:if控制、循环控制和switch控制等,并支持过程的定义和调用,对数组和字符串等简单数据结构也提供了支持。 由于TCL的解释器是用一个CC+语言的过程库实现的,这个库中有丰富的用于扩展TCL命令的CC+过程和函数,所以可以较为容易的在CC+应用程序中嵌入TCL,而且每个应用程序都可以根据自己的需要对TCL语言进行扩展。我们可以针对某一特定应用领域对TCL语言的核心命令集合进行扩展,加入适合于自己的应
6、用领域的扩展命令,如果需要,甚至可以加入新的控制结构,TCL解释器将把扩展命令和扩展控制结构与固有命令和固有控制结构同等看待。扩展后的TCL语言将可以继承TCL 核心部分的所有功能,包括核心命令、控制结构、数据类型、对过程的支持等。根据需要,我们还可以屏蔽掉TCL的某些固有命令和固有控制结构,一旦我们新定义的命令和控制结构与固有命令和控制结构同名,固有命令和控制结构将被新定义的命令和控制结构所屏蔽。通过对TCL的扩展、继承或屏蔽,用户用不着象平时定义一种计算机语言那样对词法、语法、语义、语用等各方面加以定义,就可以方便的为自己的应用领域提供一种功能完备的脚本语言。,2020/10/12,TCL
7、良好的可扩展性使得它能很好地适应产品测试的需要,测试任务常常会由于设计和需求的改变而迅速改变,往往让测试人员疲于应付。利用TCL的 可扩展性,测试人员就可以迅速继承多种新技术,并针对产品新特点迅速推出扩展TCL命令集,以用于产品的测试中,可以较容易跟上设计需求的变化。 另外,因为TCL是一种比CC+语言有着更高抽象层次的语言,使用TCL可以在一种更高的层次上编写程序,它屏蔽掉了编写CC+程序时必须涉及 到的一些较为烦琐的细节,可以大大地提高开发测试例的速度。而且, 我们使用TCL语言写的测试例脚本,即使作了修改,也用不着重新编译就可以调用TCL解释器执行。可以省去不少时间。 TCL目前已成为自
8、动测试中事实上的标准。,2020/10/12,(注:图中的黑方块代表组件):,二. Tcl总体结构图,2020/10/12,三. Tcl语言的特点 “可信赖的”可移植性 Tcl是一种高级程序设计语言。它将程序设计概念高度抽象,真正地把程序设计与操作系统底层结构隔开,因此不依赖于任何平台,具有良好的可移植性。 相反,虽然C语言也是一种可移植性好的语言,但由于其设计时,保留对系统底层的操作,程序就有了“依赖性”,再加上其“开放”的策略,各个厂家“各自为政”,争先制定“标准”,结果造成版本众多,互不兼容。而Tcl却非常的“单纯”,“标准”也只有一个。是否100% 的“纯”是程序设计语言可移植性的先决
9、条件。 “可信赖”是我给加的。笔者曾有过这样的经验,将一个上万行的,在SUN上用Tcl开发的GUI程序移植到NT平台,竟未改一行Source Code。相反,笔者也曾将一个基于Java的几百行的一个搜索引擎程序移植到NT平台,结果发现涉及文件系统,汉字处理的模块必须做出一个NT版本才能正确执行。 Tcl是用C语言开发的。它现在可运行在Unix,Windows和Macintosh等各种平台上。,2020/10/12,较高的执行效率 Tcl常用的功能模块被编译生成C的库文件。因此,Tcl虽然是按解释方式执行的,但多数执行代码调用的是编译成机器语言的C库文件,因此其执行效率仍然很高。 笔者曾分别用C
10、+,Java和Tcl编写了grep串匹配查找程序,对一个六万行, 长度为15MB的字典文件,用同一模板从文件首进行串查找,用时分别为 C+ (53s),Tcl (69s),Java (287s)。测试环境为: 硬件:SUN SPARCWorkstaion 5 软件:SUN C+ Compiler 4.2,JDK 1.15,Tcl/Tk 7.6 另外,由于Tcl是用解释方式执行的,其扩展和修改应用是在执行过程当中, 比 Microsoft的OLE的静态的对象嵌入连接更具灵活性。例如,一个电子表格程序每次执行时可动态的更新表格中来自被数据库应用程序修改过的数据。,2020/10/12,简单易学 T
11、cl语言简单易学,与C语言的风格有相似的流程控制语句,支持过程化结构。但它也有其本身的风格特点。如隐含了数据类型,即没有了字符,整数,浮点,数组等的差别,全为统一的变量。变量间赋值仍有数据类型间的强制或缺省转换。取消了变量的定义,在程序体的任何部分,都可顺手“抓来”变量。 如果用户有C语言的基础,注意一下Tcl的变量定义方法,花一天的时间, 即可基本掌握。没有Windows编程经验的的人(你完全可以没有X-Windows或 MS Windows的概念),也可在几天之内,参照一些范例程序编出跨平台的 Windows窗口程序来。 正如每一种语言都以“Hello World”做为其第一个程序, 让我
12、们看看Tcl/Tk 的“Hello World”: button .b -text Hello World! -command exit pack .b 这简简单单的两行命令,就已经实现了一个窗口程序所具有的全部功能并且它还可以不加任何修改地运行在X-Windows和MS Windows系统上。,2020/10/12,四. 与其它语言的比较 下面就Tcl与经典的的程序设计语言C+,及现在时髦的Java做一些比较:,2020/10/12,五. Tcl语法 命令结构 TCL命令的基本结构是: commandname arguments 这里的commandname是tcl所要执行的命令,argum
13、ents是提供给此命令的可选变元,整个行(commandname和arguments)称为一个命令。命令之间通过换行(n)或者由分号(;)来分隔。 置换(substitution) TCL解释器在分析命令时,把所有的命令参数都当作字符串看待,例如: set x 100 set y x+100 /y的值是x+100,而不是200 上例的第二个命令中,x被看作字符串x+100的一部分,如果我们想使用x 的值100 就需要用到TCL语言中提供的置换功能。TCL提供三种形式的置换: 变量置换、命令置换和反斜杠置换。每种置换都会导致一个或多个单词符号本身被其他的值所代替。置换可以发生在包括命令名在内的每
14、一个单词符号中,而且置换可以嵌套。,2020/10/12,变量置换:它由一个符号标记,变量置换会导致变量的值插入一个单词符号中。例如: set y $x+100 /y的值是10+100,这里x被置换成它的值10 这时,y的值还不是我们想要的值110,而是10+100,因为TC解释器把10+100看成是一个字符串而不是表达式,y要想得到值110,还必须用命令置换,使得TCL会把10+100看成一个表达式并求值。 命令置换:命令置换是由括起来的TCL命令及其参数,命令置换会导致某一个命令的所有或部分单词符号被另一个命令的结果所代替。例如: set y expr $x+100 /y的值是110,这里
15、x被置换成它的值10,然后expr命令会把10100作为表达式求值,为110。 . 双引号和花括号 TCL提供两种方法来使得解释器对分隔符和置换符等特殊字符当作普通字符,而不作特殊处理,这就要使用双引号和花括号()。 TCL解释器对双引号中的各种分隔符将不作处理,但是对换行符及和两种置换符会照常处理。而在花括号中,所有特殊字符都将成为普通字符,失去其特殊意义,TCL解释器不会对其作特殊处理。例如: set x 100 set y $x ddd / y的值为 100 ddd set y /n$x expr 10+100 / y的值为 /n$x expr 10+100,2020/10/12,TCL
16、 的注释 除命令外,tcl脚本中另一种类型的代码行是注释。如同在UNIX shell和Perl中那样,注释行是以#号开头的行,例如: #this is a comment 但是与shell中不同的是,下面一行内容并不是注释 set foo 0 #initialize foo 而且它将会产生一个错误,这是因为tcl解析器总是认为一条命令应该以换行或分号结束,因此如果想要在命令所在的同一行上包括注释内容,这个命令必须以分号结束,就像下面这样: set foo 0; #initialize foo 因此,用分号结束所有的命令通常是一种很好的做法,尽管有时分号并不是必需的。,2020/10/12,变量
17、 TCL支持两种类型的变量:简单变量和数组。 A. 简单变量 一个TCL的简单变量包含两个部分:名字和值。名字和值都可以是任意字符串。例如一个名为“1323 7 这一行代码用来干什么呢?现在,我们就来解释一下。由于在这一行中指定的构件类型为button,因此也将创建一个按钮;这里设定的路径为. button,所以tk将在根窗口(.是tk的根窗口)中创建按钮,并把它命名为button。,2020/10/12,现在按钮在哪儿呢?此时也只是创建了按钮,按钮并没有被立即显示。为了显示按钮,需要告诉tk 如何来显示这一构件。为此,利用pack 命令并给出所要显示的构件的路径: pack.button; 构件的选项 所有构件都可以使用标准的选项来控制它们的外观和功能。大多数构件可以识别如下选项: -background color,-bg color构件的背景色。 -foreground color,-fg color构件的前景色。 -height pixels:构件的高度(以像素为单位) -width pixe
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026江苏无锡职业技术大学招聘3人备考题库附答案详解(a卷)
- 2026上海交通大学公共卫生学院栾洋课题组博士后招聘备考题库附参考答案详解(夺分金卷)
- 2026北京大旺食品有限公司丰台分公司招聘8人备考题库及答案详解参考
- 2026广东省清远市连南瑶族自治县带编赴高校及三甲医院专项招聘医疗卫生人才22人备考题库含答案详解【基础题】
- 2026广东佛山顺德区梁銶琚夫人幼儿园招聘2人备考题库附参考答案详解(培优b卷)
- 2026四川新火炬化工有限责任公司招聘13人备考题库及完整答案详解(网校专用)
- 2026合肥印象滨湖旅游投资发展有限公司招聘4人备考题库及完整答案详解【有一套】
- 2026江苏无锡广电物业管理有限公司招聘1人备考题库含答案详解【培优】
- 单招考试题库考试试题及答案
- 2026年重庆市中考物理试题(附答案)
- 2026新疆兵团第七师胡杨河市公安机关社会招聘辅警358人笔试备考试题及答案解析
- 2026年安徽新闻出版职业技术学院单招综合素质考试题库及一套答案详解
- DLT 5035-2016 发电厂供暖通风与空气调节设计规范
- 新教科版六年级科学下册教学计划
- 应征入伍服兵役高等学校学生国家教育资助申请表
- 2型糖尿病及围手术期血糖管理【骨科】-课课件
- 污水泵站工艺及施工课件
- 中国酒城醉美泸州四川泸州旅游攻略城市风土人情介绍PPT图文课件
- DB34T 2915-2022 公路水运工程三阶段安全风险分析与预防管理规程
- 国际标准行业分类第4版ISICRev-4中文版
- 2022年吉林大学第二医院医护人员招聘考试笔试题库及答案解析
评论
0/150
提交评论