Lenguaje de programación TCL

Anuncio
Lenguaje de
programación TCL
Pedro J. Muñoz Merino
http://www.it.uc3m.es/pedmume/
Indice
●
Introducción
●
Estructura de un programa de TCL
●
Variables
●
Manipulación de strings
●
Listas y Arrays
●
Aritmética
●
Estructuras de control
●
Entrada/Salida
●
Introducción a la programación Web con el AOLServer
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
2
Estructura de un programa TCL
●
Un conjunto de invocaciones a comandos. Cada línea es
una invocación. Para definir nuevos comandos que
puedan ser invocados se realiza con proc
―
El comando puede retornar algún valor con la palabra reservado
return
―
Si no hay un return, entonces se devuelve lo que retorne el
último comando ejecutado
―
Los parámetros de un comando pueden ser lo que retornan otros
comandos. Este tipo de invocaciones deben ir entre [ ]
proc nombre_comando {param1 param2 … paramn}
{
comandos_de_TCL
return var
}
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
3
Variables
●
Definición de variables y establecimiento de valor
―
●
set nombre_var valor
Recuperación de valores de variables
―
set nombre_var
―
$nombre_var
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
4
Caracteres que se escapan
●
Hay ciertos caracteres que no se interpretan literalmente
dentro de un string, como por ejemplo
―
$ que significa el valor de una variable
―
[ ] que significa la ejecución de un determinado comando
●
Para interpretarlos literalmente hay que poner delante el
carácter \
●
Un string puede ir
―
Sin comillas. En cuanto hay un espacio en blanco se interpreta
como un parámetro de un comando
―
Con comillas dobles. El espacio en blanco se interpreta tal cual
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
5
Ámbito de las variables
●
Local a un procedimiento. Este es el ámbito por defecto
●
Globales a un Thread. Se declaran con la palabra
reservada global. Y en cada procedimiento que se utilice
hay que poner dicha palabra reservada
●
Globales a todos los Threads. Se declaran con la palabra
reservada ns_share (Esto es algo del servidor
AOLServer)
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
6
Operaciones con Strings (I)
●
Operadores que no empiezan por string
―
append variable_name value1 value2 value3 ... valueN
―
regexp ?switches? expression string ?matchVar? ?subMatchVar
subMatchVar ...?
―
A lo que tenía la variable se le añaden los strings de los valores pasados
Se testea si la expresión hace match con el string pasado y luego se
devuelven diferentes strings según el match realizado
regsub ?switches? expression string substitution_spec
result_variable_name
Se testea si la expresión hace match con el string pasado y en tal caso se
procede a realizar la sustitución oportuna
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
7
Operaciones con Strings (II)
●
Operadores empiezan por string
―
string compare string1 string2
―
string first string1 string2
―
string last string1 string2
―
string match pattern string
―
string range string i j
―
string tolower string
―
string toupper string
―
string trim string ?chars?
―
string trimleft string ?chars?
―
string trimright string ?chars?
―
string wordend string index
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
8
Operaciones con Strings (III)
●
Forma de establecer los diferentes patrones para hacer
matching
―
. Un sólo caracter que puede ser cualquiera
―
* Cero o más caracteres que pueden ser cualquiera
―
+ Uno o más caracteres que pueden ser cualquiera
―
? Igual que *
―
|
―
() Agrupa un subpatrón
―
[] Delimita un conjunto específico de caracteres. Si va el ^
delante entonces es el conjunto inverso
―
^ Patrón sólo al principio
―
$ Patrón sólo al final
Actua como un OR lógico para coger un patrón u otro
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
9
Listas
●
Listas: Contienen un número indefinido de elementos, que pueden
ser números, strings u otras listas.
―
list par1 par2 … parn : Crea una nueva lista
―
lappend nombre_lista par1 par2 ... parn: Añade elementos al final de una lista
―
linsert nombre_lista index par1 par2 ... parn: Añade elementos a una lista
existente justo en la posición antes del índice especificado
―
lreplace nombre_lista n1 n2 par1 par2 ... parn: Reemplaza los elementos de la
lista en las posiciones de n1 a n2 por los parámetros especificados
―
lindex nombre_lista n : Obtiene el elemento n de la lista
―
lrange nombre_lista n1 n2: Obtiene elementos desde n1 a n2
―
llength nombre_lista : Obtiene la longitud de la lista
―
lsearch mode nombre_lista value : Busca un elemento según su valor y modo
―
concat lista1 lista2... Listn : Concatena varias listas
―
join nombre_lista joinString : Produce un string de los elementos de la lista
―
split string splitChars : Produce una lista de un string
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
10
Arrays
●
Arrays: Son tablas hash que asocian diferentes claves
con sus valores
―
Nombre_array(clave)=valor : Para asignar diferentes valores a un
array dependiendo de su clave. Sirve tanto para definir una
nueva clave de array o para sobreescribir su valor
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
11
Aritmética
●
Se evalua con el comando expr
●
expr evalua una expresión aritmética y devuelve su valor
set i 1
i= expr i + 1
Pedro J. Muñoz Merino
“2”
Diseño de Aplicaciones Telemáticas
12
Estructuras de Control
●
if
●
switch
●
while
●
foreach
●
for
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
13
Entrada/Salida
●
TCL tiene un interfaz para manipular ficheros, que
permite:
―
Características del fichero, como extensión, fecha de creación, si
es ejecutable o no, etc.
―
Abrir el fichero
―
Leer del fichero
―
Escribir en el fichero
―
Otras llamadas de manipulación de ficheros, como para
posicionar el puntero por donde se va leyendo o escribiendo
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
14
Introducción a la programación Web
de AOLServer
●
AOLServer dispone de una serie de librerías para la
programación Web
―
Analogía con servlets y JSPs en J2EE, sería aquí ficheros TCL y
ADP
●
Suelen empezar por ns_ aquellas utilidades de
AOLServer relacionadas con la programación Web
basada en TCL
●
Las utilidades y su descripción se encuentran en:
―
http://aolserver.com/docs/
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
15
Introducción a la programación Web
de AOLServer
●
Algunos comandos útiles iniciales
―
Recibir información de peticiones: ns_conn
―
Escribir datos en la respuesta: ns_write
―
Devolver petición: ns_return, ns_returnredirect
―
Bases de datos: ns_db
―
Realización de petición HTTP: ns_httpget
―
Envío de email: ns_sendmail
―
Variable global compartida en múltiples hilos: ns_share
―
Arrays: ns_set
―
Lista de los links <A> : ns_hrefs
―
Logs: ns_log
―
Información sobre el servidor: ns_server
―
Devuelve el tiempo del servidor: ns_time
―
Codificación de caracteres: ns_urlencode
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
16
Trabajo propio del alumno asociado a
la sesión
●
TCL for Web nerds, http://philip.greenspun.com/tcl/
Pedro J. Muñoz Merino
Diseño de Aplicaciones Telemáticas
17
Descargar