Categories: Linux

Introduzione al Linguaggio TCL in Linux

TCL/TK è un ambiente per la realizzazione di interfacce grafiche basato sul linguaggio di scripting TCL. La caratteristica principale di questo ambiente di sviluppo è la semplicità e la velocità di creazione delle interfacce utente in Linux. Tra le altre caratteristiche che contribuiscono alla sempre più grande diffusione di TCL/TK si trovano:

  • la portabilità del prodotto finale su piattaforme come Unix, Windows e Mac
  • la possibilità di incapsulare parti di codice TCL/TK in programmi C/C++
  • la possibilità di inserire interfacce utente in pagine web

Vediamo le caratteristiche del linguaggio di scripting, quindi i cui programmi sono interpretati da una shell di comandi, TCL ( che si pronuncia “ticl” ). Uno degli aspetti più importanti di TCL è la possibilità di essere incapsulato in codice di programmi C/C++ attraverso delle librerie, per ora che siamo agli inizi della spiegazione del linguaggio utilizzeremo solo lo scripting. Per interpretare TCL su Linux ci sono vari modi basati sull’uso di una delle shell:  TCL-Shell ( tclsh ) e Windowing-Shell ( wish )  quest’ultima in grado di eseguire anche comandi TK. Il miglior modo per prendere confidenza con i comandi è quello di aprire una tra le due shell con i comandi tclsh o wish ed eseguire dal prompt un comando TCL ed attenderne l’effetto, per esempio:

tclsh
% set PI 3.14
% puts $PI
% exit

un altro modo è quello di inserire il codice in un file e poi lanciare tclsh file.tcl. La sintassi del TCL è molto ridotta, questo rende semplice l’apprendimento e la creazione di applicazioni anche complesse. Ogni comando segue questa sintassi:

% nome_comando arg1 arg2 arg3 …

Abbiamo già visto che per dichiarare una variabile si utilizza l’istruzione set e per stamparla puts, per richiamare il valore della variabile si deve inserire un $ prima del nome della stessa, come avveniva per la shell di Linux. TCL ha solo variabili di tipo stringa, questo significa che per fare calcoli matematici si dovrà trasformare la stringa in valore numerico. Una variabile può essere inizializzata con un valore numerico, sapendo sempre che a basso livello è sempre una stringa, in questo modo:

  • intero – ad esempio 5
  • ottale – ad esempio 027
  • esadecimale– ad esempio 0xff
  • reale – ad esempio 3.14 o 1.24e1

TCL mette a disposizione due tipi di comandi per la gestione dei numeri: incr ed expr, il primo per aggiungere un valore intero ad una variabile contente un intero, mentre il secondo per effettuare calcoli matematici più complessi.

set k 3
incr k 7
incr k -4
puts $k

In questo semplice esempio si dichiara la variabile k avente valore 3, poi aggiungiamo 7 e togliamo 4. Vediamo qualcosa di più complesso:

set PI 3.14
set raggio 2.76
set area [expr $PI * pow($raggio, 2)]
puts "Il valore del cerchio di raggio $raggio è di $area"

in questo esempio abbiamo dichiarato il raggio ed abbiamo calcolato l’area del cerchio. Le parentesi quadre servono a sostituire l’espressione con il valore prodotto e l’uso di expr per poter utilizzare le funzioni matematiche, in questo caso la potenza di due. Alcune delle funzioni che si possono utilizzare sono:

  • abs(x) – calcola il valore assoluto di un numero
  • sin(x) – calcola il seno di un numero
  • cos(x) – calcola il coseno di un numero
  • sqrt(x) – calcola la radice quadrata di un numero
  • pow(x, y) – calcola la potenza di un numero

per le altre funzioni si veda la documentazione di TCL. Per la manipolazione delle stringhe abbiamo le funzioni append e string: la prima serve per concatenare due stringhe, mentre la seconda consente alcune operazioni, vediamone le opzioni:

  • compare – restituisce -1, 0, 1 in funzione del fatto che string1 sia lessicamente minore, uguale o maggiore di string2
  • first – restituisce l’indice della prima occorrenza di string1 in string2, -1 se tale occorrenza non esiste
  • last – restituisce l’indice dell’ultima occorrenza di string1 in string2, -1 se tale occorrenza non esiste
  • length – restituisce il numero di caratteri di string1
  • tolower – restituisce una stringa con tutti i caratteri di string1 convertiti in minuscolo
  • toupper – restituisce una stringa con tutti i caratteri di string1 convertiti in maiuscolo

Come in ogni altro linguaggio che si rispetti abbiamo anche la gestione delle condizioni ed i cicli che si rifanno al linguaggio C, vediamone un esempio esemplificativo molto semplice:

set s "Ferma! - "
for {set i 1} {$i<=10} {incr i} {
     if {$i == 5} {
         append s "Sono arrivato al valore $i"
     }
}

puts $s

Attenzione a mettere la parentesi graffa all’inizio del corpo del ciclo sulla stessa linea, non come avviene in C che possiamo inserirla dove vogliamo, pena un difficile errore da scovare, durante l’esecuzione del programma. Per informazioni sulla creazione di interfacce utente in linguaggio TCL/TK potete leggere questo articolo.

Share
Giampaolo Rossi

Sviluppatore di software gestionale da oltre 28 anni.

Recent Posts

Un Abbonamento per Tutti i Software

Sono arrivato alla convinzione che un abbonamento per tutti i miei software gestionali sia il…

1 anno ago

Software di Magazzino Gratuito

MerciGest è un software per la gestione del magazzino completamente gratuito. Continua a leggere→

1 anno ago

Mettere il PC in Lock Screen

In ufficio può capitare di doversi allontanare dal proprio posto di lavoro, ecco che allora…

3 anni ago

Fare il reset togliendo la corrente

In questo articolo vedremo quando è più o meno utile togliere la corrente ad un…

3 anni ago

Prossimi Aggiornamenti Software

Dopo la pausa invernale dovuta al lavoro che devo fare per sostentarmi, eccomi di nuovo…

3 anni ago

Come Eliminare i Files in Windows

Vediamo come eliminare i files direttamente da Windows senza utilizzare il cestino. Continua a leggere→

4 anni ago