Tcl - Procédures

Les procédures ne sont rien d'autre que des blocs de code avec une série de commandes qui fournissent une fonctionnalité réutilisable spécifique. Il est utilisé pour éviter que le même code ne soit répété à plusieurs endroits. Les procédures sont équivalentes aux fonctions utilisées dans de nombreux langages de programmation et sont rendues disponibles dans Tcl à l'aide deproc commander.

La syntaxe de création d'une procédure simple est indiquée ci-dessous -

proc procedureName {arguments} {
   body
}

Un exemple simple de procédure est donné ci-dessous -

#!/usr/bin/tclsh

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

Lorsque le code ci-dessus est exécuté, il produit le résultat suivant -

Hello, World!

Procédures avec plusieurs arguments

Un exemple de procédure avec des arguments est présenté ci-dessous -

#!/usr/bin/tclsh

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

Lorsque le code ci-dessus est exécuté, il produit le résultat suivant -

40

Procédures avec des arguments variables

Un exemple de procédure avec des arguments est présenté ci-dessous -

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

Lorsque le code ci-dessus est exécuté, il produit le résultat suivant -

65
66

Procédures avec des arguments par défaut

Les arguments par défaut sont utilisés pour fournir des valeurs par défaut qui peuvent être utilisées si aucune valeur n'est fournie. Un exemple de procédure avec des arguments par défaut, parfois appelés arguments implicites, est présenté ci-dessous -

#!/usr/bin/tclsh

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

Lorsque le code ci-dessus est exécuté, il produit le résultat suivant -

40
110

Procédures récursives

Un exemple de procédures récursives est présenté ci-dessous -

#!/usr/bin/tclsh

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

}
puts [factorial 3]
puts [factorial 5]

Lorsque le code ci-dessus est exécuté, il produit le résultat suivant -

6
120