Presentation is loading. Please wait.

Presentation is loading. Please wait.

Programming Using Tcl/Tk These slides are based upon u several Tcl/Tk text books u material byDr. Ernest J. Friedman-Hill.

Similar presentations


Presentation on theme: "Programming Using Tcl/Tk These slides are based upon u several Tcl/Tk text books u material byDr. Ernest J. Friedman-Hill."— Presentation transcript:

1 Programming Using Tcl/Tk These slides are based upon u several Tcl/Tk text books u material byDr. Ernest J. Friedman-Hill

2 What you’ll need u PCs in the Computer Science Lab have it installed –Start / Tcl / Wish –Start / Widget tour u Or install it on your own computer –Windows & Macintosh: free binaries available –Most Unix: source available u Documentation  books can be bought (bookstore, etc)  books in the PC lab –up-to-date man pages on-line  Start / Help

3 What is Tcl/Tk? u Tcl –a scripting language –can be extended in C (but this is harder) –ugly but simple u Tk –a simple but powerful widget set –Hello World: a complete program that exits when a person presses the button  grid [ button.myButton -text "Hello World" -command exit ] u Simple things are simple, hard things are possible

4 Tcl Language Programming There are two parts to learning Tcl: 1. Syntax and substitution rules: –Substitutions simple (?), but may be confusing at first. 2. Built-in commands: –Can learn individually as needed. –Control structures are commands, not language syntax.

5 Scripts and Commands u Tcl script = –Sequence of commands. –Commands separated by newlines, semi-colons. u Tcl command = –One or more words separated by white space. –First word is command name, others are arguments. –Returns string result. u Examples: set myName Saul puts "My Name is $myName” set class CPSC-481; puts -nonewline $class

6 Arguments u Parser assigns no meaning to arguments (quoting by default, evaluation is special): set x 4 x is "4 " set y x+10 y is "x+10” set z $x+10 z is "4+10” u Different commands assign different meanings to their arguments. “Type-checking” must be done by commands themselves. expr 24/3 arg is math expresson -> 8 eval "set a 122" evaluate argument as a command button.b -text Hello -fg red some args are options (the -) string length Abracadabra some args are qualifiers (length)

7 Variable Substitution  Syntax: $ varName u Variable name is letters, digits, underscores. –This is a little white lie, actually. u May occur anywhere in a word. Sample commandResult set b 6666 set a bb set a $b66 set a $b+$b+$b66+66+66 set a $b.366.3 set a $b4 no such variable

8 Command Substitution u Syntax: [script] u Evaluate script, substitute result. u May occur anywhere within a word. Sample commandResult set b 88 set a [expr $b+2]10 set a "b-3 is [expr $b-3]"b-3 is 5

9 Controlling Word Structure u Words break at white space and semi-colons, except: –Double-quotes prevent breaks: set a 4; set y 5 set a "x is $x; y is $y" -> x is 4; y is 5 –Curly braces prevent breaks and substitutions: set a {[expr $b*$c]} -> [expr $b*$c] –Backslashes quote special characters: set a word\ with\ \$\ and\ space -> word with $ and space

10 Controlling Word Structure (continued) –Backslashes can escape newline (continuation)  set aLongVariableNameIsUnusual \ “This is a string” -> This is a string –Substitutions don't change word structure:  set a "two words" set b $a -> two words

11 Comments u The # is the comment command u Tcl parsing rules apply to comments as well set a 22; set b 33 <- OK # this is a comment <- OK set a 22 # same thing? <- Wrong! set a 22 ;# same thing <- OK

12 Summary of Tcl Command Syntax u Command: words separated by whitespace u First word is a function, others are arguments u Only functions apply meanings to arguments u Single-pass tokenizing and substitution u $ causes variable interpolation u [ ] causes command interpolation u “” prevents word breaks u { } prevents all interpolation u \ escapes special characters u TCL HAS NO GRAMMAR!

13 Tcl Expressions u Arguments are interpretted as expressions in some commands: expr, if,... Sample commandResult set b 55 expr ($b*4) - 317 expr $b <= 20 expr {$b * cos(4)}-3.268… u Some Tcl operators work on strings too (but safer to use the string compare command) set a BillBill expr {$a < "Anne"}0 expr {$a < "Fred"}1

