DATOS DE CONSULTA.

DATOS DEL RATÓN
DATOS DE TECLAS
DATOS CONSTANTES
DATOS VARIABLES
DATOS DE COMPONENTES
DATOS DE SECUENCIAS

La lista de datos para consulta contiene 6 opciones. Al pulsar una cualquiera aparecerán los datos seleccionables para insertar en la zona inferior izquierda. Para retroceder al nivel anterior encontrará en primer lugar la opción "Atrás...". Los tipos de datos que podemos encontrar se indican entre paréntesis y su significado ya se ha explicado en el tema "Revisión del programa", en el apartado sobre programación. Las opciones que aparecen en mayúsculas abren nuevas opciones y las que aparecen en minúsculas se podrán insertar directamente en el programa, para lo cual se pulsará la opción para seleccionarla y a continuación se pulsará de nuevo en el lugar que se quiera fijar (siempre en la zona izquierda por ser la destinada para consultas de información). Es dificil pensar en una aplicación y no necesitar datos de consulta, casi siempre se tomarán decisiones que parten de la pulsación de una tecla o del ratón o nos serviremos de informaciones constantes o variables. Por ejemplo, en el tema anterior sobre Programación en Grafcet la variable 0 representaba un ángulo variable que intervenía en el cálculo de las coordenadas de los puntos de una función. Otros datos de consulta son propios únicamente de AutoJava, puesto que los componentes y sus elementos tienen almacenada información que encontraremos en la opción "Datos de componentes". Cada vez que creamos un nuevo componente se añade a esta opción toda la información que contenga. Las secuencias también contienen alguna información de utilidad como por ejemplo si una etapa se encuentra activa.

Los datos variables, los de componentes y secuencias se complementan con sus correspondientes opciones de control. Puede ser de utilidad tener presentes ambas opciones, por lo que añade el siguiente enlace con el tema 7: Control de contenidos.

DATOS DE CONSULTA DEL RATÓN

ATRAS...
(bool) Estado del botón derecho
(número) Coordenada Y del ratón
(bool) Estado del botón izquierdo
(número) Coordenada X del ratón
(punto) Posición del ratón

Es posible consultar si se pulsa el botón izquierdo y el derecho, así como las coordenadas en las que se encuentre el cursor, bien de forma individual o como un punto.

DATOS DE CONSULTA DE TECLAS

ATRAS...
(bool) Pulsada cualquier tecla
(bool) Tecla Ctrl
(bool) Tecla Mayúsculas
(bool) Tecla Alt
(bool) Tecla AltGr
(bool) Tecla indicada por su letra
(bool) Tecla indicada por su código
(texto) Letra de tecla pulsada
(número) Código de tecla pulsada

La primera opción bool será verdadera cuando esté pulsada cualquier tecla y falso en caso contrario. El resto de las opciones bool darán verdadero cuando esté pulsada una tecla concreta. Especificando la tecla por la letra que la define, aparecerá un cuadro para escribir la letra y al aceptar estará disponible para su inserción en la parte inferior izquierda (en el programa). La letra de la tecla pulsada devuelve el caracter de la tecla que esté pulsada y en el caso de no estar pulsada ninguna devuelve un caracter vacío.

La opción bool para comprobar el estado de una tecla por su código devuelve verdadero cuando se pulsa la tecla cuyo código coincide con un valor numérico concreto. Funciona como la opción de tecla por su letra excepto en que se especifica un número en lugar de una letra. Por ejemplo, es equivalente la tecla "a" y la tecla cuyo código es 65. La última opción devuelve el código de la tecla que se encuentre pulsada y en caso de no estar pulsada ninguna devuelve el valor -1. La necesidad de consultar una tecla por su código se debe a que no todas se detectan por un caracter, por ejemplo, la tecla ENTER se detecta por el código 10 pero no es posible por una letra o caracter. La siguiente aplicación sirve para conocer el código de cualquier tecla: Pulse sobre el interior de la aplicación para que asuma el control del teclado y pulse tantas teclas como quiera. Como verá, el código de tecla no distingue entre mayúsculas y minúsculas ya que la tecla es la misma, sin embargo, el código ascii es diferente. Así mismo, no todas las teclas tienen un caracter asociado como sucede con la tecla ENTER.

