TCL-TK, una nueva generación de interfaces visuales para usuario

José Luis Alvarez Pérez

Raquel Cores Cobas

José Luis Rivas López

Javier Rodeiro Iglesias

Facultad de Ciencias del Mar

Universidad de Vigo

 

1. CARACTERÍSTICAS BÁSICAS DEL TCL-TK

 

1.1. Modularidad. Implementada en la mayoría de los lenguajes actuales y especialmente útil en proyectos grandes, favorece el desarrollo del código, dando lugar a partes totalmente independientes entre sí.

 

1.2. Portabilidad. Al ser un lenguaje de alto nivel, se puede separar totalmente de la arquitectura del equipo, obteniéndose una de las mayores ventajas programando bajo TCL-TK, la portabilidad. El hecho de que el código generado sea independiente de la arquitectura de la máquina sobre el cual se está ejecutando el mismo, posibilita que un mismo código fuente pueda ser ejecutado en diferentes arquitecturas y entornos sin ser alterado gracias a la posesión de un intérprete para casi todo ellos.

 

1.3. Multiplataforma. La característica anterior nos lleva a que las aplicaciones desarrolladas en TCL-TK sean multiplataforma, con toda la importancia que esto tiene hoy en día; si una empresa tiene el software desarrollado en TCL-TK, al cambiar de entorno, arquitectura o S.O. no tendrá que volver a desarrollar sus aplicaciones, pues debido a la portabilidad y multiplataforma de TCL-TK, sus aplicaciones seguirán ejecutándose sin ningún problema, con el consecuente beneficio para la empresa en cuestión.

 

1.4. Integración. Otro aspecto reseñable en TCL-TK es su integración con otros lenguajes, aspecto fácilmente implementable al estar el interprete de TCL-TK diseñado en C. Con esto se consigue introducir procedimientos o programas externos desarrollados en C en el propio interprete de comandos de TCL-TK, confiriendo de esta forma toda la potencia de C, útil sobre todo para procesos de cálculo científico, y por supuesto hacerlo compatible con su propio código, sin que haya ninguna discrepancia. Pero la integración de TCL-TK y C llega más lejos, también se puede insertar código de TCL-TK en un programa fuente de C, aunque no de forma directa, es decir, el método a seguir es incluir las librerías.h, en donde se encuentran las funciones de TCL-TK implementadas en C, dentro del propio programa en C y realizar llamadas a esas librerías; todo ello bajo el propio compilador de C, promoviendo de esta forma la potencia de C y la portabilidad y sencillez de implementar aplicaciones bajo TCL-TK.

 

2. APLICABILIDAD

 

Los dos grandes campos de aplicación de TCL-TK son:

 

Para poder visualizarlo con un browser de internet como puede ser Netscape o IExplorer, no habría más que instalar el módulo de plugin´s para TCL-TK en dicho browser y para insertar la aplicación en el servidor World Wide Web deberíamos colocar en unas de las páginas HTML una sentencia como:

<embed src="aplicación.tcl" width=100 height=100>

 

3. COMPONENTES DE TCL-TK

 

TCL-TK posee ciertas características que le hace diferente en comparación con otros lenguajes. TCL-TK utiliza principalmente comandos y argumentos, y todas las variables que usa en este entorno son de tipo texto y combinar los comandos con sus argumentos correspondientes.

TCL-TK se compone de tres partes:

1. TK: Librerías del TCL para entornos gráficos, que son llamados por los programas WISH y SPECTCL.

2. Programación gráfica con SPECTCL ó VISUALTCL. Desarrollo gráfico para la programación de TCL-TK.

3. WISH: Esta aplicación permite la ejecución y la integración del TCL en las funciones del TK.

 

Los comandos del TCL nos permite utilizar programas que podemos ejecutar bajo el intérprete del TCL, WWW servidor de plugin´s, también combinados entre ellos con las funciones gráficas del TK, u otros lenguajes como el C.

Algunos de los comandos básicos son:

1.- Definición de variables. Se definen como set nombre_variable valor.

2.- Comandos para expresiones matemáticas. Las principales operaciones matemáticas están implementadas con el comando expr operacion_a_realizar.

3.- Control estándar de salida. El principal comando que implementa esta función es poner una cadena, que puede ser desde una matriz de caracteres hasta una variable.

4.- Comandos de control de flujo, por ejemplo:

- for {comienzo} {test} {siguiente} {cuerpo}.- while {expresión} {cuerpo}.- if {expresión} then {cuerpo}.

 

Cuando generas código TCL para ser ejecutado en un servidor WWW podemos tener algunas dificultades con la implementación de ciertos comandos en los plugin´s, como la inserción de menús o manipulación de ficheros.

 

WISH trae una herramienta con la que podemos ejecutar programas bajo TCL, con la cual podemos verificar el correcto funcionamiento del programa, llevando a cabo su test y aseguramos después el óptimo funcionamiento de los plugin´s.

 

Podemos insertar el interfaz gráfico de usuario que deseamos, inserción de botones de control, menús, etiquetas, checkbuttons, frames, textos, y otras opciones gráficas para interactuar con el usuario de una manera simple y sencilla, sin necesidad de muchos conocimientos acerca el entorno dado o las funciones del sistema operativo gráfico dado.

 

4. DESARROLLO

