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