Saltar la navegación

3. Operadores reservados

Hay varios identificadores o palabras reservadas que tienen un significado especial y propio cuando se usan en una escena, es decir, que cuando se utilizan ya tienen una utilidad y significado definido por defecto.

Por ejemplo, para los espacios 2-D los identificadores reservados son: escala, O.x, O.y, mientras que para los espacios 3-D los identificadores reservados o variables intrínsecas de Descartes son: escala, observador, rot.y y rot.z. Estas variables siempre deben ir precedidas por el identificador del espacio y un punto, es decir sus nombres son: <id>.escala, <id>.O.x, <id>.O.y, <id>.observador, <id>.rot.y, <id>.rot.z, donde <id> es el identificador del espacio.

En la siguiente tabla se muestra una relación de palabras reservadas con significado y función propia en las escenas, obviamente no es necesario aprenderlas, se relacionan aquí para conocer de su existencia por si nos son necesarias:

Palabras reservadas

Para espacios en general

escala

Es el tamaño de la escala de la escena y se expresa en pixeles.
Su valor por defecto en escenas 2-D es 48.

O.x

Es la distancia horizontal del centro de la escena al origen en pixeles.
Los valores positivos desplazan el origen hacia la derecha.
El valor por defecto es 0.

O.y

Es la distancia vertical del centro de la escena al origen en pixeles.
Los valores positivos desplazan el origen hacia abajo.
El valor por defecto es 0.
_x La abscisa del vértice superior izquierdo del espacio (en pixeles).
_y La ordenada del vértice superior izquierdo del espacio (en pixeles).
_w El ancho del espacio (en pixeles).
_h La altura del espacio (en pixeles).
ratón_apretado (mouse_pressed) Vale 1 si el botón izquierdo del ratón está apretado y cero en cualquier otro caso.
ratón_x (mouse_x)

Abscisa del punto en donde está el cursor del ratón, en las coordenadas propias del espacio. Sólo se registra el valor cuando el ratón está apretado o si el espacio tiene activada la casilla de:

_sensible_a_los_movimientos_del_ratón.

ratón_y (mouse_y)

Ordenada al origen del punto en donde está el cursor del ratón, en las coordenadas propias del espacio. Sólo se registra el valor cuando el ratón está apretado o si el espacio tiene activada la casilla de:

_sensible_a_los_movimientos_del_ratón.

clic_izquierdo (mouse_clicked) Vale 1 sólo cuando se ha hecho un clic izquierdo sobre el espacio. Vale cero en cualquier otro caso.
_selected_control_() Da el número del control gráfico que está seleccionado. La numeración corresponde al orden en que los controles gráficos aparecen en la lista de controles.
 

Para cadenas

 _AnchoDeCadena_(str, font, style, size) Da el ancho en número de píxeles de la cadena str, font especifica el tipo de letra que se usa (‘Monospaced’, ‘Serif’ o ‘SansSerif’), style indica si la letra está en negritas o itálica (‘PLAIN’, ‘ITALIC’, ‘BOLD’, ‘ITALIC+BOLD’ y ‘BOLD+ITALIC’) y size es el tamaño de la letra en pixeles.