El programa de la aplicación anterior es tan simple como se muestra en la siguiente imagen: Se ha utilizado un componente llamado "ascii" y en él se han creado tres elementos de texto. Lo único que hace el programa es asignar como contenido de estos textos el caracter de la tecla que se pulse, el código que la corresponde y su código ascii. El código ascii lo transmite un bloque que hace precisamente esa función, esto lo veremos en el tema de bloques insertables. Este bloque toma como texto el contenido del primer elemento de texto, que es precisamente el caracter de la tecla que se pulse, y transmite el código ascii del caracter 0 según se indica en su primera entrada. Como el texto solo tendrá un caracter estará en la posición 0 y lo que se transmite es su código ascii (el del caracter de la tecla).

Para consultar una combinación de teclas, como pudiera ser Ctrl-a (tecla Ctrl y "a" pulsadas a la vez) utilizaremos el bloque AND como puede verse en la figura, que transmite estado verdadero solo si son verdaderos los datos de sus dos entradas. Nótese que la tecla "a" no se consulta por su letra sino por su código (65). Si lo hiciéramos por su letra, esta combinación no devolvería nunca verdadero porque las dos entradas del bloque AND son consultas de tecla y solo una puede ser verdadera simultánemente. La segunda asignación que muestra la figura utiliza un texto para ver el código de cualquier tecla que se pulse. Utilizar auxiliarmente un texto para ver en pantalla algún dato será útil en comprobaciones (el ejemplo de comprobar cuál es el código de una tecla es bastante claro y evita tener que consultar los códigos). Si el texto empleado no se necesita para otra cosa podrá borrarse.

DATOS CONSTANTES

ATRAS...
(bool) Verdadero
(bool) Falso
(número) Dato constante numérico
(texto) Cadena de texto fijo
(punto) coordenada X,coordenada Y

Un dato constante de tipo bool solo puede ser verdadero o falso (en algunos casos puede hacer falta que algo sea verdadero o falso de forma permanente, como el que un texto sea siempre editable o no editable). Al pulsar cualquiera de las otras opciones aparecerá un cuadro para introducir el valor constante. En el caso de un punto, recuerde que se escribe con dos valores numéricos con una coma en el medio, sin dejar espacios. Si el valor numérico es real, la separación de los decimales se hace con un punto, no con una coma, que se utiliza en los datos de tipo punto para separar las dos coordenadas.

DATOS VARIABLES

Para consultar datos variables es necesario haberlos creado previamente, de modo que por defecto la lista de datos variables estará vacía. Para crear una nueva variable se recurre a la opción "CREAR DATOS VARIABLES", en la lista de opciones de control (vease en el tema 7: Control de contenidos). Los datos variables pueden ser de tipo bool, numérico, de texto y de punto.

En la siguiente imagen vemos las dos listas de variables con dos variables numéricas ya creadas (mediante la opción "(número) Nueva variable numérica"), que se han añadido automáticamente en la lista izquierda para poder consultar el valor que contengan. Vemos que el fragmento de programa que se representa comienza incrementando en 1 a la variable 1, de modo que tendrá un valor que irá aumentando. Este valor creciente se asigna a continuación a la posición en dirección del eje X a dos elementos, lo que supone obligar a dichos elementos a moverse poco a poco hacia la derecha en dirección horizontal. En la última asignación se multiplica a la variable por 1 o por 0 (equivalente a verdadero o falso): Cuando la tecla R se pulse (estado verdadero o valor 1) el producto será igual al valor que tenga en ese momento la variable, es decir, mantiene el valor recibido en la primera asignación. Cuando la tecla R se suelte (estado falso o valor 0) el producto será 0, que pasa a la variable. Por lo tanto, si la tecla R se mantiene pulsada, los dos elementos se irán desplazando poco a poco a la derecha y al soltarla recuperarán su posición original.

