TCL几条命令小结

上一篇 / 下一篇  2011-05-26 11:31:13 / 个人分类:TCL技术

Set

1.对变量进行赋值操作

2.变量的值已经发生改变

Append

1.增加字符串跟在append后面的变量不能使用变量置换符号

如只能使用:

append txt “sldfkjlsjfl”append txt skjdflksjdflsjkdf

不能使用:

Append $txt “sldfkjlsjfl”

2.变量的值已经发生改变

 

Incr

1.增加整型变量跟在incr后面的变量不能使用变量置换符号

如只能使用:

incr int +3

不能使用:

Incr $ int +3

2.使用incr时后面跟的是正负数而不是加减法

3.变量的值已经发生改变

expr

把此命令放在这个位置应该不对

1.因为expr操作的是表达式,因些此处使用的变量一定要使用$(变量转换符)来进行使用

2.注意使用后变量本身的值没有改变

 

总结

        因此在使用变量的时候比如说for语句,或需要变量自增的时候建议使用“incr var +-setp“或”set var [expr var+setp]”

        凡是使用了$变量转换符的都不会改变其值,除非在使用set变量.

        有点像高级语言中的引用和值调用

        包换之后使用的lreplace命令如下面的例子:

        Set lista {2 3 4 5 6 7 8 9 9 10}

        Set j 2

        if {[lindex $lista $j]<[lindex $lista [expr $j+1]]} {  

                set temp [lindex $lista $j]                            

                lreplace $lista $j $j [lindex $lista [expr $j+1]]

                lreplace $lista [expr $j+1] [expr $j+1] $temp                  

       }            

       puts "after arrary $lista"

 

 

        实现方法如下:

set lista {2 3 4 5 6 7 8 9 9 10}

        set j 2

        if {[lindex $lista $j]<[lindex $lista [expr $j+1]]} {  

                set temp [lindex $lista $j]                            

                set lista [lreplace $lista $j $j [lindex $lista [expr $j+1]] ]

                set lista [lreplace $lista [expr $j+1] [expr $j+1] $temp          ]

       }            

       puts "after arrary $lista"

附上使用list数组实现冒泡算法的例子

proc bubble { lista } {

        

       set temp {}

       for { set i 0 } { $i<9 } { incr i +1 } {

                for {set j 0} { $j<[expr 9-$i] } { incr j +1 } {

                          if {[lindex $lista $j]<[lindex $lista [expr $j+1]]} {

                                   set temp [lindex $lista $j]

                                   set lista [lreplace $lista $j $j [lindex $lista [expr $j+1]]]

                                   set lista [lreplace $lista [expr $j+1] [expr $j+1] $temp]                                    

                          }

                }

       }

       puts $lista

 }

 

 set lista {10 2 3 4 5 1 7 8 9 0}

 bubble $lista

 

使用数组法:

 

proc mapao { lista } {

        

        set length [llength $lista]

        for { set temp 0 } { $temp<$length } { incr temp +1 } {

                  set arrey($temp) [lindex $lista $temp]

        }

        puts "the array"

        puts $arrey

        

       set arreytemp 0

       for { set i 0 } { $i<[expr $length-1] } {incr i +1} {

                 for { set j 0 } { $j<[expr [expr $length-1]-$i] } {incr j +1} {

                          if {$arrey($j)<$arrey([expr $j+1])} {

                                   set arreytemp $arrey($j)

                                   set arrey($j) $arrey([expr $j+1])

                                   set arrey([expr $j+1]) $arreytemp

                          }

                 }

       }

       for { set temp 0 } { $temp<$length} { incr temp +1 } {

                 append listb $arrey($temp) { }

       }

       

       puts $listb

}      

 

set lista {1 2 3 4 5 6 19 3 6 7 8 9}

mapao $lista

 


TAG: 数组 list List 冒泡 LIST

 

评分:0

我来说两句

日历

« 2024-03-31  
     12
3456789
10111213141516
17181920212223
24252627282930
31      

数据统计

  • 访问量: 8418
  • 日志数: 14
  • 文件数: 1
  • 建立时间: 2011-04-20
  • 更新时间: 2012-02-22

RSS订阅

Open Toolbar