
En la introducción ya se explicó como crear variables en tcl, aquí nada mas se recordará de forma general:
Si se desea ver lo que contiene se teclea:
-ascii (Orden alfabético)
Regresa una lista nueva. Ejemplo:
El índice en el arreglo se delimita por medio de paréntesis. Los índices pueden contener cualquier valor y pueden ser producto de una sustitución de comandos. El contenido de cada elemento de un arreglo se define con el comando set, por ejemplo:
Para obtener el valor almacenado en el arreglo se utiliza la sustitución con el símbolo $.
Creación de una variable
Para crear una variable se utiliza el comando: set var cont
Donde var es el nombre de la variable que se creará y cont es el valor que será asignado a dicha variable. set var
Esto funciona unicamente cuando se trabaja directamente en el prompt del tclsh. Para ver su contenido en pantalla durante la ejecución de un archivo de comandos de tcl se puede utilizar el comando: puts stdout $var
Eliminación de una variable
Para eliminar la variable se utiliza el comando: unset var
La confirmación de la existencia de una variable se realiza mediante el comando info, de la siguiente forma: info exist var
En caso de existir la variable este comando devolverá el valor 1, en caso contrario devolverá 0. Asignación de un valor desde teclado a una variable
Es posible asignar un valor a una variable desde el teclado, para eso se utiliza el mismo comando set, pero de la siguiente forma: set variable [gets stdin]
Lo que hace el comando gets es obtener información desde algún dispositivo, en este caso desde la entrada estandar que es el teclado (stdin). Cuando se llegue a esta linea la ejecución del programa se detendrá hasta que el usuario teclee un retorno de carro o "ENTER" Listas:
Las listas en Tcl son estructuras de datos formadas por cadenas separadas cada una de ellas por espacios sencillos, se permite el uso de las llaves para utilizar un grupo de palabras con espacios intermedios como un solo elemento de una lista. Creación de una lista
Para crear una lista se hace de la siguiente forma: list par1 par2 par3 ...
Es posible asociarla a alguna variable: set varl [list par1 par2 par3]
Los comandos siguientes son especificamente para trabajar con listas: lindex $varl n
Regresa el elemento n de la lista almacenada en la variable varl. Ejemplo:
#!/usr/local/bin/tclsh7.4
set lista1 [list rojo amarillo verde azul]
puts stdout "Elemento numero 3 de la lista"
puts stdout [lindex $lista1 2]
llength $varl
Regresa el número de elementos que contenga la lista almacenada en la variable varl. Ejemplo:
#!/usr/local/bin/tclsh7.4
set lista1 [list rojo amarillo verde azul]
puts stdout "Numero de elementos en la lista"
puts stdout [llength $lista1]
lrange $varl n m
Regresa los elementos de la lista contenida en varl, desde el elemento n hasta el m. Ejemplo:
#!/usr/local/bin/tclsh7.4
set lista1 [list rojo amarillo verde azul blanco rosa]
puts stdout "\n * Elementos entre las posiciones 3 y 5"
puts stdout [lrange $lista1 2 4]
lappend varl par1 par2 par3 ...
Agrega los elementos par1, par2, par3, etc. al final de la lista almacenada en varl. Ejemplo:
#!/usr/local/bin/tclsh7.4
set lista1 [list rojo amarillo verde azul blanco rosa]
puts stdout "\n * Agregando los elementos morado y magenta"
lappend lista1 morado magenta
puts stdout $lista1
linsert $varl n par1 par2 ...
Inserta los elementos par1, par2, etc. en la lista almacenada en varl, en la posición anterior al elemento n de la misma. Regresa una lista nueva. Ejemplo:
#!/usr/local/bin/tclsh7.4
set lista1 [list rojo amarillo verde azul blanco rosa]
puts stdout "\n * Insertando el elemento cafe en la posicion 2:"
set lista1 [linsert $lista1 2 cafe]
puts stdout $lista1
lreplace varl n m par1 par2 par3 ...
Reemplaza los elementos de la lista contenida en varl comprendidos entre el elemento número n y el m por los elementos dados como parámetros: par1, par2, par3, etc. Regresa una lista nueva. Ejemplo:
#!/usr/local/bin/tclsh7.4
set lista1 [list rojo amarillo verde azul blanco rosa]
puts stdout "\n * Remplazar los elementos verde y azul por adios"
puts stdout [lreplace $lista1 3 4 adios]
lsearch varl expr
Busca un elemento igual a expr dentro de la lista contenida en varl, regresa el número del elemento, en caso de no encontrarlo regresa -1. Ejemplo:
#!/usr/local/bin/tclsh7.4
set lista1 [list lunes martes miercoles jueves viernes]
puts stdout "* Posicion del elemento \"jueves\""
puts stdout [lsearch $lista1 jueves]
lsort modo varl
Ordena los elementos de la lista de acuerdo a los modos:
-integer
-real
-increasing
-decreasing
-command
#!/usr/local/bin/tclsh7.4
set lista1 [list lunes martes miercoles jueves viernes]
puts stdout "* Lista con ordenacion ascii"
puts stdout [lsort -ascii $lista1]
puts stdout "* Lista con ordenacion decreciente"
puts stdout [lsort -decreasing $lista1]
concat par1 par2 par3 ...
Une varias listas regresando como resultado una lista nueva. Arreglos
Un arreglo (array) es un conjunto de cadenas ordenadas. El acceso a cada uno de sus elementos se realiza por medio de un índice. set arreglo(1) uno
No es necesario declarar nada para utilizar un arreglo, simplemente se introduce el primer valor y automaticamente quedará creado. set variable $arreglo(1)
Ejemplo:
#!/usr/local/bin/tclsh7.4
puts stdout "Teclea lineas sencillas de texto, para terminar \
teclea fin y enter"
set i 1
set arreglo(0) ""
while {$arreglo([expr $i-1]) != "fin"} {
set arreglo($i) [gets stdin]
incr i
}
for {set x 1} {$x < $i} {incr x 1} {
puts stdout $arreglo($x)
}