Tcl - Procedimientos

Los procedimientos no son más que bloques de código con una serie de comandos que proporcionan una funcionalidad reutilizable específica. Se utiliza para evitar que el mismo código se repita en varias ubicaciones. Los procedimientos son equivalentes a las funciones utilizadas en muchos lenguajes de programación y están disponibles en Tcl con la ayuda deproc mando.

La sintaxis para crear un procedimiento simple se muestra a continuación:

proc procedureName {arguments} {
   body
}

A continuación se ofrece un ejemplo sencillo de procedimiento:

#!/usr/bin/tclsh

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

Cuando se ejecuta el código anterior, produce el siguiente resultado:

Hello, World!

Procedimientos con múltiples argumentos

A continuación se muestra un ejemplo de procedimiento con argumentos:

#!/usr/bin/tclsh

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

Cuando se ejecuta el código anterior, produce el siguiente resultado:

40

Procedimientos con argumentos variables

A continuación se muestra un ejemplo de procedimiento con argumentos:

#!/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 }]

Cuando se ejecuta el código anterior, produce el siguiente resultado:

65
66

Procedimientos con argumentos predeterminados

Los argumentos predeterminados se utilizan para proporcionar valores predeterminados que se pueden usar si no se proporciona ningún valor. A continuación se muestra un ejemplo de procedimiento con argumentos predeterminados, que a veces se denomina argumentos implícitos:

#!/usr/bin/tclsh

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

Cuando se ejecuta el código anterior, produce el siguiente resultado:

40
110

Procedimientos recursivos

A continuación se muestra un ejemplo de procedimientos recursivos:

#!/usr/bin/tclsh

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

}
puts [factorial 3]
puts [factorial 5]

Cuando se ejecuta el código anterior, produce el siguiente resultado:

6
120