En el apartado de definiciones, se documenta el tema de vectores, cuyos elementos tienen unos valores que se pueden asignar de varias maneras. Una primera es asignando los valores en la misma definición del vector; otra es asignando los valores a través de un algoritmo, especialmente en el caso de vectores de gran tamaño, mediante el que se pueden generar matemáticamente y una última opción es a través de un fichero o archivo de texto.
Carga estática con el parámetro archivo en la definición de un vector
En la siguiente escena interactiva hemos usado tres ficheros: el fichero paises.txt, que almacena los nombres de los países; el fichero abscisas.txt que almacena las abscisas, en la escena, de las ciudades capital; y el fichero ordenadas.txt que almacena las ordenadas donde se encuentran las ciudades capital. Cada uno de estos ficheros asignan los valores a los vectors P, X y Y. En la siguiente imagen se puede observar que en la definición del vector P se indica, en el parámetro archivo, que se usará el fichero Ficheros/paises.txt . La carga de cada vector se efectúa una única vez y no varían los valores de sus elementos de ahí que remarquemos que es una carga estática.
El contenido de ese archivo paises.txt es éste:
Para un mayor detalle, observa y escucha la presentación que hay a continuación de la escena.
Como se indica en la presentación, para que los ficheros puedan ser leídos en la definición por el intérprete DescartesJS, cuando la escena se ejecuta en local, es necesario incorporarlos con un script en la página donde está embebida la escena. Por cada fichero se incluirá un script de tipo «descartes/vectorFile«. En la imagen siguiente puede verse cómo se incorporan en el código dos ficheros de nombres paises.txt y abscisas.txt. En este caso en el nombre se especifica como prefijo la carpeta Ficheros ya que en la escena ése es el direccionamiento que tienen dichos ficheros. Esta situación es análoga a la ejecución en local de macros.
Carga dinámica de un vector con la función _GetValues_
Una posibilidad para efectuar la carga de un vector de manera dinámica, es decir, accediendo a diferentes ficheros según se desee es utilizando la función _GetValues_ cuya sintaxis es
_GetValues_(fichero,vector)
fichero será una cadena de caracteres entre comillas simples, por ejemplo ‘datos/datos1.txt’, o una variable que contenga una cadena y que referencie el path localizador del archivo.
vector será una cadena de caracteres entre comillas simples, por ejemplo ‘V’, o una variable que contenga una cadena. Esa cadena es la etiqueta que aparece en el fichero de datos a cargar y ha de coincidir con ella o bien, si se especifica la cadena nula o una variable con ese valor ignorará dicha etiqueta.
En la escena siguiente (puede descargarla desde aquí) se cargan los datos de un vector denominado vect1 a partir de los datos almacenados en tres ficheros ‘datos1a.txt’, ‘datos2a.txt’ y ‘datos3a.txt’.
En la opción «Leer vector variables 1» el archivo usado es filename1=’datos1a.txt’ cuyo contenido es
y donde podemos observar la etiqueta <r2>
Análogamente tenemos los archivos filename2=’datos2a.txt’ y filename3=’datos3a.txt’
El código que permite la lectura de esos archivos es el siguiente
En él podemos observar como al seleccionar la primera opción del menú (menu=1) se accede a _GetValues_(filename1,’r2′) donde filename1=’datos1a.txt’ y en el contenido de ese archivo se usa la etiqueta <r2>.
Para la siguiente opción la llamada es _GetValues_(filename2, vectorv) donde filename2=’datos2a.txt’ y vectorv=’DATOSVECT’ que es la etiqueta usada en dicho fichero.
Y en la tercera opción se usa _GetValues_(filename3, ») donde filename3=’datos3a.txt’ y en vector se indica la cadena nula, es decir, que se ignore la etiqueta <NoUsado> especificada en datos3a.txt.
En cada uno de esos archivos se efectúa una asignación a las variables que se han denominado aux1, aux2, aux3 y aux4 que son las que en el código de la escena se asignan a los elementos del vector vect1, es decir, que se usan como variables de paso.
Para el funcionamiento en local es necesario incorporarlos con un script en la página donde está embebida la escena. Por cada fichero se incluirá un script de tipo «descartes/archivo«. En la imagen siguiente puede verse cómo se han incorporado en el código los tres ficheros anteriores:
Carga dinámica de un vector con la función _Load_ y _StrToVector_
La sintaxis de la función _Load_ es
variable=_Load_(fichero)
donde fichero es una cadena de caracteres que proporciona la dirección donde se ubica el fichero a cargar y variable es la que variable a la que se asigna el contenido de ese fichero como una cadena de caracteres.
Una vez asignado el contenido a dicha variable, la función _StrToVector_ (variable,‘vector‘) asigna los valores a cada elemento del vector etiquetado como vector.
Hay que señalar que el contenido del fichero ha de contener una primera línea con la etiqueta <vector> y finalizar con la etiqueta </vector>.
En la siguiente escena puede comprobar el funcionamiento de estas funciones (puede descargarse aquí).
El archivo usado en la escena anterior es el siguiente:
en él podemos observar las etiquetas y el script para inscrustarlo en el código html para que sea accesible en local.
Carga dinámica de un vector con la función _GetVector_
La sintaxis de esta función es _GetVector_(fichero,’vector‘) donde fichero es una cadena de caracteres que proporciona la dirección donde se ubica el fichero a cargar y vector es la etiqueta del vector en el que se desean cargar sus elementos. Esa etiqueta ha de ir entre comillas simples y ha de coincidir con la etiqueta que aparece en el contenido del fichero que se está leyendo. Su efecto es equivalente a _Load_ y _StrToVector_ de la sección anterior. También en la escena de esa sección puede observar el funcionamiento de esta función.
Guardar vectores en un fichero
Para esta funcionalidad consulte el artículo Guardar ficheros.
Haz un comentario