1. 程式人生 > >NS2入門學習(三)之Tcl知識點

NS2入門學習(三)之Tcl知識點

1、基本命令格式換(如下總結一些易錯的知識點)

“#”:註釋

";"或者"換行"作為語句的結束

2、變數

變數不需要事先宣告;

在使用變數時要在變數名前加$,如$var;

set  var 3,set命令用來給變數賦值;

  unset var,unset命令用來刪除變數;

3,組合和替代

替代

        變數替代:如前面的變數賦值

命令替代:這種形式的替代使用方括號"[]"來實現:

                            注意set  a 3;   set len [expr $a*2]; 輸出結果是6,tcl中變數只有字串一種,

                            所以通過$a的值應該是字串'3',在expr中轉換成數值3並進行計算。

反斜槓替代:和c語言類似,與特殊含義字元組合就表示這個字元本身,如“\$” "\{" “\}” "\[" "\]" "\\"來表示這些符號本身$ {} [] \.不再具有特殊含義。

表示續行;和C類似,換頁換行等替代。

組合

     通過雙引號或者{}使兩個字串組合成一個字串。

替代與組合的順序

從左到右遍歷引數,組合的決定是在替代前做出的

示例:set a 3; set b 5;

    puts"$a+$b=[set a [expr $a+$b]]"

         =>3+5=8  #首先進行組合,掃描到$a+$b=,得到3+5=,然後替換[]內的,得到值8,且此時a=8;

         puts"[set a [expr $a+$b]]=$a+$b"

         =>13=13+5  #[]是實現了命令替代,上面已經得到a=8,所以前面是a又被賦值13,後面a也是13了

4、數學運算

運算子與C基本類似

5、流程控制

        if語句:          後面的表示式是使用{},if{$a==0}{命令體}; switch語句 : 則通過指定是-exact,-glob,-regexp來完成匹配;         while語句:    後面表示式和命令體也是使用{}; foreach語句:foreach Var {valuelist} {body},從資料列表中依次取出數值來賦給變數Var,然後執行一次命令體body, valuelist是用花括號括起來的多個值的組合; for迴圈語句: for{set I 1} {$I<11}{ incr 1 } {body}#單獨的{}來處理3個部分,同c類似;         break與continue命令:與C類似; catch命令:catch { 命令體} result,result用來儲存命令結果或者出錯資訊,如果無錯誤,返回0給result,若有錯則為非0;

6、過程:

自定義過程:proc name {params} {body} #就是定義函式,name為函式名,後面是引數,body是函式體,呼叫時直接 name var1 var2..; rename命令:可以改變一個命令的名稱 作用域:proc內為區域性變數,之外的為全域性變數,與C類似,但是在proc內使用全域性變數時需要前面加上 global關鍵字。 遞迴呼叫過程:在proc內呼叫自己,但要有遞迴結束條件,與C類似

7、陣列

定義陣列:不用事先定義一個集合,而是直接每次用set定義出陣列中的一個元素來。下標可以不是數字,可以是任意字元。unset 陣列名 刪除陣列。 array命令:array 處理陣列的命令體,例如array exists arr#判斷是否存在陣列,如果存在返回1,否則返回0. 示例: set ll [list 0 aa 1 b  2 cc]#構建列表       array set arr $ll #從列表來構建陣列,結果為arr(0)=aa,arr(1)=bb,arr(2)=cc      set arr(0)      =>aa       array get arr     =>0 aa 1 bb 2 cc     foreach index [array names arr]     {puts stdout $arr($index) }     =>aa     bb     cc    while{[array anymore arr $id]}#如果陣列還有剩餘元素   { set  index[array nextelement arr $id] #獲得下一個元素的索引 puts"\$arr($index)=$arr($index)"#列印陣列元素的值   }     =>$arr(0)=aa         $arr(1)=bb
        $arr(2)=cc