{"id":1804,"date":"2014-06-17T05:50:12","date_gmt":"2014-06-17T03:50:12","guid":{"rendered":"http:\/\/descartesjs.org\/documentacion\/?p=1804"},"modified":"2021-08-07T16:12:47","modified_gmt":"2021-08-07T15:12:47","slug":"ficheros-y-vectores","status":"publish","type":"post","link":"https:\/\/reddescartes.org\/documentacion\/ficheros-y-vectores\/","title":{"rendered":"Ficheros y vectores"},"content":{"rendered":"<p>En el apartado de definiciones, se documenta el tema de <a title=\"Vectores\" href=\"https:\/\/descartesjs.org\/documentacion\/?p=492\" target=\"_blank\" rel=\"noopener noreferrer\">vectores<\/a>, cuyos elementos tienen unos valores que se pueden asignar de varias maneras. Una primera es asignando los valores en la misma definici\u00f3n del vector; otra es asignando los valores a trav\u00e9s de un algoritmo, especialmente en el caso de vectores de gran tama\u00f1o, mediante el que se pueden generar matem\u00e1ticamente y una \u00faltima opci\u00f3n es a trav\u00e9s de un fichero o archivo de texto.<\/p>\n<h4>Carga est\u00e1tica con el par\u00e1metro archivo en la definici\u00f3n de un vector<\/h4>\n<p>En la siguiente escena interactiva\u00a0hemos usado tres ficheros: el fichero paises.txt, que almacena los nombres de los pa\u00edses; 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\u00f3n del vector P se indica, en el par\u00e1metro archivo, que se usar\u00e1 el fichero Ficheros\/paises.txt\u00a0. La carga de cada vector se efect\u00faa una \u00fanica vez y no var\u00edan los valores de sus elementos de ah\u00ed que remarquemos que es una carga est\u00e1tica.<\/p>\n<div id=\"attachment_2476\" style=\"width: 610px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/descartesjs.org\/documentacion\/wp-content\/uploads\/2014\/06\/vector_fichero1.jpg\"><img aria-describedby=\"caption-attachment-2476\" class=\"size-full wp-image-2476\" src=\"https:\/\/descartesjs.org\/documentacion\/wp-content\/uploads\/2014\/06\/vector_fichero1.jpg\" alt=\"Par\u00e1metro archivo en la definici\u00f3n de un vector\" width=\"600\" height=\"362\" srcset=\"https:\/\/reddescartes.org\/documentacion\/wp-content\/uploads\/2014\/06\/vector_fichero1.jpg 600w, https:\/\/reddescartes.org\/documentacion\/wp-content\/uploads\/2014\/06\/vector_fichero1-300x181.jpg 300w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/a><p id=\"caption-attachment-2476\" class=\"wp-caption-text\">Par\u00e1metro archivo en la definici\u00f3n de un vector<\/p><\/div>\n<p>El contenido de ese archivo paises.txt es \u00e9ste:<\/p>\n<div id=\"attachment_2477\" style=\"width: 217px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/descartesjs.org\/documentacion\/wp-content\/uploads\/2014\/06\/vector_fichero2.jpg\"><img aria-describedby=\"caption-attachment-2477\" class=\"size-full wp-image-2477\" src=\"https:\/\/descartesjs.org\/documentacion\/wp-content\/uploads\/2014\/06\/vector_fichero2.jpg\" alt=\"Contenido del fichero paises.txt\" width=\"207\" height=\"272\" \/><\/a><p id=\"caption-attachment-2477\" class=\"wp-caption-text\">Contenido del fichero paises.txt<\/p><\/div>\n<p>Para un mayor detalle, observa y escucha la presentaci\u00f3n que hay a continuaci\u00f3n de la escena.<\/p>\n<div style=\"text-align: center;\">\n<!-- iframe plugin v.4.5 wordpress.org\/plugins\/iframe\/ -->\n<iframe src=\"https:\/\/descartesjs.org\/repositorio\/Ficheros_JS\/index.html\" width=\"620\" height=\"570\" scrolling=\"yes\" class=\"iframe-class\" frameborder=\"0\"><\/iframe>\n<\/div>\n<div style=\"text-align: center;\"><\/div>\n<div style=\"text-align: left;\">En la siguiente presentaci\u00f3n, activa tus parlantes o altavoces. Luego, haz clic sobre la primera diapositiva y usa las flechas de direcci\u00f3n para observar y escuchar el resto de diapositivas.\u00a0Puedes descargar la escena y la presentaci\u00f3n desde <a href=\"https:\/\/descartesjs.org\/repositorio\/Ficheros_JS.zip\">este enlace<\/a>.<\/div>\n<div style=\"text-align: left;\"><\/div>\n<div style=\"text-align: center;\">\n<!-- iframe plugin v.4.5 wordpress.org\/plugins\/iframe\/ -->\n<iframe src=\"https:\/\/descartesjs.org\/repositorio\/Ficheros_JS\/Dzslides\/index.html\" width=\"600\" height=\"400\" scrolling=\"yes\" class=\"iframe-class\" frameborder=\"0\"><\/iframe>\n<\/div>\n<div style=\"text-align: center;\"><\/div>\n<div style=\"text-align: left;\">\n<p>Como se indica en la presentaci\u00f3n, para que los ficheros puedan ser le\u00eddos\u00a0en la definici\u00f3n\u00a0por el int\u00e9rprete DescartesJS, cuando la escena se ejecuta en local, es necesario incorporarlos con un script en la p\u00e1gina donde est\u00e1 embebida la escena. Por cada fichero se incluir\u00e1 un script de tipo \u00ab<strong>descartes\/vectorFile<\/strong>\u00ab. En la imagen siguiente puede verse c\u00f3mo se incorporan en el c\u00f3digo 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 \u00e9se es el direccionamiento que tienen dichos ficheros. Esta situaci\u00f3n es an\u00e1loga\u00a0a\u00a0la ejecuci\u00f3n en local de <a href=\"http:\/\/descartesjs.org\/documentacion\/?p=1642\">macros<\/a>.<\/p>\n<div id=\"attachment_2236\" style=\"width: 564px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/descartesjs.org\/documentacion\/wp-content\/uploads\/2014\/06\/script-ficheros.jpg\"><img aria-describedby=\"caption-attachment-2236\" class=\"wp-image-2236 size-full\" src=\"https:\/\/descartesjs.org\/documentacion\/wp-content\/uploads\/2014\/06\/script-ficheros.jpg\" alt=\"script para ficheros en ejecuci\u00f3n local type descartes\/vectorFile\" width=\"554\" height=\"474\" srcset=\"https:\/\/reddescartes.org\/documentacion\/wp-content\/uploads\/2014\/06\/script-ficheros.jpg 554w, https:\/\/reddescartes.org\/documentacion\/wp-content\/uploads\/2014\/06\/script-ficheros-300x256.jpg 300w\" sizes=\"(max-width: 554px) 100vw, 554px\" \/><\/a><p id=\"caption-attachment-2236\" class=\"wp-caption-text\">Scripts a embeber para que el int\u00e9rprete lea los ficheros en la definici\u00f3n cuando se efect\u00faa la ejecuci\u00f3n en local type descartes\/vectorFile<\/p><\/div>\n<\/div>\n<div style=\"text-align: left;\"><\/div>\n<div style=\"text-align: left;\">\u00a0Nota: La limitaci\u00f3n de lectura de ficheros en local es consecuencia de la forma en la que se lee el contenido de ficheros externos en DescartesJS, \u00e9sta es mediante XMLHttpRequest y este m\u00e9todo no garantiza la carga de archivos de forma local. Si se desea hacerlo funcionar en casos particulares es posible el uso de banderas en los navegadores (por ejemplo, en chrome activando\u00a0<a href=\"http:\/\/www.chrome-allow-file-access-from-file.com\/\"><span class=\"il\">allow<\/span>-file-access-from-<wbr \/>files<\/a>\u00a0o <a href=\"https:\/\/kb.mozillazine.org\/Links_to_local_pages_do_not_work\">an\u00e1logo en firefox<\/a>), pero ha de ser consciente que lleva asociado una relajaci\u00f3n en la seguridad de su sistema inform\u00e1tico personal.<\/div>\n<h4 style=\"text-align: left;\">Carga din\u00e1mica de un vector con la funci\u00f3n _GetValues_<\/h4>\n<p>Una posibilidad para efectuar la carga de un vector de manera din\u00e1mica, es decir, accediendo a diferentes ficheros seg\u00fan se desee es utilizando la funci\u00f3n _GetValues_ cuya sintaxis es<\/p>\n<p style=\"text-align: center;\">_GetValues_(<em>fichero<\/em>,<em>vector<\/em>)<\/p>\n<p style=\"text-align: left;\"><em>fichero<\/em> ser\u00e1 una cadena de caracteres entre comillas simples, por ejemplo &#8216;datos\/datos1.txt&#8217;, o una variable que contenga una cadena y que referencie el <em>path<\/em> localizador del archivo.<\/p>\n<p style=\"text-align: left;\"><em>vector<\/em> ser\u00e1 una cadena de caracteres entre comillas simples, por ejemplo &#8216;V&#8217;, 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\u00e1 dicha etiqueta.<\/p>\n<p style=\"text-align: left;\">En la escena siguiente (puede descargarla <a href=\"https:\/\/descartesjs.org\/repositorio\/Ficheros2_JS.zip\">desde aqu\u00ed<\/a>) se cargan los datos de un vector denominado\u00a0<strong>vect1\u00a0<\/strong>a partir de los datos almacenados en tres ficheros\u00a0&#8216;datos1a.txt&#8217;,\u00a0&#8216;datos2a.txt&#8217; y\u00a0&#8216;datos3a.txt&#8217;.<\/p>\n<p style=\"text-align: center;\">\n<!-- iframe plugin v.4.5 wordpress.org\/plugins\/iframe\/ -->\n<iframe src=\"https:\/\/descartesjs.org\/repositorio\/Ficheros2_JS\/indexGetValues.html\" width=\"480\" height=\"260\" scrolling=\"yes\" class=\"iframe-class\" frameborder=\"0\"><\/iframe>\n<\/p>\n<p style=\"text-align: left;\">En la opci\u00f3n \u00abLeer vector variables 1\u00bb el archivo usado es\u00a0filename1=&#8217;datos1a.txt&#8217; cuyo contenido es<\/p>\n<div id=\"attachment_2480\" style=\"width: 261px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/descartesjs.org\/documentacion\/wp-content\/uploads\/2014\/06\/datos1a.jpg\"><img aria-describedby=\"caption-attachment-2480\" class=\"size-full wp-image-2480\" src=\"https:\/\/descartesjs.org\/documentacion\/wp-content\/uploads\/2014\/06\/datos1a.jpg\" alt=\"datos1a.txt\" width=\"251\" height=\"217\" \/><\/a><p id=\"caption-attachment-2480\" class=\"wp-caption-text\">datos1a.txt<\/p><\/div>\n<p>y donde podemos observar la etiqueta &lt;r2&gt;<\/p>\n<p>An\u00e1logamente tenemos los archivos\u00a0filename2=&#8217;datos2a.txt&#8217; y\u00a0filename3=&#8217;datos3a.txt&#8217;<\/p>\n<div id=\"attachment_2481\" style=\"width: 452px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/descartesjs.org\/documentacion\/wp-content\/uploads\/2014\/06\/datos2a3a.jpg\"><img aria-describedby=\"caption-attachment-2481\" class=\"size-full wp-image-2481\" src=\"https:\/\/descartesjs.org\/documentacion\/wp-content\/uploads\/2014\/06\/datos2a3a.jpg\" alt=\"datos2a.txt y datos3a.txt\" width=\"442\" height=\"228\" srcset=\"https:\/\/reddescartes.org\/documentacion\/wp-content\/uploads\/2014\/06\/datos2a3a.jpg 442w, https:\/\/reddescartes.org\/documentacion\/wp-content\/uploads\/2014\/06\/datos2a3a-300x154.jpg 300w\" sizes=\"(max-width: 442px) 100vw, 442px\" \/><\/a><p id=\"caption-attachment-2481\" class=\"wp-caption-text\">datos2a.txt y datos3a.txt<\/p><\/div>\n<p style=\"text-align: left;\">\u00a0El c\u00f3digo que permite la lectura de esos archivos es el siguiente<\/p>\n<div id=\"attachment_2482\" style=\"width: 610px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/descartesjs.org\/documentacion\/wp-content\/uploads\/2014\/06\/vector_fichero3.jpg\"><img aria-describedby=\"caption-attachment-2482\" class=\"size-full wp-image-2482\" src=\"https:\/\/descartesjs.org\/documentacion\/wp-content\/uploads\/2014\/06\/vector_fichero3.jpg\" alt=\"C\u00f3digo para la lectura de ficheros\" width=\"600\" height=\"381\" srcset=\"https:\/\/reddescartes.org\/documentacion\/wp-content\/uploads\/2014\/06\/vector_fichero3.jpg 600w, https:\/\/reddescartes.org\/documentacion\/wp-content\/uploads\/2014\/06\/vector_fichero3-300x190.jpg 300w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/a><p id=\"caption-attachment-2482\" class=\"wp-caption-text\">C\u00f3digo para la lectura de ficheros<\/p><\/div>\n<p>En \u00e9l podemos observar como al seleccionar la primera opci\u00f3n del men\u00fa (menu=1) se accede a\u00a0_GetValues_(filename1,&#8217;r2&#8242;) donde filename1=&#8217;datos1a.txt&#8217; y en el contenido de ese archivo se usa la etiqueta &lt;r2&gt;.<\/p>\n<p style=\"text-align: left;\">Para la siguiente opci\u00f3n la llamada es _GetValues_(filename2, vectorv) donde\u00a0filename2=&#8217;datos2a.txt&#8217; y vectorv=&#8217;DATOSVECT&#8217; que es la etiqueta usada en dicho fichero.<\/p>\n<p style=\"text-align: left;\">Y en la tercera opci\u00f3n se usa _GetValues_(filename3, \u00bb) donde filename3=&#8217;datos3a.txt&#8217; y en vector se indica la cadena nula, es decir, que se ignore la etiqueta &lt;NoUsado&gt; especificada en datos3a.txt.<\/p>\n<p style=\"text-align: left;\">En cada uno de esos archivos se efect\u00faa una asignaci\u00f3n a las variables que se han denominado aux1, aux2, aux3 y aux4 que son las que en el c\u00f3digo de la escena se asignan a los elementos del vector vect1, es decir, que se usan como variables de paso.<\/p>\n<p style=\"text-align: left;\">Para el funcionamiento en local es necesario\u00a0incorporarlos con un script en la p\u00e1gina donde est\u00e1 embebida la escena. Por cada fichero se incluir\u00e1 un script de tipo \u00ab<strong>descartes\/archivo<\/strong>\u00ab. En la imagen siguiente puede verse c\u00f3mo se han incorporado en el c\u00f3digo los tres ficheros anteriores:<\/p>\n<div id=\"attachment_2567\" style=\"width: 413px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/descartesjs.org\/documentacion\/wp-content\/uploads\/2014\/06\/typearchivo.jpg\"><img aria-describedby=\"caption-attachment-2567\" class=\"size-full wp-image-2567\" src=\"https:\/\/descartesjs.org\/documentacion\/wp-content\/uploads\/2014\/06\/typearchivo.jpg\" alt=\"type descartes\/archivo\" width=\"403\" height=\"365\" srcset=\"https:\/\/reddescartes.org\/documentacion\/wp-content\/uploads\/2014\/06\/typearchivo.jpg 403w, https:\/\/reddescartes.org\/documentacion\/wp-content\/uploads\/2014\/06\/typearchivo-300x271.jpg 300w\" sizes=\"(max-width: 403px) 100vw, 403px\" \/><\/a><p id=\"caption-attachment-2567\" class=\"wp-caption-text\">type descartes\/archivo<\/p><\/div>\n<h4 style=\"text-align: left;\">Carga din\u00e1mica de un vector con la funci\u00f3n _Load_ y _StrToVector_<\/h4>\n<p>La sintaxis de la funci\u00f3n _Load_ es<\/p>\n<p style=\"text-align: center;\"><em>variable=<\/em>_Load_(<em>fichero<\/em>)<\/p>\n<p style=\"text-align: left;\">donde\u00a0<em>fichero <\/em>es una cadena de caracteres que proporciona la direcci\u00f3n donde se ubica el fichero a cargar y <em>variable\u00a0<\/em>es la que variable a la que se asigna el contenido de ese fichero como una cadena de caracteres.<\/p>\n<p style=\"text-align: left;\">Una vez asignado el contenido a dicha <em>variable<\/em>,\u00a0la funci\u00f3n _StrToVector_ (<em>variable,<\/em>&#8216;<i>vector<\/i>&#8216;) asigna los valores a cada elemento del vector etiquetado como\u00a0<em>vector<\/em>.<\/p>\n<p style=\"text-align: left;\">Hay que se\u00f1alar que el contenido del <em>fichero\u00a0<\/em>ha de contener una primera l\u00ednea con la etiqueta &lt;<em>vector&gt; <\/em>y finalizar con la etiqueta &lt;<em>\/vector<\/em>&gt;.<\/p>\n<p style=\"text-align: left;\">En la siguiente escena puede comprobar el funcionamiento de estas funciones (puede <a href=\"https:\/\/descartesjs.org\/repositorio\/VectorIO_JS.zip\">descargarse aqu\u00ed<\/a>).<\/p>\n<p style=\"text-align: left;\">\n<!-- iframe plugin v.4.5 wordpress.org\/plugins\/iframe\/ -->\n<iframe src=\"https:\/\/descartesjs.org\/repositorio\/VectorIO_JS\/_Vector_IO_.html\" width=\"620\" height=\"1020\" scrolling=\"yes\" class=\"iframe-class\" frameborder=\"0\"><\/iframe>\n<\/p>\n<p style=\"text-align: left;\">El archivo usado en la escena anterior es el siguiente:<\/p>\n<div id=\"attachment_2539\" style=\"width: 419px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/descartesjs.org\/documentacion\/wp-content\/uploads\/2014\/06\/vector_fichero6.jpg\"><img aria-describedby=\"caption-attachment-2539\" class=\"size-full wp-image-2539\" src=\"https:\/\/descartesjs.org\/documentacion\/wp-content\/uploads\/2014\/06\/vector_fichero6.jpg\" alt=\"Fichero que contiene los elementos de un vector \" width=\"409\" height=\"136\" srcset=\"https:\/\/reddescartes.org\/documentacion\/wp-content\/uploads\/2014\/06\/vector_fichero6.jpg 409w, https:\/\/reddescartes.org\/documentacion\/wp-content\/uploads\/2014\/06\/vector_fichero6-300x99.jpg 300w\" sizes=\"(max-width: 409px) 100vw, 409px\" \/><\/a><p id=\"caption-attachment-2539\" class=\"wp-caption-text\">Fichero que contiene los elementos de un vector<\/p><\/div>\n<p>en \u00e9l podemos observar las etiquetas y el script para inscrustarlo en el c\u00f3digo html para que sea accesible en local.<\/p>\n<h4 style=\"text-align: left;\">Carga din\u00e1mica de un vector con la funci\u00f3n _GetVector_<\/h4>\n<p>La sintaxis de esta funci\u00f3n es _GetVector_(<em>fichero<\/em>,&#8217;<em>vector<\/em>&#8216;) donde\u00a0<em>fichero<\/em>\u00a0es una cadena de caracteres que proporciona la direcci\u00f3n donde se ubica el fichero a cargar y\u00a0<em>vector<\/em> 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\u00e1 leyendo. Su efecto es equivalente a _Load_ y _StrToVector_ de la secci\u00f3n anterior. Tambi\u00e9n en la escena de esa secci\u00f3n puede observar el funcionamiento de esta funci\u00f3n.<\/p>\n<h4 style=\"text-align: left;\">Guardar vectores en un fichero<\/h4>\n<p>Para esta funcionalidad consulte el art\u00edculo <a href=\"https:\/\/descartesjs.org\/documentacion\/?p=2488\">Guardar ficheros<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>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\u00f3n del vector; otra es asignando los valores a trav\u00e9s de un algoritmo, especialmente en el caso de vectores de gran tama\u00f1o, mediante el que se pueden generar matem\u00e1ticamente y una \u00faltima opci\u00f3n es a trav\u00e9s de un fichero o archivo de texto. Carga est\u00e1tica con el par\u00e1metro archivo en la definici\u00f3n de un vector En la siguiente escena interactiva\u00a0hemos usado tres ficheros: el fichero paises.txt, que almacena<\/p>\n<a class=\"more-link\" rel=\"nofollow\" href=\"https:\/\/reddescartes.org\/documentacion\/ficheros-y-vectores\/\">[Leer m\u00e1s...]<\/a>","protected":false},"author":6,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[40],"tags":[114,86],"_links":{"self":[{"href":"https:\/\/reddescartes.org\/documentacion\/wp-json\/wp\/v2\/posts\/1804"}],"collection":[{"href":"https:\/\/reddescartes.org\/documentacion\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/reddescartes.org\/documentacion\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/reddescartes.org\/documentacion\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/reddescartes.org\/documentacion\/wp-json\/wp\/v2\/comments?post=1804"}],"version-history":[{"count":35,"href":"https:\/\/reddescartes.org\/documentacion\/wp-json\/wp\/v2\/posts\/1804\/revisions"}],"predecessor-version":[{"id":3501,"href":"https:\/\/reddescartes.org\/documentacion\/wp-json\/wp\/v2\/posts\/1804\/revisions\/3501"}],"wp:attachment":[{"href":"https:\/\/reddescartes.org\/documentacion\/wp-json\/wp\/v2\/media?parent=1804"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/reddescartes.org\/documentacion\/wp-json\/wp\/v2\/categories?post=1804"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/reddescartes.org\/documentacion\/wp-json\/wp\/v2\/tags?post=1804"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}