Tcl - Procedure

Le procedure non sono altro che blocchi di codice con una serie di comandi che forniscono una specifica funzionalità riutilizzabile. Viene utilizzato per evitare che lo stesso codice venga ripetuto in più posizioni. Le procedure sono equivalenti alle funzioni usate in molti linguaggi di programmazione e sono rese disponibili in Tcl con l'aiuto diproc comando.

La sintassi per creare una procedura semplice è mostrata di seguito:

proc procedureName {arguments} {
   body
}

Di seguito viene fornito un semplice esempio di procedura:

#!/usr/bin/tclsh

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

Quando il codice sopra viene eseguito, produce il seguente risultato:

Hello, World!

Procedure con più argomenti

Di seguito è riportato un esempio di procedura con argomenti:

#!/usr/bin/tclsh

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

Quando il codice sopra viene eseguito, produce il seguente risultato:

40

Procedure con argomenti variabili

Di seguito è riportato un esempio di procedura con argomenti:

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

Quando il codice sopra viene eseguito, produce il seguente risultato:

65
66

Procedure con argomenti predefiniti

Gli argomenti predefiniti vengono utilizzati per fornire valori predefiniti che possono essere utilizzati se non viene fornito alcun valore. Di seguito è mostrato un esempio di procedura con argomenti predefiniti, a volte denominata argomenti impliciti:

#!/usr/bin/tclsh

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

Quando il codice sopra viene eseguito, produce il seguente risultato:

40
110

Procedure ricorsive

Di seguito è riportato un esempio di procedure ricorsive:

#!/usr/bin/tclsh

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

}
puts [factorial 3]
puts [factorial 5]

Quando il codice sopra viene eseguito, produce il seguente risultato:

6
120