TCL培训教程(全)

上传人:大米 文档编号:474236401 上传时间:2023-08-19 格式:DOCX 页数:99 大小:253.61KB
返回 下载 相关 举报
TCL培训教程(全)_第1页
第1页 / 共99页
TCL培训教程(全)_第2页
第2页 / 共99页
TCL培训教程(全)_第3页
第3页 / 共99页
TCL培训教程(全)_第4页
第4页 / 共99页
TCL培训教程(全)_第5页
第5页 / 共99页
点击查看更多>>
资源描述

《TCL培训教程(全)》由会员分享,可在线阅读,更多相关《TCL培训教程(全)(99页珍藏版)》请在金锄头文库上搜索。

1、Tcl 编程简介(一)简介Tcl 是一种很通用的脚本语言,它几乎在所有的平台上都可以解释运行,功能强大。是tool command language的缩写,发音为tickle”,实际上包含了两个部分:一个语言和一个库。首先, Tcl 是一种简单的脚本语言,主要使用于发布命令给一些互交程序如文本编辑器、调试器和shell 。它有一个简单的语法和很强可扩充性, Tcl 可以创建新的过程以增强其内建命令的能力。其次, Tcl 是一个库包,可以被嵌入应用程序,Tcl 的库包含了一个分析器、用于执行内建命令的例程和可以使你扩充(定义新的 过程)的库函数。应用程序可以产生 Tcl 命令并执行,命令可以由用

2、户产生,也可以从用户接口的一个输入中读取(按钮或菜单等)。 但 Tcl 库收到命令后将它分解并执行内建的命令,经常会产生递归的调用。下面简单介绍以下tcl的语法规则:解释器在 Tcl 的数据结构中的核心是 Tcl_Interp. 一个解释器包含了一套命令,一组变量和一些用于描述状态的东西。每一个 Tcl 命令是 在特定的Tcl_Interp 中运行的 , 基于 Tcl 的应用程序可以同时拥有几个 Tcl_Interp 。 Tcl_Interp 是一个轻量级的结构,可以快速的新建和删除。数据类型Tcl 只支持一种数据结构:字符串( string )。所有的命令,命令的所有的参数,命令的结果,所有

3、的变量都是字符串。请牢记这一点,所有的东西都是字符串。 这是它比较有特点的方面字符串有三种形式:命令(command), 表达式 (expresion)和表 (list)。Basic Command Syntax基本语法Tcl 有类似于 shell 和 lisp 的语法,当然也有许多的不同。一 条 Tcl 的命令串包含了一条或多条命令用换行符或分号来隔开,而每一条命令包含了一个域 (field) 的集合,域使用空白分开的,第一个域是一个命令的名字,其它的是作为参数来传给它。精品文档例如:set a 22 /相当于 C 中的 a=22 a 是一个变量这条命令分为三个域:1set 2 a 3 22

4、 set使用于设置变量的值的命令,a、20 作为参数来传给它, a 使它要操作的变量名, 22 是要付给的 a 值。Tcl 的命令名可以是内置的命令也可以是用户建的新命令,如果是用户用户建的新命令应用程序中用函数Tcl_CreateCommand来创建。所有的参数作为字符串来传递,命令自己会按其所需来解释的参数的。命令的名字必须被打全,但 Tcl解释器找不到一同名的命令时会用unknown 命令来代替。在很多场合下, unknown 会在库目录中搜寻,找到一个的话,会自动生成一个 Tcl 命令并调用它。 unknown经常完成缩略的命令名的执行。但最好不要使用。注释和 shell 很象,第一个

5、字母是 # 的 Tcl 字符串是注释。其他细节规则Grouping arguments with double-quotes用双引号来集群参数,目的在于使用有空白的参数。例如:set a this string contains whitespace如够一个参数一双引号来开始,该参数会一直到下一个双引号才结束。其中可以有换行符和分号。Variable substitution with $用美元符进行变量替换说白了就是引用该变量。如:set a helloset b $a / b = hello实际上传给 set 命令的参数/ 是 b,helloset c a / b = aCommand s

6、ubstitution with brackets命令子替换(用方括号)例如 :.精品文档set a set b hello实现执行 set b hello并用其结果来替换源命令中的方括号部分,产生一条新命令set a hello /hello为 set b hello的返回值最终的结果是 b=hello a=hello当命令的一个子域以方括号开始以方括号结束,表示要进行一个命令子替换。并执行该子命令,用其结果来替换原命令中的方括号部分。方括号中的部分都被视为 Tcl 命令。如下一个复杂一点的例子:set a xyzset b abc.set c def/return xyzabcdefBac

