Comandos Tcl
La sintaxis básica para un comando de tcl es :
comando arg1 arg2 arg3 ...
Cualquier manual de programación que se precie debe iniciarse con el típico ejemplo de "Hola Mundo!!". Esto es en Tcl...
En este ejemplo simplemente se ha escrito la cadena "Hola Mundo!!!". Tcl/Tk proporciona dos intérpretes de comando: para Tcl, tclsh80; y para Tk, wish80. Cualquiera de estos dos puede ser utilizado para ejecutar los ejemplos de la primera parte de este trabajo, pero siempre resultará más cómodo utilizar wish80 que tclsh80, ya que el primero crea la ventana que se puede ver sobre estas líneas, mientras que el segundo lo correrá en una ventana de DOS. Para llamar al intérprete wish80 bastará con ejecutar wish80.exe; mientras que para el segundo se jecutará tclsh80.exe. En el caso de ejecutar el primero, además de la ventana que aquí se puede ver, denominada consola, aparecerá otra más, de color gris, y que de momento no va a tener mayor importancia.
Esta primera parte del manual se dedicará al lenguaje Tcl propiamente dicho, mientras que la segunda parte estará dedicada a Tk. Será entonces cunado la ventana gris antes mencionada tendrá importancia, ya que en realidad representa la ventana principal de una aplicación.
Variables
El comando set es usado para asignar un valor a una variable. Toma dos argumentos, el primero es el nombre de la variable y el segundo el valor que debe tomar esa variable. No es necesario declarar en Tcl las variables que se van a usar. El intérprete crea la variable cuando esta se utiliza por primera vez. El valor de la variable puede obtenerse mediante el signo del dolar.
En este ejemplo puede verse cómo inicialmente se asigna el valor 12 a la variable a; posteriormente se asigna el valor contenido en a a la variable b, que lógicamente toma el valor 12.
Para eliminar una variable se utiliza el comando unset. Por ejemplo:
Esto elimina la variable var1.
Para comprobar si existe una variable, se utiliza el comando info, del que se hablará más adelante. El comando info tiene más utilidades que esta, dependiendo del modificador que lo acompañe, pero aquí se adelanta su utilización típica.
Devolverá 1 si existe la variable var1, 0 en caso contrario.
Se ha asignado a la variable var1, el valor 3.14; se ha interrogado si existe, responde afirmativamente con un 1; a continuación se borra la variable y se vuelve a preguntar por su existencia, lógicamente responde con un 0.
Comentarios
Cuando una línea del programa comience por el símbolo "#", el intérprete entenderá esa línea como un comentario.
Comillas y llaves
El uso de comillas y llaves es muy similar, ambas se utilizan para agrupar en una sola cadena de texto varios caracteres o varias palabras. La única diferencia es que el uso de comillas permite sustituciones de variables dentro de la cadena. Por ejemplo:
Evaluación de comandos
El intérprete de Tcl evalúa una expresión , ya sea matemática o no, que se encuentre encerrada entre corchetes:
En este ejemplo puede verse cómo el intérprete ejecuta la instrucción entre corchetes, calcula la longitud de la cadena de caracteres "avion", y se lo asigna a la variable longitud.
Sería equivalente a esto otro:
Expresiones matemáticas
En Tcl todas las variables son del tipo cadena de caracteres, también llamadas strings. Por ello, a la hora de hacer operaciones matemáticas, debe indicarse al intérprete que las considere como números, no como caracteres, con este fin se utiliza el comando expr. Este comando permite evaluar expresiones matemáticas.
Como puede verse, si se desea obtener un resultado en coma flotante, bastará con colocar uno de los datos en coma flotante.
Si lo que se desea es asignar el valor resultante de la operación matemática a una variable, deberá encerrase la expresión matemática entre corchetes, tal como se vió en el apartado enterior.
Hasta ahora vemos como el número de decimales es siempre 5, esto puede ser cambiado colocando en la variable tcl_precision el valor deseado:
|
- ~ ! |
Menos, NOT a nivel de bits, NOT lógico. |
|
* / % |
Multiplicación, división, resto. |
|
+ - |
Adición, sustracción. |
|
<< >> |
Desplazamiento a la izquierda y a la derecha. |
|
< > <= >= |
Comparación: menor, mayor, menor o igual, mayor o igual. |
|
== != |
Igual, no igual. |
|
& |
AND a nivel de bits. |
|
Ù |
NOT a nivel de bits. |
|
| |
OR a nivel de bits. |
|
&& |
AND lógico. |
|
| | |
OR lógico. |
|
x?y:z |
Si x entonces y, sino z. |
|
acos ( x ) |
ArcoCoseno de x. |
|
asn ( x ) |
ArcSeno de x. |
|
atan ( x ) |
Arcotangente de x. |
|
atan2 ( y,x ) |
De rectangulares ( x,y ) a polares (r, th ). atan2 devuelve th. |
|
ceil ( x ) |
Primer valor entero mayor o igual que x. |
|
cos ( x ) |
Coseno de x. |
|
cosh ( x ) |
Coseno hiperbólico de x. |
|
exp ( x ) |
Exponencial de x. |
|
floor ( x ) |
Primer valor entero menor o igual que x. |
|
fmod ( x, y ) |
valor en coma flotante resto de x/y. |
|
hypot ( x, y ) |
Devuelve sqrt(x*x + y*y). |
|
log ( x ) |
Logaritmo natural de x. |
|
log10 ( x ) |
Logaritmo en base 10 de x. |
|
pow ( x,y ) |
x elevado a y. |
|
sin ( x ) |
Seno de x. |
|
sinh ( x ) |
Seno hiperbólico de x. |
|
sqrt ( x ) |
raíz cuadrada de x. |
|
tan ( x ) |
Tangente de x. |
|
tanh ( x ) |
Tangente hiperbólica de x. |
|
abs ( x ) |
valor absoluto de x. |
|
double ( x ) |
Convierte a x en un valor en coma flotante. |
|
int ( x ) |
trunca x a un entero. |
|
rand () |
Genera un número aletario entre 0 y 1. la semilla puede venir del reloj o inicializarse mediante srand. |
|
round ( x ) |
Redondea x a un entero. |
|
srand (arg) |
Donde arg debe de ser un entero. Inicializa la semilla para la generación de números aleatorios. |