Tcl - Procedimentos

Os procedimentos nada mais são do que blocos de código com uma série de comandos que fornecem uma funcionalidade reutilizável específica. É usado para evitar que o mesmo código seja repetido em vários locais. Os procedimentos são equivalentes às funções usadas em muitas linguagens de programação e são disponibilizados em Tcl com a ajuda deproc comando.

A sintaxe de criação de um procedimento simples é mostrada abaixo -

proc procedureName {arguments} {
   body
}

Um exemplo simples de procedimento é fornecido abaixo -

#!/usr/bin/tclsh

proc helloWorld {} {
   puts "Hello, World!"
}
helloWorld

Quando o código acima é executado, ele produz o seguinte resultado -

Hello, World!

Procedimentos com vários argumentos

Um exemplo de procedimento com argumentos é mostrado abaixo -

#!/usr/bin/tclsh

proc add {a b} {
   return [expr $a+$b]
}
puts [add 10 30]

When the above code is executed, it produces the following result −

40

Procedures with Variable Arguments

An example for procedure with arguments is shown below −

#!/usr/bin/tclsh

proc avg {numbers} {
   set sum 0
   foreach number $numbers {
      set sum  [expr $sum + $number]
   }
   set average [expr $sum/[llength $numbers]]
   return $average
}
puts [avg {70 80 50 60}]
puts [avg {70 80 50 }]

When the above code is executed, it produces the following result −

65
66

Procedures with Default Arguments

Default arguments are used to provide default values that can be used if no value is provided. An example for procedure with default arguments, which is sometimes referred as implicit arguments is shown below −

#!/usr/bin/tclsh

proc add {a {b 100} } {
   return [expr $a+$b]
}
puts [add 10 30]
puts [add 10]

When the above code is executed, it produces the following result −

40
110

Recursive Procedures

An example for recursive procedures is shown below −

#!/usr/bin/tclsh

proc factorial {number} {
   if {$number <= 1} {
      return 1
   } 
   return [expr $number * [factorial [expr $number - 1]]]

}
puts [factorial 3]
puts [factorial 5]

When the above code is executed, it produces the following result −

6
120