Hemos desarrollado una aplicación en TCL-TK para mostrar la capacidad y potencia de estos lenguajes en un servidor WWW. Este desarrollo permite la realización de exámenes tipo test/encuestas. Por un lado recoge desde un fichero un determinado número de preguntas aleatoriamente, una vez construido el examen muestra un mensaje en el cual informa al alumno de las condiciones de dicho examen, la valoración por pregunta válida/incorrecta y valida la identificación y la no existencia de calificación de dicho alumno antes de comenzar el examen. Una vez validados los datos del alumno se muestran las preguntas. Tras confirmar la finalización del examen se realiza la corrección de éste y se le muestra la nota por pantalla mandando el examen a impresión y a fichero.

 

4.1. Método

Antes de empezar a explicar el método a seguir debemos tener dos cosas perfectamente claras:

 

Primero, TCL-TK es un lenguaje procedural y como tal tiene que estructurar el "problema" (programa) a desarrollar en módulos más pequeños (aproximación Top-Down).

Segundo, para programar en cualquier tipo de paradigma de programación tienes que tener claro los recursos de que dispones, nos referimos en concreto al algoritmo, como método para resolver un problema concreto o cualquier problema de un cierto tipo dado teniendo en cuenta que debe ser: preciso (debe indicar el orden en cada momento), definido (no importa las veces que lo ejecute que siempre va a dar el mismo resultado) y finito (tiene que acabar en algún momento). Es decir, usando los mejores algoritmos que puedas encontrar, tú decides los procedimientos que quieres.

Por ejemplo, en el código relativo a ENCUESTAS DE PROFESORADO realizadas a través de un browser conectado a un servidor WWW. Dicha encuesta consta de un número variable de preguntas con cuatro respuestas (valoraciones) que son excluyentes.

El planteamiento nos obliga a presentar las preguntas y sus posibles respuestas. El procedimiento finalizará a petición del usuario, momento en el cual se grabarán los resultados en un fichero. La solución revisada nos llevó a:

proc pregunta{identificacion pregunta respuesta1 repuesta2 respuesta3 repuesta4} {

código que sacara por pantalla la pregunta con sus cuatro respuestas y devuelve una variable con su identificación para saber cual ha sido pulsada}

proc grabar_en_fichero {} {

abrirá un fichero donde le ponemos una cabecera con los datos del creador (encuestado) aparte meter los resultados de la encuesta. Por ejemplo: Respuesta_1 = a.}

 

Una vez establecido el código se realiza la prueba del programa. Aquí, nos podemos a encontrar con cierto tipos de errores que los clasificaremos en:

 

  1. De especificación.- Definición errónea o insuficiente del problema a resolver. La solución sería cambiar el planteamiento.
  2. De diseño.- El algoritmo elegido no es una solución correcta al problema. Tenemos dos soluciones: cambiar completamente el algoritmo o hacer los cambios suficientes en el algoritmo para que funcione.
  3. De codificación.- En este error nos encontramos tres tipos:
    1. Sintácticos.- Son posiblemente los más fáciles que nos vamos a encontrar debido a que violan las reglas gramaticales del lenguaje utilizado y normalmente el propio compilador te los muestra.
    2. Operación.- Hay dos tipos:
    1. Ejecución.- En este tipo de error incluimos las paradas anormales del programa. Puede ser uno de los más difíciles de encontrar, para lo que tendremos que utilizar métodos de depuración.
    2. Resultados.- Producen resultados que no estaban previstos. Por ejemplo: un programa que sume dos más dos y saque un resultado de tres.
    1. Lógicos.- Todos los demás.

 

En cuanto a los métodos de depuración en fase de ejecución, resaltar que podemos seguirlos utilizando mensajes puntuales que nos permitan seguir la ejecución y detectar el tipo de fallo que se está produciendo. Esta es una técnica comúnmente utilizada por los programadores para hallar errores de operación, ya que posiblemente sean de los más difíciles de encontrar.

 

Después de cada corrección habría repetir nuevamente el proceso desde el principio.

 

5. CONCLUSIONES

 

Este trabajo da lugar a una potente y rápida herramienta tanto de evaluación como de aprendizaje, basada en un entorno multimedia, implementado en un servidor Web. La minimización del tiempo empleado en la corrección al hacerse ésta automática es notable y muy cómoda al poder generar los resultados obtenidos en un fichero con máxima seguridad. Desde el punto de vista del aprendizaje, la posibilidad que incorpora el hecho de estar sobre un soporte Web, permite que un usuario se conecte desde cualquier punto, le da una comodidad y facilidad hasta ahora inimaginable.

 

REFERNCIAS BIBLIOGRÁFICAS

JOHNSON, E. F. (1996): Graphical Application with Tcl & Tk, M&T Books.

WELCH, B. (1995): Practical programming in Tcl and Tk. Pretince Hall.

OUSTERHOUT, J. (1994): Tcl and the Tk Toolkit, Addison-Wesley.

PÁGINAS WEB

[1] http://www.sco.com/Technolgy/tcl/Tcl.html

[2] http://www.xco.uk/of-interest/tcl/Tcl.html

[3] http://www.mispress.com/

[4] http://www.smli.com/research/tcl

[5] http://ourworld.compuserve.com/homepages/efphnson/tcl.html

[6] http://hplyot.obspm.fr/~dlgeturl7.5.tcl

[7] http://www.sunlabs.com/research/tcl/plugin/index.html

[8] http://DIDEGA1.lsi.uvigo.es