Si es necesario utilizar variables dependerá de la aplicación y de la estrategia que sigamos para resolver los problemas. Lo que es claro es que si el resultado de un cálculo tenemos que consultarlo en cuarenta lugares de nuestro programa, no será recomendable programar el cálculo las 40 veces, será mejor programarlo solo una vez al principio, asignar el resultado a una variable y en cada uno de los 40 lugares donde consultarlo, se consulta simplemente la variable.

DATOS DE SECUENCIAS

ATRAS....
(número) secuencia seleccionada
(número) etapa seleccionada
(bool) verdadero si etapa seleccionada activa
(número) tiempo de etapa en cent. seg.

Cuando arranca una aplicación, todas las secuencias que existan tendrán activa su etapa 0. En cuanto se cumpla la transición o una de las transiciones que sigan a la etapa 0, la secuencia arranca por sí sola, de modo que permanece en espera en su etapa 0 hasta que algo la ponga en funcionamiento. Pero su control también puede ser mucho más libre: Desde cualquier parte de un programa se puede activar una etapa cualquiera de cualquier secuencia, por ejemplo, activando la etapa siguiente a la 0, la secuencia es forzada a comenzar su ejecución y si se activa la etapa 0, equivale a un reset de la secuencia porque se desactivarán todas las demás etapas. En un programa también puede interesar consultar si una determinada etapa se encuentra activa. Por estas razones debe poderse seleccionar secuencias y etapas (esto en lista de opciones de control) y es posible consultar qué secuencia y etapa están seleccionadas y si está activa o no la seleccionada. La última opción (tiempo de etapa) solo aparecerá si estamos editando una etapa o una transición y permite conocer el tiempo transcurrido desde que la etapa haya recibido el control. Por ejemplo, si queremos que en la etapa 23 sea visible un mensaje durante 5 segundos, haremos que dicho mensaje se vea en la etapa 23, que se oculte en la etapa 24 y que pase el control a la 24 cuando el tiempo de la etapa 23 sea mayor que 500 centésimas de segundo. Esta comprobación del tiempo de etapa se hará, naturalmente, en la transición de la etapa 23.

DATOS DE COMPONENTES.

ATRAS...
APLICACIÓN COMO COMPONENTE
COMPONENTE .......
COMPONENTE .......

En esta opción encontraremos los componentes que tengamos abiertos en la aplicación (indicado con puntos suspensivos en la lista anterior). Al pulsar en uno de ellos encontraremos las opciones de consulta que le correspondan, que veremos más adelante. "APLICACIÓN COMO COMPONENTE" tiene utilidad si pretendemos crear un componente con la aplicación abierta, es decir, si estamos creando un componente con programa propio que podamos abrir en otras aplicaciones. Pulsando esta opción se accede a las informaciones que el componente podrá recibir, las cuales podemos crear líbremente, con un texto cualquiera con el fin de expresar su significado. Cuando se utilize el componente (después de haber sido creado), estas opciones servirán para transmitir información al componente.

APLICACIÓN COMO COMPONENTE.

La siguiente imagen muestra un pequeño programa de ejemplo que ha servido para crear un componente con programa propio. Contiene un componente gráfico (bomb00) con solo dos pasos que representa una bombilla apagada en el paso 0 y encendida en el paso 1. La lista superior izquierda muestra las opciones que aparecen al pulsar "APLICACIÓN COMO COMPONENTE", donde las resaltadas en rojo se han creado expresamente para el componente a construir (mediante las opciones en negro). En el programa (zona inferior de la imagen) vemos que la primera asignación hará que el componente bomb00 se dibuje en el paso 0 o en el paso 1, ya que el dato que se asigna será falso o verdadero (equivalente a los valores numéricos 0 y 1). Por lo tanto, en la primera asignación se hace uso de una vía de comunicación que se ha creado para encender y apagar una bombilla. Las dos siguientes asignaciones permitirán posicionar libremente la bombilla, ya que sus valores se asignan como coordenadas que posicionan el componente. Como se ha visto, podemos crear un componente con programa que recibirá informaciones personalizadas, pero también podrá transmitir informaciones que podemos definir libremente: La lista derecha contiene opciones para crear informaciones a transmitir, de la misma forma que la izquierda contiene opciones para crear informaciones a recibir. En rojo vemos la única opción creada en el ejemplo, destinada para transmitir un estado lógico verdadero si la bombilla se muestra encendida. Como el componente bomb00 dibuja la bombilla encendida en el paso 1, cuando su paso sea igual a 1, vemos que la última asignación transmitirá verdadero a través de la vía de comunicación que se ha creado.

