Las definiciones también incluyen gran parte de la programación dura que se hace en DescartesJS. Éstas consisten en variables, que pueden aceptar un valor o una expresión; vectores, que pueden verse como una variable que puede tener simultáneamente una hilera de valores dentro de ella; matrices, que es una extensión de un vector más allá de una hilera de valores; y funciones, que suelen ser un conjunto de instrucciones que se puede elegir cuándo se lanzan y además tienen la capacidad de realizarse cíclicamente.
En adelante veremos con más detalle en qué consiste y cómo funciona cada una de las
definiciones. También podremos ver cómo éstas permiten manejar los datos de una forma más cómoda, simplificada y ágil y, a su vez, permiten reducir el código de un interactivo en gran medida.
En ocasiones se desea utilizar una gran cantidad de variables que guardarán un tipo similar de información. En estos casos, puede resultar engorroso crear muchas variables distintas, y conviene en su lugar definir una especie de “mueble con muchos cajones”. Aunque el nombre del mueble es el mismo, cada cajón tiene un número o índice que lo identifica.
Cuando se agrega un vector, sólo es necesario dar su nombre. Por ejemplo, el vector E. Una vez agregado, siempre se hará referencia al mismo indicando el número de cajón en cuestión. Por ejemplo, E[0] representa el primer cajón, E[1] representa el segundo cajón, y así sucesivamente. Como se puede notar, el índice de los cajones empieza siempre en cero. Cada cajón puede guardar un valor o cadena, como si fuera una variable común y corriente.
En la siguiente Figura se observan los componentes de una definición tipo vector.
id: es un campo de texto en el que se introduce el identificador del vector. Éste será
el nombre con el que se refiere a dicho vector, y cuando se quiera introducir alguna entrada (que sería el cajón) en el programa, ésta se pone flanqueada por corchetes cuadrados después del identificador. Por ejemplo, Vc[2] corresponde a la tercera
entrada del vector Vc.
evaluar: es un menú con dos posibles opciones. Son las mismas opciones presentadas
para los algoritmos INICIO y CALCULOS: una sola vez y siempre. Si se selecciona siempre, las asignaciones en el panel de texto central del vector se hacen siempre que el usuario modifique un control. De lo contrario, sólo se hacen cuando se carga
la escena. Dado que las actualizaciones a los valores de los vectores suelen hacerse mediante funciones (como se verá más adelante), conviene dejar esta opción en una sola vez la mayoría de las veces.
De momento, sólo la opción una sola vez se encuentra disponible, aunque es posible que en el futuro se habilite la función siempre. No obstante, para fines prácticos no es necesario contar con esta última opción.
tamaño: es un campo de texto en el que se introduce el valor del número de entradas (o cajones) del vector.
panel de asignaciones del vector: es un panel para introducir el texto de las asignaciones
del vector. Por defecto aparecen las 3 primeras entradas del vector inicializadas en cero. Pero también puede incluir asignaciones a otras variables que no sean el vector. Si el vector ha de modificarse constantemente mediante una función
y no requiere de valores iniciales particulares, entonces conviene dejar dicho panel vacío.
archivo: es un campo de texto en el que se introduce la ruta relativa a un archivo del cual se obtendrá la información para llenar las entradas del vector. Ello resulta útil cuando el número de entradas de un vector es tan grande que resulta prohibitivo o indeseable ingresarlos manualmente en el editor.
El archivo en el que se introducen los datos deberá ser un archivo de datos preferiblemente con codificación UTF-8. Las entradas del vector se ingresan separadas por saltos de línea, o ENTERs. Es preciso notar que dicha funcionalidad es inmediatamente disponible tanto en el editor como en navegadores como Firefox. En Chrome, dicha funcionalidad puede no ser inicialmente visible. El archivo bien puede no ser leído dependiendo de la seguridad web implementada en el navegador. Sin embargo, puede desactivarse enWindows usando la bandera -disable-web-security al lanzarlo desde la ventana de comandos
El uso de las funciones es generalmente indispensable cuando se manejan vectores, teniendo en cuenta el orden en que debe estar el vector en el panel Definiciones. Se debe encontrar de preferencia sobre la función que lo llama. De otra forma, la función
buscará un vector aún no definido y un error ocurrirá. Es por ello que siempre es conveniente colocar tanto vectores como matrices hasta arriba de la lista del panel izquierdo de Definiciones.
Por último, notamos la estrecha relación que se forma entre el uso de vectores (y matrices también) con las funciones. Las funciones son muy útiles para asignar valores a los vectores ya que ellas pueden manejar una variable que funciona como índice, y este índice puede usarse directamente para modificar el valor de una entrada de un vector.