{"id":507,"date":"2014-04-01T22:03:30","date_gmt":"2014-04-01T21:03:30","guid":{"rendered":"http:\/\/descartesjs.org\/documentacion\/?p=507"},"modified":"2021-08-08T12:40:49","modified_gmt":"2021-08-08T11:40:49","slug":"calculos","status":"publish","type":"post","link":"https:\/\/reddescartes.org\/documentacion\/calculos\/","title":{"rendered":"CALCULOS"},"content":{"rendered":"<p align=\"justify\"><strong>CALCULOS<\/strong> <strong>\u00a0<\/strong>es un\u00a0<a href=\"https:\/\/descartesjs.org\/documentacion\/?p=1898\">algoritmo<\/a>\u00a0incluido en todas las escenas a partir de la versi\u00f3n 5 de Descartes. \u00c9ste\u00a0permite programar procesos de c\u00e1lculo m\u00e1s o menos complejos que se ejecutar\u00e1n cada vez que haya un cambio de un control en la escena, ya sea num\u00e9rico o gr\u00e1fico.<\/p>\n<p align=\"justify\">En la siguiente figura se muestra el panel de configuraci\u00f3n asociado a <strong>CALCULOS<\/strong>.<\/p>\n<p><a href=\"https:\/\/descartesjs.org\/documentacion\/wp-content\/uploads\/2014\/04\/calculos.png\"><img class=\"aligncenter size-full wp-image-508\" src=\"https:\/\/descartesjs.org\/documentacion\/wp-content\/uploads\/2014\/04\/calculos.png\" alt=\"calculos\" width=\"850\" height=\"540\" srcset=\"https:\/\/reddescartes.org\/documentacion\/wp-content\/uploads\/2014\/04\/calculos.png 850w, https:\/\/reddescartes.org\/documentacion\/wp-content\/uploads\/2014\/04\/calculos-300x190.png 300w\" sizes=\"(max-width: 850px) 100vw, 850px\" \/><\/a><\/p>\n<p>El panel tiene un campo de texto etiquetado como <strong>inicio<\/strong>, un \u00e1rea de texto etiquetada como <strong>hacer<\/strong> y otro campo de texto etiquetado como <strong>mientras<\/strong>.<\/p>\n<ul>\n<li><strong>inicio<\/strong>. En este campo se puede escribir asignaciones y llamadas a algoritmos separadas por ; Todo lo que haya en este campo se ejecuta al inicio del c\u00e1lculo.<\/li>\n<li><strong>hacer<\/strong>. En este campo se pueden escribir\u00a0 asignaciones y llamadas a algoritmos separadas por saltos de l\u00ednea. Lo que hay en \u00abhacer\u00bb se ejecuta repetidamente siempre que la condici\u00f3n \u00abmientras\u00bb sea v\u00e1lida.<\/li>\n<li><strong>mientras<\/strong>. En el campo \u00abmientras\u00bb se debe escribir una expresi\u00f3n booleana. Lo que hay en \u00abhacer\u00bb se ejecuta repetidamente mientras la condici\u00f3n \u00abmientras\u00bb sea v\u00e1lida.<\/li>\n<\/ul>\n<p align=\"justify\">El ejecuci\u00f3n del algoritmo se lleva a cabo de la siguiente manera:<\/p>\n<ul>\n<li>Paso 1. Se realiza las asignaciones y llamadas a otros algoritmos que se indican en <strong>inicio<\/strong>;<\/li>\n<li>Paso 2. Se realiza las asignaciones y llamadas a otros algoritmos indicadas en <strong>hacer<\/strong><\/li>\n<li>Paso 3. Se comprueba si se cumple la condici\u00f3n contenida en <strong>mientras<\/strong>.\n<ul>\n<li>Si la condici\u00f3n <strong>mientras<\/strong> se cumple entonces se vuelve al paso 2, esto es se volver\u00e1 a\u00a0<em>ejecutar<\/em> <strong>hacer<\/strong> y a verificar la condici\u00f3n <strong>mientras<\/strong>.<\/li>\n<li>Este proceso contin\u00faa hasta que la condici\u00f3n <strong>mientras<\/strong> deja de cumplirse o se ha llegado a 10000 repeticiones (este l\u00edmite es una v\u00e1lvula de seguridad para proteger al autor y al usuario de errores que pudiesen bloquear el navegador).<\/li>\n<li>Si la condici\u00f3n <strong>mientras<\/strong> se deja en blanco el algoritmo realiza las asignaciones en <strong>hacer<\/strong> una sola vez.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p align=\"justify\">La estructura de los <strong>algoritmos<\/strong> de Descartes es en realidad un bucle de programaci\u00f3n, que corresponde al <strong>do&#8230;while<\/strong> de los lenguajes <em><strong>C<\/strong><\/em> y <em><strong>Java<\/strong><\/em> y al <strong>repeat&#8230;while<\/strong> de <em><strong>Pascal<\/strong><\/em> .<\/p>\n<p align=\"justify\">Para realizar una asignaci\u00f3n condicional se puede utilizar la construcci\u00f3n:\u00a0 <strong>A?a:b <\/strong>donde <strong>A<\/strong> es una expresi\u00f3n booleana y<strong> a<\/strong> y<strong> b<\/strong> son los dos valores que se asignar\u00e1n seg\u00fan se cumpla o no la condici\u00f3n <strong>A<\/strong>. Por ejemplo<\/p>\n<p style=\"text-align: center;\" align=\"justify\"><strong>y=(x&gt;0)?sen(2*pi*x):0<\/strong><\/p>\n<p align=\"justify\">asigna a<strong> y<\/strong> el valor <strong>sen(2+pi*x)<\/strong> si <strong>x&gt;0<\/strong> y asigna 0 si <strong>x&lt;=0<\/strong>. Esta construcci\u00f3n corresponde (parcialmente) al <strong>if&#8230;else..<\/strong>.<span style=\"font-family: Courier New;\"><small><strong>\u00a0<\/strong><\/small><\/span> de los lenguajes de programaci\u00f3n.<\/p>\n<p align=\"justify\">La combinaci\u00f3n de bucles\u00a0 <strong>inicio<\/strong> &#8211; <strong>hacer<\/strong> &#8211; <strong>mientras<\/strong> , las asignaciones condicionales <strong>A?a:b<\/strong> y la posibilidad de llamar algoritmos desde <strong>CALCULOS<\/strong> ofrece muchas posibilidades para la programaci\u00f3n de procesos de c\u00e1lculo relativamente complejos.<\/p>\n<p align=\"justify\">En la siguiente escena se ha programado en <strong>CALCULOS<\/strong> el algoritmo de Euclides para obtener el m\u00e1ximo com\u00fan divisor y se representa gr\u00e1ficamente la justificaci\u00f3n de este algoritmo.<\/p>\n<p style=\"text-align: center;\" align=\"justify\">\n<!-- iframe plugin v.4.5 wordpress.org\/plugins\/iframe\/ -->\n<iframe src=\"https:\/\/descartesjs.org\/repositorio\/EjCalcula_JS\/\" width=\"730\" height=\"580\" scrolling=\"yes\" class=\"iframe-class\" frameborder=\"0\"><\/iframe>\n<\/p>\n<p style=\"text-align: center;\" align=\"justify\">(Puede descargar esta escena desde <a href=\"https:\/\/descartesjs.org\/repositorio\/EjCalcula_JS.zip\">este enlace<\/a>)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>CALCULOS \u00a0es un\u00a0algoritmo\u00a0incluido en todas las escenas a partir de la versi\u00f3n 5 de Descartes. \u00c9ste\u00a0permite programar procesos de c\u00e1lculo m\u00e1s o menos complejos que se ejecutar\u00e1n cada vez que haya un cambio de un control en la escena, ya sea num\u00e9rico o gr\u00e1fico. En la siguiente figura se muestra el panel de configuraci\u00f3n asociado a CALCULOS. El panel tiene un campo de texto etiquetado como inicio, un \u00e1rea de texto etiquetada como hacer y otro campo de texto etiquetado como mientras. inicio. En este campo se puede escribir asignaciones y llamadas a algoritmos separadas por ; Todo lo que<\/p>\n<a class=\"more-link\" rel=\"nofollow\" href=\"https:\/\/reddescartes.org\/documentacion\/calculos\/\">[Leer m\u00e1s...]<\/a>","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[37],"tags":[54,53],"_links":{"self":[{"href":"https:\/\/reddescartes.org\/documentacion\/wp-json\/wp\/v2\/posts\/507"}],"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\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/reddescartes.org\/documentacion\/wp-json\/wp\/v2\/comments?post=507"}],"version-history":[{"count":10,"href":"https:\/\/reddescartes.org\/documentacion\/wp-json\/wp\/v2\/posts\/507\/revisions"}],"predecessor-version":[{"id":3542,"href":"https:\/\/reddescartes.org\/documentacion\/wp-json\/wp\/v2\/posts\/507\/revisions\/3542"}],"wp:attachment":[{"href":"https:\/\/reddescartes.org\/documentacion\/wp-json\/wp\/v2\/media?parent=507"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/reddescartes.org\/documentacion\/wp-json\/wp\/v2\/categories?post=507"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/reddescartes.org\/documentacion\/wp-json\/wp\/v2\/tags?post=507"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}