_longitud_(str)
Devuelve el número de caracteres que tiene la cadena str.
_subcadena_(str,i,f)
Devuelve la cadena formada por los caracteres desde el i (incluido) hasta el f (excluido). Por ejemplo, cuando str='espuela', para obtener ‘pue' habría que llamar _subcadena_(str,2,5) y ‘puela' habría que llamar _subcadena_(str,2,_longitud_(str)).
_letraEn_(str,n)
Devuelve la letra que se encuentra en la posición n de la cadena, por ejemplo _letraEn_(‘espuela',3) devolvería ‘u'
_índiceDe_(str,substr)
Devuelve la primera posición en la cadena en la que se encuentra la subcadena substr. Por ejemplo: _índiceDe_(‘espuela','el') devuelve 4. Si la subcadena substr no aparece en la cadena str, entonces devuelve -1.

 _NumACadena_(num,dec)

Devuelve el número num como una cadena de caracteres con decimales. Es imprescindible para controlar el número de decimales cuando en un texto con formato se concatena un número con una cadena.
 &sup2 Al incluirla en una cadena, devuelve la expresión adjunta como el cuadrado; por ejemplo, la cadena ‘x&sup2′, es mostrada en el navegador como x2.
 &sup3 Al incluirla en una cadena, devuelve la expresión adjunta como el cuadrado; por ejemplo, la cadena ‘x&sup3′, es mostrada en el navegador como x3.
toFixed (a,b)
Recibe dos números a y b y devuelve el primer número a con el número de decimales especificados por el segundo número b.
trim (a)
Devuelve la cadena que recibe a, sin los espacios en blanco al inicio y final de la cadena.
toUpperCase (a)
Recibe una cadena a y la devuelve con todos los caracteres en mayúsculas.
toLowerCase (a)
Recibe una cadena a y la devuelve con todos los caracteres en minúsculas.
replace (a,b,c)
Recibe tres cadenas a, b, c y devuelve la primera cadena a, con todas las apariciones de la segunda cadena b reemplazadas por la tercera cadena c, es decir, que cada vez que aparezca un carácter de b en a lo reemplaza por c.
lastIndexOf (a,b)
Recibe dos cadenas a y b y devuelve el índice (un número) de la última aparición de la segunda cadena en la primera. Devuelve -1 si no encuentra la segunda cadena en la primera.
indexOf (a,b)
Recibe dos cadenas a y b y devuelve el índice (un número) de la primera aparición de la segunda cadena en la primera. Devuelve -1 si no encuentra la segunda cadena en la primera.
strLength (a)
Recibe una cadena a y devuelve el número de caracteres que contiene la cadena.
substring (a,b,c)
Recibe una cadena a y dos números  b y c (el índice inicial y el final) y devuelve la subcadena determinada por los índices inicial y final.
floor (a)
Recibe un número a y devuelve el máximo entero menor o igual al número dado.
ceil (a)
Recibe un número a y devuelve el entero más pequeño mayor o igual al número dado.
round (a)
Recibe un número a y devuelve el valor del número redondeado al entero más cercano.
charAt (a,b)
Recibe una cadena a y un número b y devuelve el carácter de la cadena en la posición determinada por el número.
 

Para controles de audio y vídeo

ID.play() Inicia el vídeo o el audio, donde ID es el identificador del control.
ID.pause() Hace una pausa en el vídeo o el audio, donde ID es el identificador del control.
ID.stop() Detiene el vídeo o el audio, donde ID es el identificador del control.
ID.currentTime(a) Inicia el vídeo o el audio, donde ID es el identificador del control en el segundo indicado por a.
 

Para espacios 3D

observador

Distancia (en pixeles) aparente del origen al observador.

rot.y

Ángulo de giro (en grados) del espacio respecto al eje y a partir de la posición por defecto en la que el eje x apunta hacia el observador (ligeramente hacia abajo), el eje y hacia la derecha y el eje z hacia arriba.

rot.z

Ángulo de giro (en grados) del espacio respecto al eje z a partir de la posición por defecto en la que el eje x apunta hacia el observador (ligeramente hacia abajo), el eje y hacia la derecha y el eje z hacia arriba

 

Para espacios HTMLIFrame

<identificador>.set(‘vr’,var)

Esta función requiere un identificador de un espacio (principal o subordinado) antes del sufijo .set, y como argumentos lleva una cadena de texto y una variable. Se usa cuando una escena tiene un espacio principal y uno subordinado (como HTMLIFrame) que requieren comunicarse información. En el ejemplo, el primer argumento (la cadena de texto ‘vr’) representa el nombre de una variable que el espacio receptor de información usará, y el segundo argumento (la variable var) es la variable del espacio emisor de información que contiene el valor que se desea comunicar al receptor. El identificador es el del espacio receptor de la información. Es preciso aclarar algunos detalles sobre dicho identificador. Sin embargo, indicar esto no hace que el espacio receptor de información se actualice. Es ahí donde entra la otra función propia .update() que se explica en breve.

<identificador>.exec(‘fnc’,func).

Esta función manda llamar una función fnc que debe encontrarse en el selector Definiciones del espacio receptor de información. .exec acepta siempre dos argumentos: el nombre de la función a ejecutar en la escena (la cadena de texto ‘fnc’ en el ejemplo, donde fnc es el nombre de la función) y el segundo es el argumento de la función, en caso de requerir uno (en este ejemplo sería una variable func). Si la función fnc sólo cuenta con un argumento, puede directamente ir como en el ejemplo. No obstante, en caso que tenga más argumentos, en lugar de func va una cadena de texto con los distintos argumentos separados entre ellos por comas. Por ejemplo, .exec(‘fnc’,’a,b’), donde los argumentos de la función son a y b. Entonces podría mandarse llamar usando 150 Funcionalidad intrínseca de Descartes .exec(`func','a,b'). Si la función no involucra argumento alguno, se puede poner una cadena de texto vacía en su lugar. Un ejemplo de una llamada a una función son argumento es .exec(`func',)

<identificador>.update()

Como se mencionó, esta función sirve para forzar una actualización de la escena principal posterior a recibir la información de la escena subordinada, por lo que suele incluirse justo después del .set o .exec para que el espacio receptor de información se actualice inmediatamente después de hacer cambios en sus variables. Esta función no involucra argumento alguno dentro de sus paréntesis. 

<identificador>.changeConf(ruta)

Es una función que sirve para recargar sólo el código html de una escena subordinada. Se usa cuando se requiere que el contenido de un espacio HTMLIFrame pueda adoptar distintos contenidos HTML. Al usar esta función, se evita la recarga del intérprete de DescartesJS, situación deseable cuando se requieren transiciones rápidas entre distintos contenidos HTML asociados al espacio HTMLIFrame. El contenido es cargado de un archivo .html, cuya ruta es el texto contenido en la variable ruta, argumento de la función.

 

Para controles numéricos

_TexT_

(En desuso) Si se asigna la cadena '_TexT_' como valor inicial a un control de texto, éste interpreta todo lo que se escriba en él como texto y no como un número o una expresión a evaluar, que es el comportamiento por omisión. Ya no es necesario usar esto pues ahora hay un atributo de los campos de textos específico para tal propósito: solo texto.
_._ o _nada_ o _void_ Cualquiera de estas cadenas, por ejemplo ‘_nada_’, asignada como nombre a un pulsador, hace que la etiqueta del pulsador desaparezca. Esto sólo es necesario en pulsadores, en los otros controles numéricos basta dejar el atributo del nombre vacío. Si se deja vacío el nombre en un pulsador, la etiqueta toma el nombre del id.
_no_ No se pone la etiqueta del nombre en los controles numéricos tipo botón.
VACIO.GIF Si se da este nombre a una imagen de un botón, el botón se vuelve totalmente transparente, aunque no haya tal imagen.
<identificador>. setOptions(str)

Sólo para controles tipo Menú. 

Esta función permite asignar las opciones que tendrá el menú mediante una cadena de texto, que en este ejemplo es str.
Recordamos que este tipo de controles cuenta con un parámetro opciones en el que se introducen las opciones del menú separadas por comas. En ocasiones, es deseable poder asignar estas opciones a partir de una cadena de texto.

Para controles gráficos

<id_control_gráfico>.x

<id_control_gráfico>.y

Estas variables se pueden usar para imprimir el valor de la coordenada horizontal y el de la vertical del control gráfico relativa al plano cartesiano. También es posible asignarle un valor a estas variables para colocar al control gráfico en una determinada posición horizontal y vertical.
.activo (.active) Sufijo que agregado al nombre de un control gráfico produce una variable que vale 1 si el control gráfico en cuestión está seleccionado y cero si no está seleccionado.

Para vectores y matrices

_VectorToStr_(‘<identificador del vector>’) Su nombre viene de vector to string, o vector a cadena. Su argumento es el identificador del vector flanqueado por comillas sencillas. La función devuelve, en forma de cadena de texto, el contenido de vector, y suele asignarse por lo mismo a una variable. Por ejemplo, vc=_VectorToStr_(`Vc') asignará a la variable vc el contenido del vector Vc. El formato es, también, similar al de las matrices. En un primer renglón viene el identificador del vector flanqueado por <, y >. Luego un salto de línea y la primera entrada del vector. Y así cada entrada del vector en una línea distinta. Al final viene una última línea de cierre con el identificador del vector. 
StrToVector_(cadena,‘<identificador del vector>’) Su nombre viene de string to vector, o cadena a vector.
Esta función vuelca el contenido de una cadena en un vector. Por ejemplo _StrToVector_(vc,'Vc') volcará en un vector Vc el contenido de la variable vc. El formato de la cadena de texto es el mismo ya visto que se adopta cuando se vuelca información de un vector en una cadena de texto.
_MatrixToStr_(‘<identificador de la matriz>’). Su nombre viene de matrix to string, o matriz a cadena. Su argumento es el identificador de la matriz flanqueado por comillas sencillas. Esta función devuelve, en forma de cadena de texto, el contenido de la matriz, por lo que suele asignarse la función a una variable. El texto devuelto usa formato de etiquetas. El primer renglón consiste en el identificador de la matriz dentro de <>. Después viene un salto de línea. Luego vienen los valores de las entradas (o columnas) de la primera fila, cada una separada por el símbolo especial ¦. Y así van varios renglones, cada uno representando una fila de la matriz, y separado de otro por saltos de línea. Después de la última fila, y también en un nuevo renglón, se cierra la etiqueta con el identificador del a matriz dentro de </ >. Por ejemplo, para la matriz M, se tendría.
_StrToMatrix_(cadena,’<identificador de la matriz>’) Su nombre viene de string to matrix, o cadena a matriz. Su primer argumento es una variable que contiene una cadena de texto dentro de la cual vienen los datos de la matriz, y su segundo argumento es el identificador de la matriz en la que se volcarán esos datos, flanqueado por comillas sencillas.
Esta función hace lo opuesto que _MatrixToStr_(). Esto es, vuelca el contenido de una cadena en una matriz. No devuelve un valor como tal, sino que usa sus dos argumentos para transferir la información.
 

Otros

e (número de Euler) 2.7182818284590452653602874…
pi (o la letra griega Pi) 3.141590653…
_Eval_( c ) Si el argumento c es una constante cuyo valor es una cadena que representa una expresión matemática, esta función devuelve la evaluación de esa expresión. Por ejemplo, si c=’sen(pi/6)’ entonces _Eval_(c)=0,5.
_ExecBlock_(string,label)
Es similar a _Eval_, pero que permite evaluar no sólo una línea o comando en un texto, sino un texto string que contiene varios comandos, y que se encuentra flanqueado por una etiqueta label que consiste en un texto correspondiente a una etiqueta en lenguaje HTML
_Num_( var ) Si el argumento c es una constante cuyo valor es una cadena que representa una expresión decimal, esta función devuelve el número correspondiente a dicha expresión decimal. En cualquier otro caso devuelve NaN (No es un número). Por ejemplo, si c=’3.14159′ entonces _Eval_(c)=3,14159. Sirve para saber si el usuario escribió un resultado numérico directamente sobre un campo de sólo texto, para evitar que use el campo de texto como calculadora.
isNumber(x)
Devuelve 1 si x es un número real o 0 de lo contrario.
.long Sufijo que agregado al nombre de un vector devuelve el número de elementos del vector.
.filas Sufijo que agregado al nombre de una matriz, devuelve el número de filas de la matriz.
.columnas Sufijo que agregado al nombre de una matriz, devuelve el número de columnas de la matriz.
URL.<etiquetas>

Forma de indicar algún parámetro a una escena de Descartes directamente desde la ruta en el navegador que usa hacia el archivo html de Descartes que abrirá.

Este tipo de etiquetas permiten que el usuario indique cosas de antemano antes de
que se cargue la escena.
https://sitio.abcd.mx/index.html?vista=horizontal&paso=3.

device

dispositivo

Es una variable cuyo valor es una cadena de texto que indica el tipo de dispositivo en que se está usando la escena de Descartes. Las opciones son desktop (que corresponde a un ordenador), tablet (que corresponde a una tableta), y mobile (que corresponde a un teléfono móvil).

_NUM_MAX_ITE_ALG_

Variable que permite reasignar un valor mayor o diferente a 100,000 ciclos en los algoritmos.

Las literales x,y,n,u y v tienen un significado especial dentro de las expresiones que definen algunos objetos gráficos.

x e y juegan el papel de la abscisa y la ordenada de puntos en el plano en el objeto gráfico "ecuación". También estas mismas literales juegan el mismo papel en las expresiones que determinan las constricciones de los controles gráficos.

n juega el papel de la variable de una sucesión en el objeto gráfico "sucesión" y toma sólo valores enteros.

u y v juegan el papel de parámetros en la definición de las ecuaciones paramétricas de las superficies en 3D donde toman valores reales entre 0 y 1.

Las literales x, y y z en este caso también tienen el significado especial de ser las coordenadas de los puntos de la superficie.
x, y y z se expresan paramétricamente en términos de u y v para representar todos los puntos de una superficie.

t y s no son literales reservadas.

La literal t suele usarse para definir las ecuaciones paramétricas de una curva en el plano o de una curva en el espacio. Sin embargo, a diferencia de u y v para las ecuaciones paramétricas de una superficie, esta literal puede cambiarse por cualquier otra letra o palabra y su rango de definición puede ser cualquiera y no necesariamente el intervalo [0,1].

Análogamente la literal s que se usa para definir las familias de gráficos en 2D no es obligatoria, el autor de una escena puede cambiarla a su antojo y por tanto no es una variable reservada.

Otros operadores reservados son los números pi y e. En la siguiente imagen de una escena mostramos su valor con 12 decimales. Podemos ver que su valor no ha sido previamente definido en la escena, es decir, es un valor predefinido o reservado por defecto.

Pondremos otro ejemplo de operadores reservados, en este caso, escala. Esta palabra se reserva para definir la escala o "zoom" con la que se muestra un espacio, de forma que a mayor valor de la escala más ampliado vemos el espacio y viceversa. Deberá ir detrás del nombre o identificador del espacio y un punto. En nuestra escena vamos a definir un espacio E1, en dos dimensiones, con ejes, rejillas y números. Damos al campo escala el valor de 48, que es el que aproximadamente viene por defecto.

Introducimos un control numérico de tipo pulsador en la zona norte, cuyo nombre sea E1.escala, es decir, el nombre del espacio, seguido por un punto y el término reservado para la escala. Su valor por defecto será 48, su incremento será de 1, el mínimo 0 y el máximo 10000.

A continuación, mostramos el resultado para dos valores diferentes de la escala, 1000 y 2.

Nota: Además de los presentados, existen otros operadores reservados y en el futuro pueden definirse otros nuevos.

Actividad

Utilizar en una escena operadores reservados.