Introduction To Tcl/Tk Introduction To Tcl/Tk - Contents - - - PowerPoint PPT Presentation

introduction to tcl tk
SMART_READER_LITE
LIVE PREVIEW

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


slide-1
SLIDE 1

Introduction To Tcl/Tk

slide-2
SLIDE 2

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

slide-3
SLIDE 3

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/).
slide-4
SLIDE 4

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
slide-5
SLIDE 5

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”

slide-6
SLIDE 6

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]”

slide-7
SLIDE 7

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

slide-8
SLIDE 8

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 }

slide-9
SLIDE 9

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

slide-10
SLIDE 10

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] }

slide-11
SLIDE 11

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

slide-12
SLIDE 12

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).

slide-13
SLIDE 13

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

slide-14
SLIDE 14

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}

slide-15
SLIDE 15

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)” }

slide-16
SLIDE 16

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”

slide-17
SLIDE 17

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
slide-18
SLIDE 18

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