Introduction To Tcl/Tk Introduction To Tcl/Tk - Contents - - - PowerPoint PPT Presentation
Introduction To Tcl/Tk Introduction To Tcl/Tk - Contents - - - PowerPoint PPT Presentation
Introduction To Tcl/Tk Introduction To Tcl/Tk - Contents - Contents Whats Tcl/Tk? 3 Getting Started 4 Tcl Scripting 5 Basics 5 Variable Substitution 6 Command Substitution 6 Controlling Word Structure 7 Comment 7 Command Line
Introduction To Tcl/Tk
- Contents -
January 23, 2005 Slide 2 of 18
Contents
What’s Tcl/Tk? 3 Getting Started 4 Tcl Scripting 5
Basics 5 Variable Substitution 6 Command Substitution 6 Controlling Word Structure 7 Comment 7 Command Line Arguments 8 Math Expressions 9 Control Structures 10 Procedures 11 Procedures 12 Strings 13 Lists 14 Arrays 15 Error Handling 16 Files and Programs 17 Advanced Tcl Commands 18
Introduction To Tcl/Tk
- What’s Tcl/Tk? -
January 23, 2005 Slide 3 of 18
What’s Tcl/Tk?
- Tcl (Tool Command Language) - high-level scripting language, can be used
as a stand-alone application or embedded in user application program
- Tk - graphical user interface toolkit built on top if Tcl, capable of rapid and sim-
ple creation of powerful and robust GUIs
- Tcl/Tk major advantages:
- Simple and easy to learn syntax
- Ability to handle large enterprise-scale applications
- Ability to easy and quick creation of GUIs
- Tcl/Tk has a C API allows join compilation with the application C/C++
code to obtain single program executable
- It is open source - the distribution and using is completely free
- It is portable - the Tcl/Tk code is available and easy compilable on
virtually all known platforms - Unix - Solaris, AIX, HP , PC, MacOS etc.
- Tcl and Tk were created and developed by John Ousterhout, currently the CEO
- f Scriptics Corporation (http://www.scriptics.com/).
Introduction To Tcl/Tk
- Getting Started -
January 23, 2005 Slide 4 of 18
Getting Started
- The main Tcl/Tk programs are tclsh and wish.
- tclsh (Tcl Shell) is a Tcl command interpreter
- wish (Windowing Shell) adds the graphical applications toolkit to the tcl shell.
- Starts a Tcl interpreter and prompts for a Tcl command. The commands are
entered interactively: % set x 1
- r run the Tcl code in file with the source command:
% source myExample.tcl
- On Unix one can create a standalone script:
#!/usr/local/bin/tclsh puts “Hello, World!”
- On MS Windows you can add Tcl/Tk programs to Start menu using the com-
mand like: “c:\Program Files\Tcl80\wish.exe” c:\mine\script.tcl
- Can be embedded in a C/C++ application
Introduction To Tcl/Tk
- Tcl Scripting - Basics
January 23, 2005 Slide 5 of 18
Tcl Scripting
Basics
- Tcl script = sequence of commands
- Commands are separated by newlines or semicolons (;)
- Tcl command = one or more words separated by a white space
- First word is a command name, others are arguments
- Always returns string result
- Examples:
set x 17; set y 67.3 puts $message set myFileHandler [open “passwords.txt”]
- No variable declaration
- Single data type - string
- Different commands assign different meaning to their (string) arguments:
set a 15+10 ; # a is “15+10” set y [expr 15+10] ; # y is “25” string length “a b c d” llength “a b c d”
Introduction To Tcl/Tk
- Tcl Scripting - Variable Substitution
January 23, 2005 Slide 6 of 18
Variable Substitution
- Syntax: $varName
- Variable name = sequence of letters, digits and underscores
- Occurs anywhere in a word:
set x 1 ; # x is 1 set y $x ; # y is 1 set z x ; # z is “x” set a aa$x ; # a is “aa1” set b aa$z ; # b is “aax” set num 35$x.$x ; # num is 351.1
Command Substitution
- Syntax: [script]
- Evaluates script, substitutes result
- Occurs anywhere within a word:
set one 1 set ten [expr 9+$one] set msg “ten equals [expr (21 - $one)/2]”
Introduction To Tcl/Tk
- Tcl Scripting - Controlling Word Structure
January 23, 2005 Slide 7 of 18
Controlling Word Structure
- Double-quotes prevent word breaks:
set x 1 set a “x = $x” ; # a is “x = 1”
- Curly braces prevent word breaks and variable/commands substitutions:
set a {x = $x} ; # a is “x = $x”
- Backslashes quote special characters:
set x Hello\ World\ ! ; # x is “Hello World!” set y [string length \ $myString] ; # here \ quotes the newline
Comment
- # is a comment sign
- Must be at the beginning of a command:
# This is a comment set x 1 # Wrong! not at the beginning of a command set x 1 ; # Right
Introduction To Tcl/Tk
- Tcl Scripting - Command Line Arguments
January 23, 2005 Slide 8 of 18
Command Line Arguments
- Predefined global variables argv and argc handle Tcl script command line
arguments
- argv is a list of all the command line arguments excluding the name of the
script itself
- argc is a number of the command line arguments
- argv0 stores the name of the script
puts "The program name is $argv0" puts "Number of arguments: $argc” set i 0 foreach arg $argv { puts "Arg # $i: $arg" incr i }
Introduction To Tcl/Tk
- Tcl Scripting - Math Expressions
January 23, 2005 Slide 9 of 18
Math Expressions
- expr command evaluates math expressions
- Similar to C math syntax
- Supports boolean, integer and floating-point values
- Logical operations return either 1 (true) or 0 (false)
- Octal values are indicated by a leading zero: 033 is 27 decimal
- Hexadecimal values are indicated by 0x: 0xFF
- Supports scientific notation: 3.4e+10
- Has a number of built-in math functions - sin, cos, abs, pow, etc.
- Examples:
expr 64.2 / 2 ; 32.1 set allocLen [expr [string length $foo] + 5] set pi [expr 2*asin(1.0)] ; 3.1415926535897931 set epsylon [expr .5*1e-10]
- Predefined variable tcl_precision sets the floating-point numbers precision:
expr 1 / 3.0 ; # 0.333333 - default 6 digits set tcl_precision 17 expr 1 / 3.0 ; # 0.33333333333333331
Introduction To Tcl/Tk
- Tcl Scripting - Control Structures
January 23, 2005 Slide 10 of 18
Control Structures
- Just commands that take Tcl scripts as arguments
- C-like appearance
- Control structures commands
if for while foreach switch break continue eval
- Example - list reversal:
set reversedList {} set i [expr [llength $myList] - 1] while {$i >= 0} { lappend reversedList [lindex $myList $i] incr i -1 }
- Example - factorial calculation:
set product 1 for {set i 1} {$i <= $x} {incr i} { set product [expr $product * $i] }
Introduction To Tcl/Tk
- Tcl Scripting - Procedures
January 23, 2005 Slide 11 of 18
Procedures
- proc command defines a procedure:
proc <procName> <arg> <body>
- Example:
proc Diag {a b} { set c [expr sqrt($a * $a + $b * $b)] return $c }
- Procedures behave just like built-in commands:
puts "Diag(3, 4) = [Diag 3 4]"
- Always return string result
- Return the value of the last procedure statement or use return command
- Arguments can have default values:
proc decr {x {decrementor 1}} { expr $x - $decrementor } set y 13 decr y ; # 12 decr y 7 ; # 6
Introduction To Tcl/Tk
- Tcl Scripting - Procedures
January 23, 2005 Slide 12 of 18
Procedures
- Variable-length argument lists:
proc Sum args { set sum 0 foreach arg $args { incr sum $arg } return $sum } Sum 1 2 3 4 5 ; # 15 Sum 1.25 1.25 2.5 ; # 5
- Scoping: by default, all internal procedure variables are local.
- global command declares a variable as a global:
proc CircleLen { radius } { global pi expr 2*$pi*$radius }
- Local variables shade globals
- upvar and uplevel commands define the scope from the calling stack
(dynamic scoping).
Introduction To Tcl/Tk
- Tcl Scripting - Strings
January 23, 2005 Slide 13 of 18
Strings
- Basic (only) data type in Tcl
- string command implements a collection of string operations:
string length <str> string compare <str1> <str2> string index <str> <index> string tolower <str> string toupper <str> string match <pattern> <str> etc.
- append command concatenates strings onto the given variable:
append foo a b c ; # foo = “abc” set abc 7 append foo “ = “ $abc ; # foo = “abc = 7”
- format command formats a string according to a format specification
- scan command parses a string according to a format and assigns results to
variables
- string match does glob-style pattern matching:
string match a* alpha ; # 1 string match {[a-zA-Z0-9_]} $var
Introduction To Tcl/Tk
- Tcl Scripting - Lists
January 23, 2005 Slide 14 of 18
Lists
- Zero or more elements separated by white space
set list1 [list a b c 17 $var] set list2 “a b c 17 $var”
- Braces and backslashes for grouping:
set myList {a b c {d e f}}
- Lots of list manipulation commands:
list lindex lappend llength lsort lsearch lreplace lrange linsert concat foreach
- Examples:
set new [list] lappend new 1 2 ; # 1 2 lappend new “4 5” ; # 1 2 {4 5} concat $new {6 7} a ; # 1 2 {4 5} 6 7 a llength $new ; # 6 lindex $new 2 ; # {4 5} lsearch $new 2 ; # 1 lsort -ascii {peach banana apple} ; # {apple banana peach}
Introduction To Tcl/Tk
- Tcl Scripting - Arrays
January 23, 2005 Slide 15 of 18
Arrays
- An array is a variable with a string valued index:
set arr(index) 7 set x $arr(index) ; # x = 7 set arr($x,$y) $elem ; double indices set arr(3, 7) ; ERROR! set arr(3,\ 7) ; OK
- array names returns the list of the indices
- array size returns the number of indices
- array get returns a list of keys and values
- array set initializes an array from the given list
- Examples:
set fruits(apple) red set fruits(banana) yellow array names fruits ; # apple banana array get fruits ; # apple red banana yellow foreach key [array names fruits] { puts “fruits($key) = $fruits($key)” }
Introduction To Tcl/Tk
- Tcl Scripting - Error Handling
January 23, 2005 Slide 16 of 18
Error Handling
- Errors abort execution
- Global variable errorInfo provides stack trace
- catch command intercepts errors:
catch {expr 2*$a} errorMessage set errorMessage ; # “can’t read "a": no such variable
- error command generates errors:
error “404: Unknown host”
Introduction To Tcl/Tk
- Tcl Scripting - Files and Programs
January 23, 2005 Slide 17 of 18
Files and Programs
- exec command runs programs from Tcl script:
exec ls -alF catch {exec sort -u myFile.tst} errMsg
- File I/O commands:
- pen
gets puts read tell seek eof flush close
- file commands provides files manipulation commands - in a system indepen-
dent way: file copy/delete/rename file exists file isfile/isdirectory file atime/attributes/dirname/extension/mtime file readable/writable file type/pathtype file size file join file owned
- exit terminates the current script
Introduction To Tcl/Tk
- Tcl Scripting - Advanced Tcl Commands
January 23, 2005 Slide 18 of 18
Advanced Tcl Commands
- unset command deletes a variable:
unset x puts $x ; # error! x doesn’t exist
- info exists command checks if a variable exists:
if {[info exists foo]} { puts “foo = $foo” }
- trace command monitors variable accesses:
trace variable myVar w {puts “myVar is changed!”} trace variable foo r {puts “Somebody reads foo”}
- eval evaluates a Tcl script:
set cmd {puts stdout “Hello, World!”} eval $cmd
- Opening a process pipeline:
set input [open “|sort /etc/passwd” r] gets $input line
- Regular expressions handling: regexp and regsub commands
regsub -all {/} $unixPath {\\} dosPath regexp {([^:]*):} $env(DISPLAY) match host