{"id":2520,"date":"2014-12-02T13:44:32","date_gmt":"2014-12-02T12:44:32","guid":{"rendered":"http:\/\/descartesjs.org\/documentacion\/?p=2520"},"modified":"2021-08-07T16:24:21","modified_gmt":"2021-08-07T15:24:21","slug":"ficheros-y-matrices","status":"publish","type":"post","link":"https:\/\/reddescartes.org\/documentacion\/ficheros-y-matrices\/","title":{"rendered":"Ficheros y matrices"},"content":{"rendered":"<p>En el apartado de definiciones, se documenta el tema de <a href=\"https:\/\/descartesjs.org\/documentacion\/?p=498\">matrices<\/a>, cuyos elementos tienen unos valores que se pueden asignar de varias maneras. Una primera es asignando los valores en la misma definici\u00f3n de la matriz; otra es asignando los valores a trav\u00e9s de un algoritmo lo cual es especialmente necesario y recomendable en el caso de matrices de gran tama\u00f1o que puedan generarse 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 una matriz<\/h4>\n<p>El objeto matriz cuenta con un par\u00e1metro que est\u00e1 etiquetado como <em>archivo, <\/em>pero NO EST\u00c1 OPERATIVO, en pr\u00f3ximas versiones del editor de configuraci\u00f3n \u00e9ste campo no aparecer\u00e1.<\/p>\n<div id=\"attachment_2581\" style=\"width: 610px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/descartesjs.org\/documentacion\/wp-content\/uploads\/2014\/12\/matrizf.jpg\"><img aria-describedby=\"caption-attachment-2581\" class=\"size-full wp-image-2581\" src=\"https:\/\/descartesjs.org\/documentacion\/wp-content\/uploads\/2014\/12\/matrizf.jpg\" alt=\"Definici\u00f3n de una matriz mediante un archivo\" width=\"600\" height=\"382\" srcset=\"https:\/\/reddescartes.org\/documentacion\/wp-content\/uploads\/2014\/12\/matrizf.jpg 600w, https:\/\/reddescartes.org\/documentacion\/wp-content\/uploads\/2014\/12\/matrizf-300x191.jpg 300w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/a><p id=\"caption-attachment-2581\" class=\"wp-caption-text\">Definici\u00f3n de una matriz mediante un archivo<\/p><\/div>\n<p style=\"text-align: left;\">La carga de datos en una matriz a partir de ficheros se efect\u00faa siempre de manera din\u00e1mica utilizando las funciones que se describen a continuaci\u00f3n.<\/p>\n<h4>Carga din\u00e1mica de una matriz con la funci\u00f3n _GetValues_<\/h4>\n<p>Una posibilidad para efectuar la carga de una matriz 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>matriz<\/em>)<\/p>\n<p><em>fichero<\/em> ser\u00e1 una cadena de caracteres entre comillas simples, por ejemplo \u2018datos\/datos1.txt\u2019, o una variable que contenga una cadena y que referencie el <em>path<\/em> localizador del archivo.<\/p>\n<p><i>matriz<\/i> ser\u00e1 una cadena de caracteres entre comillas simples, por ejemplo \u2018matriz1\u2019, 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>Esta opci\u00f3n es igual que la carga din\u00e1mica de un vector (consultar <a href=\"https:\/\/descartesjs.org\/documentacion\/?p=1804\">este art\u00edculo<\/a>) y lo \u00fanico que var\u00eda es la asignaci\u00f3n que se realiza en este caso a los elementos de una matriz y en el otro sob los elementos de un vector<\/p>\n<p>En la escena siguiente (puede descargarla <a href=\"https:\/\/descartesjs.org\/repositorio\/EjemMatriz_JS.zip\">desde aqu\u00ed<\/a>) se cargan los datos de una matriz denominada matr<strong>1\u00a0<\/strong>a partir de los datos almacenados en tres ficheros\u00a0\u2018datos1a.txt\u2019,\u00a0\u2018datos2a.txt\u2019 y\u00a0\u2018datos3a.txt\u2019.<\/p>\n<p style=\"text-align: center;\">\n<!-- iframe plugin v.4.5 wordpress.org\/plugins\/iframe\/ -->\n<iframe src=\"https:\/\/descartesjs.org\/repositorio\/EjemMatriz_JS\/GetValues.html\" width=\"670\" 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_2548\" style=\"width: 242px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/descartesjs.org\/documentacion\/wp-content\/uploads\/2014\/12\/datosm1a.jpg\"><img aria-describedby=\"caption-attachment-2548\" class=\"size-full wp-image-2548\" src=\"https:\/\/descartesjs.org\/documentacion\/wp-content\/uploads\/2014\/12\/datosm1a.jpg\" alt=\"fichero datos1a.txt\" width=\"232\" height=\"252\" \/><\/a><p id=\"caption-attachment-2548\" class=\"wp-caption-text\">fichero datos1a.txt<\/p><\/div>\n<p>y donde podemos observar la etiqueta &lt;matr1&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_2549\" style=\"width: 463px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/descartesjs.org\/documentacion\/wp-content\/uploads\/2014\/12\/datosm2y3.jpg\"><img aria-describedby=\"caption-attachment-2549\" class=\"size-full wp-image-2549\" src=\"https:\/\/descartesjs.org\/documentacion\/wp-content\/uploads\/2014\/12\/datosm2y3.jpg\" alt=\"ficheros datos2a.txt y datos3a.txt\" width=\"453\" height=\"262\" srcset=\"https:\/\/reddescartes.org\/documentacion\/wp-content\/uploads\/2014\/12\/datosm2y3.jpg 453w, https:\/\/reddescartes.org\/documentacion\/wp-content\/uploads\/2014\/12\/datosm2y3-300x173.jpg 300w\" sizes=\"(max-width: 453px) 100vw, 453px\" \/><\/a><p id=\"caption-attachment-2549\" class=\"wp-caption-text\">ficheros datos2a.txt y datos3a.txt<\/p><\/div>\n<p>El c\u00f3digo que permite la lectura de esos archivos es el siguiente<\/p>\n<div id=\"attachment_2551\" style=\"width: 610px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/descartesjs.org\/documentacion\/wp-content\/uploads\/2014\/12\/matrzGetValues.jpg\"><img aria-describedby=\"caption-attachment-2551\" class=\"size-full wp-image-2551\" src=\"https:\/\/descartesjs.org\/documentacion\/wp-content\/uploads\/2014\/12\/matrzGetValues.jpg\" alt=\"Lectura de una matriz desde un fichero con _GetValues_\" width=\"600\" height=\"381\" srcset=\"https:\/\/reddescartes.org\/documentacion\/wp-content\/uploads\/2014\/12\/matrzGetValues.jpg 600w, https:\/\/reddescartes.org\/documentacion\/wp-content\/uploads\/2014\/12\/matrzGetValues-300x190.jpg 300w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/a><p id=\"caption-attachment-2551\" class=\"wp-caption-text\">Lectura de una matriz desde un fichero con _GetValues_<\/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,\u2019matr1\u2032) donde filename1=\u2019datos1a.txt\u2019 y en el contenido de ese archivo se usa la etiqueta &lt;matr1&gt;.<\/p>\n<p>Para la siguiente opci\u00f3n la llamada es _GetValues_(filename2, &#8216;matr1&#8217;) donde\u00a0filename2=\u2019datos2a.txt\u2019 y\u00a0la etiqueta\u00a0es tambi\u00e9n &#8216;matr1&#8217; que coincide con\u00a0la etiqueta usada en dicho fichero (podr\u00eda ser tambi\u00e9n una variable cuya valor fuera &#8216;matr1&#8217;.<\/p>\n<p>Y en la tercera opci\u00f3n se usa _GetValues_(filename3, \u201d) donde filename3=\u2019datos3a.txt\u2019 y en <em>matriz<\/em>\u00a0se indica la cadena nula, es decir, que se ignore la etiqueta &lt;NoUsado&gt; especificada en datos3a.txt (podr\u00eda ser otra etiqueta no necesariamente NoUsado).<\/p>\n<p>En cada uno de esos archivos se efect\u00faa una asignaci\u00f3n a las variables que se han denominado aux1, aux2, aux3, aux4, aux5 y aux6 que son las que en el c\u00f3digo de la escena se asignan a los elementos de la matriz matr11, es decir, que se usan como variables de paso.<\/p>\n<h4>Carga din\u00e1mica de una matriz con la funci\u00f3n _Load_ y _StrToMatrix_<\/h4>\n<p>La sintaxis de la funci\u00f3n _Load_ es<\/p>\n<p><em>variable=<\/em>_Load_(<em>fichero<\/em>)<\/p>\n<p>donde\u00a0<em>fichero <\/em>es una cadena de caracteres que proporciona la direcci\u00f3n donde se ubica el fichero a cargar y\u00a0<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 _StrToMatrix_ (<em>variable,<\/em>\u2018<em>matriz<\/em>\u2018) asigna los valores a cada elemento de la matriz etiquetada como\u00a0matriz.<\/p>\n<p>Hay que se\u00f1alar que el contenido del <em>fichero\u00a0<\/em>ha de contener una primera l\u00ednea con la etiqueta &lt;<em>matriz&gt; <\/em>y finalizar con la etiqueta &lt;<em>\/matriz<\/em>&gt;.<\/p>\n<p>En la siguiente escena puede comprobar el funcionamiento de estas funciones (puede <a href=\"https:\/\/descartesjs.org\/repositorio\/Matriz_IO_JS.zip\">descargarse aqu\u00ed<\/a>).<\/p>\n<p style=\"text-align: center;\">\n<!-- iframe plugin v.4.5 wordpress.org\/plugins\/iframe\/ -->\n<iframe src=\"https:\/\/descartesjs.org\/repositorio\/Matriz_IO_JS\/_Matriz_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_2562\" style=\"width: 413px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/descartesjs.org\/documentacion\/wp-content\/uploads\/2014\/12\/matrizfichero.jpg\"><img aria-describedby=\"caption-attachment-2562\" class=\"size-full wp-image-2562\" src=\"https:\/\/descartesjs.org\/documentacion\/wp-content\/uploads\/2014\/12\/matrizfichero.jpg\" alt=\"fichero que contiene los elementos de una matriz\" width=\"403\" height=\"133\" srcset=\"https:\/\/reddescartes.org\/documentacion\/wp-content\/uploads\/2014\/12\/matrizfichero.jpg 403w, https:\/\/reddescartes.org\/documentacion\/wp-content\/uploads\/2014\/12\/matrizfichero-300x99.jpg 300w\" sizes=\"(max-width: 403px) 100vw, 403px\" \/><\/a><p id=\"caption-attachment-2562\" class=\"wp-caption-text\">fichero que contiene los elementos de una matriz<\/p><\/div>\n<p>en \u00e9l podemos observar las etiquetas y el script para inscrustarlo en el c\u00f3digo html y\u00a0que sea accesible en local.<\/p>\n<h4>Carga din\u00e1mica de un vector con la funci\u00f3n _GetMatrix_<\/h4>\n<p>La sintaxis de esta funci\u00f3n es _GetMatrix_(<em>fichero<\/em>,\u2019<em>matriz<\/em>\u2018) donde\u00a0<em>fichero<\/em>\u00a0es una cadena de caracteres que proporciona la direcci\u00f3n donde se ubica el fichero a cargar y <em>matriz<\/em>\u00a0es la etiqueta de la matriz en la 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 _StrToMatrix_ 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>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 matrices, cuyos elementos tienen unos valores que se pueden asignar de varias maneras. Una primera es asignando los valores en la misma definici\u00f3n de la matriz; otra es asignando los valores a trav\u00e9s de un algoritmo lo cual es especialmente necesario y recomendable en el caso de matrices de gran tama\u00f1o que puedan generarse 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 una matriz El objeto matriz cuenta con un par\u00e1metro que est\u00e1<\/p>\n<a class=\"more-link\" rel=\"nofollow\" href=\"https:\/\/reddescartes.org\/documentacion\/ficheros-y-matrices\/\">[Leer m\u00e1s...]<\/a>","protected":false},"author":9,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[40],"tags":[],"_links":{"self":[{"href":"https:\/\/reddescartes.org\/documentacion\/wp-json\/wp\/v2\/posts\/2520"}],"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\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/reddescartes.org\/documentacion\/wp-json\/wp\/v2\/comments?post=2520"}],"version-history":[{"count":31,"href":"https:\/\/reddescartes.org\/documentacion\/wp-json\/wp\/v2\/posts\/2520\/revisions"}],"predecessor-version":[{"id":3519,"href":"https:\/\/reddescartes.org\/documentacion\/wp-json\/wp\/v2\/posts\/2520\/revisions\/3519"}],"wp:attachment":[{"href":"https:\/\/reddescartes.org\/documentacion\/wp-json\/wp\/v2\/media?parent=2520"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/reddescartes.org\/documentacion\/wp-json\/wp\/v2\/categories?post=2520"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/reddescartes.org\/documentacion\/wp-json\/wp\/v2\/tags?post=2520"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}