_THE TCL PROGRAMMING LANGUAGE_ by John K. Ousterhout Example 1: (a) Enter: expr 3 << 2 Returned value: 12 (b) Enter: expr 14.1*6 Returned value: 84.6 (c) Enter: expr (3 > 4) || (6 <= 7) Returned value: 1 Example 2: button .b -text "Hello, world!" -command exit pack .b Example 3: #!/usr/local/bin/wish -f button .b -text "Hello, world!" -command exit pack .b Example 4: (a) -command "puts Good-bye!; exit" (b) destroy .b source hello Example 5: (a) Enter: set a 44 Returned value: 44 (b) Enter: expr $a*4 Returned value: 176 (c) Enter: set a 44 set b [expr $a*4] Returned value: 176 (d) set x \$a set newline \n Example 6: (a) proc power {base p} { set result 1 while {$p0} { set result [expr $result*$base] set p [expr $p-1] } return $result (b) Enter: power 2 6 Returned value: 64 Enter: power 1.15 5 Returned value: 2.01136 Example 6: (a) proc power {base p} { set result 1 while {$p0} { set result [expr $result*$base] set p [expr $p-1] } return $result (b) Enter: power 2 6 Returned value: 64 Enter: power 1.15 5 Returned value: 2.01136 Example 7: (a) while (p>0) { result *= base; p -= 1; } (b) while {$p>0} { set result [expr $result*$base] set p [expr $p-1] } (c) set {$p>0} { set result [expr $result*$base] set p [expr $p-1] } Example 8: #!/usr/local/bin/wish -f proc power {base p} { set result 1 while {$p>0} { set result [expr $result*$base] set p [expr $p-1] } return $result } entry .base -width 6 -relief sunken -textvariable base label .label1 -text "to the power" entry .power -width 6 -relief sunken -textvariable power label .label2 -text "is" label .result -textvariable result pack .base .label1 .power .label2 .result -side left \ -padx 1m -pady 2m bind .base {set result [power $base $power]} Example 9: (a) Enter: exec grep #include tk.h Returned value: #include #include #include (b) #!/usr/local/bin/wish -f set id 0 entry .entry -width 30 -relief sunken -textvariable cmd pack .entry -padx 1m -pady 1m bind .entry { set id [expr $id + 1] if {$id > 5} { destroy .b[expr $id - 5] } button .b$id -command "exec <@stdin >@stdout $cmd" \ -text $cmd pack .b$id -fill x .b$id invoke .entry delete 0 end } Example 10: (a) .entry configure -background yellow (b) .b1 configure -foreground brown .b1 flash>