7、kslash substitution转移符替换转移符时间不可打印字符或由它数意义的字符插入进来。这一概念与 C 语言中的一样。Backspace (0x8).f Form feed (0xc).Newline (0xa).Carriage-return (0xd).Tab (0x9).v Vertical tab (0xb). Left brace (). Right brace (). Open bracket (). Close bracket ().$ Dollar sign ($).sp Space ( ): does not terminate argument.; Semicol

8、on: does not terminate command. Double-quote.Grouping arguments with braces用花扩括号来集群参数用花扩括号来集群参数与用双引号来集群参数的区别在于:用花扩括号.精品文档来集群参数其中的三种上述的子替换不被执行。而且可以嵌套。例如:set a xyz a b c d/set收到俩个参数 a xyz a b c deval set a 22set b 33/eval收到一个参数 set a 22set b 33命令综述1. 一个命令就是一个字符串( string )。2. 命令是用换行符或分号来分隔的。3. 一个命令由许多的

9、域组成。第一个于是命令名,其它的域作为参数来传递。4. 域通常是有空白( Tab 横向制表健 Space 空格)来分开的。5. 双引号可以使一个参数包括换行符或分号。三种子替换仍然发生。6. 花括号类似于双引号,只是不进行三总体换。7. 系统只进行一层子替换,机制替换的结果不会再去做子替换。而且子替换可以在任何一个域进行。8. 如果第一个非控字符是 #, 这一行的所有东西都是注释。表达式对字符串的一种解释是表达式。几个命令将其参数按表达式处理,如:expr 、for和 if,并调用 Tcl 表达式处理器 (Tcl_ExprLong,Tcl_ExprBoolean 等 ) 来处理它们。其中的运算

10、符与C语言的很相似。逻辑非* /%+-左移 右移 只能用于整数。=!=.精品文档逻辑比较& |位运算和异或或& 逻辑 和 或x ? y : zIf-then-else与 C 的一样Tcl中的逻辑真为 1,逻辑假为 0。一些例子:5/4.05 / ( string length abcd + 0.0 )计算字符串的长度转化为浮点数来计算0x03 20y 0x12都返回 1set a 1expr $a+2expr 1+2都返回 3.精品文档TCL语言Tcl ( 最早称为 “工具命令语言 ”Tool Command Language,但是目前已经不是这个含义,不过我们仍然称呼它为TCL) 是一种 脚

11、本语言 。 由 John Ousterhout创建。TCL 很好学,功能很强大。TCL 经常被用于快速原型开发 ,脚本编程,GUI 和测试等方面。 TCL 念作 “踢叩 ” tickle. Tcl 的特性包括 :* 任何东西都是一条命令,包括语法结构(for, if 等) 。* 任何事物都可以重新定义和重载。* 所有的数据类型都可以看作字符串。* 语法规则相当简单* 提供事件驱动给 Socket 和文件。基于时间或者用户定义的事件也可以。* 动态的域定义。* 很容易用 C, C+ ,或者 Java 扩展。* 解释语言,代码能够动态的改变。* 完全的 Unicode 支持。* 平台无关。 Win

12、32 , UNIX , Mac 上都可以跑。* 和Windows 的 GUI 紧密集成。 Tk* 代码紧凑,易于维护。TCL 本身不提供 面向对象 的支持。但是语言本身很容易扩展到支持面向对象。许多 C 语言扩展都提供面向对象能力,包括XOTcl, Incr Tcl等。另外 SNIT 扩展本身就是用 TCL 写的。使用最广泛的TCL 扩展是 TK 。 TK 提供了各种 OS 平台下的图形用户界面GUI 。连强大的 Python 语言都不单独提供自己的GUI ,而是提供接口适配到TK 上。另一个流行的扩展包是 Expect . Expect 提供了通过终端自动执行命令的能力,例如 (passwd , ftp , telnet 等命令驱动的外壳 ).下面是 TCL 程序的例子:#!/bin/sh# next line restarts using tclsh in path exec tclsh $1+$# echo server that can handle multiple# simultaneous connections.proc newConnection sock addr port # client connections will be handled in# line-buffered, non-blocking mode fconfigu

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 幼儿/小学教育 > 幼儿教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号