14 Tcl Arrays u Tcl arrays are 'associative arrays': index is any string –set foo(fred) 44 ;# 44 –set foo(2) [expr $foo(fred) + 6] ;# 50 –array names foo ;# fred 2 u You can 'fake' 2-D arrays: set A(1,1) 10 set A(1,2) 11 array names A => 1,1 1,2 (commas included in names!)

15 Lists u Zero or more elements separated by white space: set colors {red green blue} u Braces and backslashes for grouping: set hierarchy {a b {c d e} f}) set two_item_list {one two\ two} u List-related commands: concatlindexllengthlsearch foreachlinsertlrangelsort lappendlistlreplace  Note: all indices start with 0. end means last element u Examples: lindex {a b {c d e} f} 2 í c d e lsort {red green blue} í blue green red

16 String Manipulation u String manipulation commands: regexpformatsplitstring regsubscanjoin  string subcommands compare first last index length match range toupper tolower trim trimleft trimright  Note: all indexes start with 0. end means last char  string tolower "THIS" ;# this  string trimleft “XXXXHello” ;# Hello  string index “abcde” 2 ;# c

17 Control Structures u C-like in appearance. u Just commands that take Tcl scripts as arguments. u Commands: ifforswitchbreak foreachwhileevalcontinue

18 if else set x 2 if {$x < 3} { puts "x is less than 3" } else { puts "x is 3 or more" }

19 while #list reversal set a {a b c d e} set b "” set i [expr [llength $a] - 1] while {$i >= 0} { lappend b [lindex $a $i] incr i -1 } puts $b

20 for and foreach for {set i 0} {$i<10} {incr i} { puts $I } foreach color {red green blue} { puts “I like $color” } set A(1) a; set A(2) b; set A(26) z foreach index [array names A] { puts $A($index) }

21 switch set pete_count 0 set bob_count 0 set other_count 0 foreach name {Peter Peteee Bobus Me Bobor Bob} { switch -regexp $name { ^Pete* {incr pete_count} ^Bob|^Robert {incr bob_count} default {incr other_count} } puts "$pete_count $bob_count $other_count"

22 Procedures  proc command defines a procedure: proc decrement {x} { expr $x-1 } u Procedures behave just like built-in commands: decrement 3 í 2 u Arguments can have default values: proc decrement {x {y 1}} { expr $x-$y } decrement 100 5 ;# 95 decrement 100 ;# 99 name list of argument names body

23 Procedures u Procedures can have a variable number of arguments proc sum args { set s 0 foreach i $args { incr s $i } return $s } sum 1 2 3 4 5 í 15 sum í 0

24 Procedures and Scope u Scoping: local and global variables. –Interpreter knows variables by their name and scope –Each procedure introduces a new scope  global procedure makes a global variable local set outside "I'm outside" set inside "I'm really outside" proc whereAmI {inside} { global outside puts $outside puts $inside } whereAmI "I wonder where I will be " -> I'm outside I wonder where I will be

25 Tcl File I/O u Tcl file I/O commands: opengetsseekflushglob closereadtellcd fconfigure fblocked fileevent putssourceeofpwdfilename u File commands use 'tokens' to refer to files set f [open "myfile.txt" "r"] => file4 puts $f "Write this text into file" close $f

26 Tcl File I/O u gets and puts are line oriented set x [gets $f] reads one line of $f into x  read can read specific numbers of bytes read $f 100 => (up to 100 bytes of file $f)  seek, tell, and read can do random-access I/O set f [open "database" "r"] seek $f 1024 read $f 100 => (bytes 1024-1123 of file $f)

27 Tcl Network I/O  socket creates a network connection set f [socket www.sun.com 80] fconfigure $f -buffering line puts $f "GET /" puts [read $f 100] close $f => The 1st 100 characters from Sun's home page u Network looks just like a file! u To create a server socket, just use socket -server accept portno


Download ppt "Programming Using Tcl/Tk These slides are based upon u several Tcl/Tk text books u material byDr. Ernest J. Friedman-Hill."

Similar presentations


Ads by Google