Single Post

Header

Sunday, September 30, 2012

TCL Procedure Programs all types

TCL script examples with sample programs


1.simple tcl procedure program call by value
proc sum {arg1 arg2 } {
set x [expr $arg1+$arg2];
return $x
}
set var [sum 2 3]
set n [expr {$var+10}]
puts “the return value is $var and n is $n”
o/p:
the return value is 5 and n is 15
2.tcl procedure program by passing default arguments
proc sum {arg1 {arg2 20} } {
set x [expr $arg1+$arg2]
return $x
}
set var1 [sum 2 ]
puts $var1
set var2 [sum 2 8]
puts $var2
o/p:
22
10
simple tcl procedure program
proc sm { a b} {
puts $a+$b  }
sm 4 5
o/p:
4+5
simple tcl procedure program by giving one default arguments
proc sm { a {b 34} } {
puts [expr $a+$b]  }
set var [sm 5 ]
o/p:
39
tcl procedure program should not be like below
proc sm { {a 34} b } {
puts [expr $a+$b]  }
set var [sm 5 ]
o/p:
——–
wrong # args: should be “sm ?a? b”
while executing
“sm 5 ”
tcl procedure program,giving all arguments as optional
proc sum { {arg1 10} {arg2 20}  } {
set x [expr $arg1+$arg2]
return $x
}
set var1 [sum 2 ]
puts $var1
set var2 [sum 2 8]
puts $var2
set var3 [sum]
puts $var3
o/p:
22
10
30
tcl procedure program using args should not be like below
proc sum { arg1  args {arg2 20} } {
set x [expr $arg1+$arg2]
return $x
}
set var1 [sum 2 ]
puts $var1
set var2 [sum 2 8]
puts $var2
set var3 [sum 2 56 67 87 243 567 789]
puts $var3
o/p:——–
wrong # args: should be “sum arg1 args ?arg2?”
while executing
“sum 2 ”
tcl procedure program using args keyword
proc sum { arg1  {arg2 20} args} {
set x [expr $arg1+$arg2]
foreach i $args {
puts $i }
return $x
}
set var1 [sum 2 ]
puts $var1
set var2 [sum 2 8]
puts $var2
set var3 [sum 2 34 56 "lmn" abc 'xyz' 789]
puts $var3
o/p:
22
10
56
lmn
abc
‘xyz’
789
36
tcl procedure program upvar -call by reference :
proc callbyref name1 {
puts $name1
upvar $name1 a
set a [expr {$a+5}]
puts $a }
set x 10
callbyref x
puts $x
o/p:
x
15
15
proc sample { } {
global a b
puts “$a  $b”
}
sample
#puts “$a  $b”
——–
can’t read “a”: no such variable
while executing
“puts “$a  $b”"
(procedure “sample” line 3)
invoked from within
“sample”
tcl procedure program using uplevel
proc sample {varname first last body} {
upvar $varname v
for {set v $first} {$v<=$last} {incr v} {
uplevel $body  }
}
set v { }
sample i 1 5 {
lappend v [expr $i*$i]
}
puts $v
o/p:
1 4 9 16 25

No comments:

Post a Comment