DATOS DE CONSULTA DE COMPONENTES CON PROGRAMA.

Veamos cómo hacer uso del componente programado en el ejemplo anterior: Supongamos que el componente creado ha sido "bomb.pgn" (siempre se crea con igual nombre que la aplicación pero su extensión será pgn) y lo abrimos en una nueva aplicación cuyo programa se muestra en la siguiente imagen. A las opciones de las listas que aparecen se llega por la opción de componentes en ambos casos y pulsando luego el componente abierto, cuyo nombre sería bomb00. Vemos que las opciones resaltadas en rojo son precisamente las vías de comunicación que se habían creado según el apartado anterior, pero aquí aparecen en el lado contrario. Esto es lógico porque los datos que consulta el componente son los datos que ahora sirven para controlarlo y los datos que controla el componente son los que ahora recibimos de él.

En la primera asignación (imagen anterior) se controla el número de ciclos por segundo. No conocemos la función que desempeñan algunos bloques, pero esto se explicará con detalle en el tema 9: Bloques insertables. De momento nos bastará con saber que esta asignación mantiene 10 ciclos por segundo mientras se pulse alguna tecla y cuando se suelta se detiene la actividad nada más que pase un segundo (cuando se ponen varias aplicaciones en un documento html es recomendable que su actividad se detenga si no se están utilizando). La segunda asignación actúa como un interruptor cada vez que se pulse cualquier tecla (el bloque DIV tiene esa función) por lo que una pulsación encenderá la bombilla y otra pulsación la apagará. Las dos siguientes asignaciones pondrán la bombilla donde se encuentre el ratón solamente si se pulsa el ratón y la bombilla está encendida, en caso contrario los bloques AND transmitirán falso o valor 0 y la bombilla volverá a la posición original (en la que haya sido dibujada). La última asignación ejecuta incondicionalmente el programa del componente, se trata de una opción de control común a todos los componentes con programa. Si su programa no se ejecutara, no interpretaría las informaciones que recibe y solo veríamos de él una bombilla estática.

La siguiente aplicación es el resultado del programa anterior: Verá que si pulsa el botón izquierdo del ratón con la bombilla apagada no sucede nada, pero si enciende la bombilla pulsando cualquier tecla, entonces al pulsar el ratón la bombilla se coloca en la posición que pulse. Una nueva pulsación de cualquier tecla apagará la bombilla.

DATOS DE COMPONENTES GRÁFICOS.

ATRAS...
DATOS DE ELEMENTOS
(texto) Nombre del componente...
(número) paso actual de...
(número) número de pasos de...
(bool) verdadero si... se dibuja
(número) coordenada X relativa de...
(número coordenada Y relativa de...

Las opciones anteriores corresponden a un componente editable (extensión gra). Si el componente ha sido creado con una aplicación (extensión pgn), las opciones que aparecerían aquí serían las que muestra la imagen del apartado anterior, es decir, las que se hubieran creado libremente para establecer comunicación con el componente. Como vemos, de un componente se puede consultar su nombre, el paso en el que se encuentre, el número de pasos que contenga y la posición relativa a la original (en la que fué dibujado). Tanto la posición como el paso en el que se dibuje admiten ser modificadas desde las opciones de control. Si el componente tiene asignada una transformación, su sistema de referencia también es afectado, es decir, mediante las coordenadas relativas le moveremos respecto de un sistema que también se mueve.

La opción "DATOS DE ELEMENTOS" presentará la lista de todos los elementos que contenga el componente. Cuando se pulse uno de los elementos aparecerán las opciones de consulta correspondientes, dependiendo del tipo de elemento. Dado que la cantidad de opciones es muy numerosa, se dedica para ello el siguiente tema.