TCL腳本語言學習

TCL腳本語言學習

語言簡介html

         Tcl是一種很通用的腳本語言,它幾乎在全部的平臺上均可以解釋運行,功能強大。是tool command language的縮寫,發音爲 "tickle」。 實際上包含了兩個部分:一個語言和一個庫。 首先,Tcl是一種簡單的腳本語言,主要使用於發佈命令給一 些互交程序如文本編輯器、調試器和shell。它有一個簡單的語法 和很強可擴充性,Tcl能夠建立新的過程以加強其內建命令的能力。其次,Tcl是一個庫包,能夠被嵌入應用程序,Tcl的庫包含了一個分析器、用於執行內建命令的例程和可使你擴充(定義新的 過程)的庫函數。應用程序能夠產生Tcl命令並執行,命令能夠由用戶產生,也能夠從用戶接口的一個輸入中讀取(按鈕或菜單等)。 但Tcl庫收到命令後將它分解並執行內建的命令,常常會產生遞歸的調用。shell

學習動機編程

         由於須要研究NS2無線路由協議,其中ns2的模擬使用tcl來寫的,若是tcl不搞懂的話就無法看懂,因此仍是來系統的學習一下。另外不得不抱怨一句ns2真是夠折磨人的,至關的考驗人的 耐心~~……真不知道最後能不能達到導師的要求,先厚着臉皮作吧。數組

環境安裝編輯器

     到這裏下載運行程序:http://www.newhua.com/soft/63285.htm,運行的界面見下圖:函數

13512837

基本語法學習

1.命令結構:spa

commandName arguments。每條命令之間經過換行或者;隔開。例如:.net

1設計

2

set foo 0

set bar 1;

2.註釋:

使用#註釋,不過要注意的是下面的註釋是錯誤的:

1

set foo 0 #這個是註釋

由於tcl解析器老是認爲一條命令應該以換行或者分號結束,其餘的在同一行中都認爲是參數。因此正確的應該是:

1

set foo 0; #這個是註釋

其實對於習慣於.net編程的人來講每行末尾加個;應該是理所固然的事情,因此這個對咱們應該沒有什麼不習慣的。

3.數據類型:

tcl不支持.net中的形如int , double ,char等等類型,惟一支持的就是string類型。也就是說一個變量能夠在不一樣的時刻理解爲不一樣的類型。

4.變量

tcl能夠定義兩種類型的變量:變量和數組。

變量:在tcl變量不須要聲明就能夠直接賦值。給變量賦值的例子:

1

2

set ba 1;

set ma 「qian li feng」;#加引號的做用是爲了告訴編譯器包括空格

          

         取得變量的值能夠在對應的變量名前面加$來取得,例如:      

1

puts $ba;  #表示打印出ba的值

 

數組:數組也不須要聲明,直接賦值,例如:

1

2

set qian(0) 1;

set qian(1) 2;

         一個比較有意思的地方是數組下標能夠不按照順序來寫,也不必定是數字,能夠是字符串。例如:

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命令:如:     

1

parray qian;   #將打印出qian數組的全部信息

 5.字符串操做

string 命令基本語法以下(這裏的string1,string2能夠是字符串也能夠是變量,option是下列選項之一)  

1

string option string1 string2;

 

option的操做選項:

  compare 按照字典的排序方式進行比較。根據string1 <,=,>string2分別返回-1,0,1

  first 返回string2中第一次出現string1的位置,若是沒有出現string1則返回-1

  last 和first相反

  trim 從string1中刪除開頭和結尾的出如今string2中的字符

  tolower 返回string1中的全部字符被轉換爲小寫字符後的新字符串

  toupper 返回string1中的全部字符串轉換爲大寫後的字符串

  length 返回string1的長度

例子:

1

string length $qian;  #將返回變量qian的長度

6.數字操做

由於tcl中只有一個string類型的變量,因此當要操做數字進行運算的時候,tcl提供了incr和expr兩個操做數。

 

incr的基本用法爲:

incr variable integer(variable必須爲數字)

  例如我要將一個數字加3

1

2

set a 3;

incr a 3; #將a加3,若是要減3,則爲 incr a –3;

  默認的incr a等同於.net裏面的a++的意思,即自己自增1。

 

expr的基本語法爲:

1

expr function number

  expr是爲了提供更加複雜的操做而設計的一個語法,好比運算乘除法等等。在執行算術操做的時候必須將expr命令放在算術操做以前。例如:

1

2

set a 20; set b 4;

set c [expr $a/$b]; #此時的c的值爲5

  除此以外,expr還可以識別一些函數及其返回值以下:

  abs(x) x的絕對值

  round(x) x舍入後獲得的整數值

  sin(x) x的正弦

  …………………………………..

  舉個例子:

1

set a [expr sin(0.3)]; #計算0.3的正弦

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的後面一個{在同一行。

 

switch控制流:

  基本語法:

1

2

3

4

5

6

switch $x {

  

  數值1 { 操做1 ;}            

 

  數值2 { 操做2 ;}

}

9.循環

tcl提供三種循環命令,分別爲:for,foreach,while。此外tcl還提供兩個循環控制命令。注意:這個三個命令中的程序塊的開始花括號必需要和三個命令同一行。

 

while基本語法:

  while {條件} { 程序塊 }

 

foreach 將在一組變元中進行循環,而且每次都將執行他的循環體。基本結構:

  foreach variable {items} {block}

  這裏的variable是變量的名字,便於block中使用。舉例:

1

2

3

4

5

foreach element {0 m n b v} {

       switch $element {

             # 判斷element的值

     }

}

 

for是最經常使用的循環。其基本結構爲:

  for {initialization} {condition} {increment} {body}

  例如: 

1

for {set i 0} {$i < 10} {incr i} {puts $i;} #將打印出0到9

相關文章
相關標籤/搜索