{"id":1958,"date":"2019-07-10T12:54:27","date_gmt":"2019-07-10T10:54:27","guid":{"rendered":"http:\/\/disseny-test.uoc.edu\/materials\/programacio\/?page_id=1958"},"modified":"2019-08-17T13:25:21","modified_gmt":"2019-08-17T11:25:21","slug":"2-3-2-condicionales","status":"publish","type":"page","link":"http:\/\/disseny-test.uoc.edu\/materials\/programacio\/es\/2-3-2-condicionales\/","title":{"rendered":"2.3.2. Condicionales"},"content":{"rendered":"<p>A pesar de que se volver\u00e1 a ver m\u00e1s adelante en el libro, vamos a ver una instrucci\u00f3n que nos permitir\u00e1 seleccionar entre dos opciones: la instrucci\u00f3n <strong>condicional<\/strong>.<\/p>\n<div class=\"featured featured-blue\"><p>Todos sabemos qu\u00e9 es una condici\u00f3n: es aquello que se tiene que cumplir para poder tener aquello otro.<\/p>\n<\/div>\n<p>La instrucci\u00f3n condicional es el <strong><span style=\"font-family: Courier, Arial;\">if<\/span><\/strong> y la podemos usar de dos maneras diferentes. La sintaxis de la primera manera es la siguiente:<\/p>\n<pre>if (condici\u00f3n) {\r\n  \/\/ instrucciones a hacer si se cumple la condici\u00f3n\r\n}<\/pre>\n<p>Vamos a ver un ejemplo:<\/p>\n<pre>var figura = true;\r\n\r\nfunction setup() {\r\n  createCanvas(400, 400);\r\n}\r\n\r\nfunction draw() {\r\n  background(200);\r\n\tif (figura == true) {\r\n\t\tellipse(200,200,100,100);\r\n\t}\r\n}<\/pre>\n<p>Este c\u00f3digo dibuja un c\u00edrculo si la variable <span style=\"font-family: Courier, Arial;\">figura<\/span> guarda el valor <span style=\"font-family: Courier, Arial;\">true<\/span>. Probad este c\u00f3digo y comprobad qu\u00e9 pasa si en vez de <span style=\"font-family: Courier, Arial;\">true<\/span> almacenamos <span style=\"font-family: Courier, Arial;\">false<\/span> en la variable <span style=\"font-family: Courier, Arial;\">figura<\/span>.<\/p>\n<p>La segunda sintaxis de la instrucci\u00f3n\u00a0<strong><span style=\"font-family: Courier, Arial;\">if<\/span><\/strong> es esta:<\/p>\n<pre>if (condici\u00f3n) {\r\n  \/\/ <span style=\"color: #4a86e8;\">instrucciones a hacer <strong>si<\/strong> se cumple la condici\u00f3n<\/span>\r\n} else {\r\n  \/\/ <span style=\"color: red;\">instrucciones a hacer <strong>si no<\/strong> se cumple la condici\u00f3n<\/span>\r\n}<\/pre>\n<p>En este caso, si se cumple la condici\u00f3n, entonces hacemos las instrucciones que tenemos en azul. Y si no se cumple, las instrucciones que tenemos en rojo.<\/p>\n<p>Ahora modificaremos el ejemplo anterior haciendo que se tenga que escoger entre un c\u00edrculo y un cuadrado:<\/p>\n<pre>var figura = \"c\u00edrculo\";\r\n\r\nfunction setup() {\r\n  createCanvas(400, 400);\r\n}\r\n\r\nfunction draw() {\r\n  background(200);\r\n\tif (figura == \"c\u00edrculo\") {\r\n\t\tellipse(200,200,100,100);\r\n\t} else {\r\n\t\trect(150,150,100,100);\r\n\t}\r\n}<\/pre>\n<p>En este caso, si el texto guardado en la variable <span style=\"font-family: Courier, Arial;\">figura<\/span> es <strong><span style=\"font-family: Courier, Arial;\">\u00ab<\/span><\/strong><span style=\"font-family: Courier, Arial;\">c\u00edrculo<\/span><strong><span style=\"font-family: Courier, Arial;\">\u00ab<\/span><\/strong>\u00a0entonces se dibujar\u00e1 un c\u00edrculo. Y si es cualquier otra cosa, dibujar\u00e1 un cuadrado. Haced la prueba, copiad este c\u00f3digo en el editor y probad a cambiar <span style=\"font-family: Courier, Arial;\">\u00abc\u00edrculo\u00bb<\/span> por cualquier otra cosa.<\/p>\n<p>Hemos visto las dos sintaxis que tiene la instrucci\u00f3n\u00a0<strong><span style=\"font-family: Courier, Arial;\">if<\/span><\/strong>, pero, \u00bfc\u00f3mo lo podemos hacer si lo que queremos es que si en la figura hay \u00abc\u00edrculo\u00bb dibuje un c\u00edrculo, si hay \u00abcuadrado\u00bb dibuje un cuadrado y si no hay nada, que no dibuje nada? Lo podemos hacer con dos <strong><span style=\"font-family: Courier, Arial;\">if<\/span><\/strong> simples (la primera versi\u00f3n). \u00bfLo prob\u00e1is? Al final de este reto ten\u00e9is una posible soluci\u00f3n.<\/p>\n<div class=\"featured featured-blue\"><p><strong>Nota<\/strong>: En estos \u00faltimos ejemplos hemos trabajado con tres tipos de datos diferentes: n\u00fameros, textos y valores l\u00f3gicos (<em>true\/false<\/em>). Los valores num\u00e9ricos y l\u00f3gicos se escriben tal cual, pero los textos se escriben entre comillas\u00a0<span style=\"font-family: Courier, Arial;\">\u00ab\u00bb<\/span> para poderlos diferenciar de los nombres de variables.<\/p>\n<\/div>\n<h2><strong>Otro ejemplo con la instrucci\u00f3n <span style=\"font-family: Courier, Arial;\">for<\/span><\/strong><\/h2>\n<p>Vamos a hacer un peque\u00f1o ejemplo que explicaremos paso a paso. El objetivo es crear este cuadrado pintado con un degradado de grises. El cuadro gris m\u00e1s grande es el <em>canvas<\/em>. Y lo que pintaremos es el degradado.<\/p>\n<p><img loading=\"lazy\" class=\"alignnone size-full wp-image-234\" src=\"http:\/\/disseny-test.uoc.edu\/materials\/programacio\/wp-content\/uploads\/sites\/17\/2019\/07\/PID_00258586_2_009.jpg\" alt=\"\" width=\"400\" height=\"402\" srcset=\"http:\/\/disseny-test.uoc.edu\/materials\/programacio\/wp-content\/uploads\/sites\/17\/2019\/07\/PID_00258586_2_009.jpg 400w, http:\/\/disseny-test.uoc.edu\/materials\/programacio\/wp-content\/uploads\/sites\/17\/2019\/07\/PID_00258586_2_009-150x150.jpg 150w\" sizes=\"(max-width: 400px) 100vw, 400px\" \/><\/p>\n<p>Lo que haremos primero es crear dos variables que nos indiquen d\u00f3nde empezamos a dibujar el cuadro. Tendremos que tener en cuenta las medidas del <em>canvas<\/em>:<\/p>\n<pre>var xIni = 100, yIni = 100;\r\n\r\nfunction setup() {\r\n  createCanvas(480, 480);\r\n}<\/pre>\n<p>El <em>canvas<\/em> ser\u00e1 un cuadrado de 480 p\u00edxeles de anchura. A la <strong>x<\/strong> inicial y la <em>i<\/em> inicial les hemos asignado un valor de 100 p\u00edxeles. Si os fij\u00e1is en la imagen, podr\u00edamos centrar m\u00e1s el cuadro dentro del <em>canvas<\/em>. \u00bfC\u00f3mo lo har\u00edais?<\/p>\n<p>Para dibujar el degradado, lo que haremos ser\u00e1 pintar <strong>256 l\u00edneas verticales<\/strong> cada una de un color desde el 0 (negro) hasta el 255 (blanco). Para determinar de qu\u00e9 color se pinta una l\u00ednea, usaremos la funci\u00f3n\u00a0<a href=\"https:\/\/p5js.org\/reference\/#\/p5\/stroke\" target=\"_blank\" rel=\"noopener\"><span style=\"font-family: Courier, Arial;\">stroke()<\/span><\/a>.<\/p>\n<p>Por lo tanto, queremos repetir una misma instrucci\u00f3n (pintar una l\u00ednea), cambiando su posici\u00f3n\u00a0<strong>x<\/strong> y su color. Como sabemos el n\u00famero inicial (0) y el final (255) de los colores, podemos empezar por aqu\u00ed y escribir la\u00a0instrucci\u00f3n\u00a0<span style=\"font-family: Courier, Arial;\">for<\/span> correspondiente:<\/p>\n<pre>for (var i=0; i&lt;=255; i++ ) {<\/pre>\n<p>Vamos desde 0 hasta 255 con incrementos de uno.<\/p>\n<div class=\"featured featured-blue\"><p><strong>Nota<\/strong>: <em>i<\/em>++ es equivalente a escribir <em>i<\/em> = <em>i<\/em> + 1. Pero es m\u00e1s corto poner <em>i<\/em>++.<\/p>\n<\/div>\n<p>El siguiente paso que tenemos que hacer es, dentro de la repetici\u00f3n, escoger el color. Pero esto es muy f\u00e1cil:<\/p>\n<pre>stroke(i);<\/pre>\n<p>Y nos queda un punto, algo m\u00e1s complicado, que es dibujar las l\u00edneas. Pensemos un poco. Primero, hemos dicho que las l\u00edneas son verticales, por lo tanto las <strong>y<\/strong> (inicial y final) no cambian nunca, siempre son las mismas <span style=\"font-family: Courier, Arial;\">yIni<\/span> e <span style=\"font-family: Courier, Arial;\">yIni+256<\/span>, porque como queremos hacer un cuadrado y sabemos que dibujaremos 256 l\u00edneas (una de cada color), la altura de las l\u00edneas tambi\u00e9n tiene que ser de 256 p\u00edxeles.<\/p>\n<p>Ahora nos queda determinar c\u00f3mo ser\u00e1n las <strong>x<\/strong>. Cada l\u00ednea empezar\u00e1 y acabar\u00e1 en la misma\u00a0<strong>x<\/strong> (es una l\u00ednea vertical). La primera l\u00ednea que dibujamos estar\u00e1 en la posici\u00f3n <span style=\"font-family: Courier, Arial;\">xIni<\/span>, la segunda 1 p\u00edxel m\u00e1s a la derecha, la tercera 2 p\u00edxeles m\u00e1s a la derecha que la primera y as\u00ed sucesivamente. La primera l\u00ednea la dibujaremos cuando la variable <em>i<\/em> sea 0, la segunda cuando sea 1 y la tercera cuando sea 2. \u00bfPod\u00e9is ver la relaci\u00f3n? S\u00ed, <span style=\"font-family: Courier, Arial;\">xIni+i<\/span> ser\u00e1 la posici\u00f3n donde pintaremos cada l\u00ednea:<\/p>\n<pre>line(xIni+i, yIni, xIni+i, yIni+256);<\/pre>\n<p>El programa completo quedar\u00e1 as\u00ed:<\/p>\n<pre>var xIni = 100, yIni = 100;\r\n\r\nfunction setup() {\r\n  createCanvas(480, 480);\r\n}\r\n\r\nfunction draw() {\r\n  background(204);\r\n  for (var i=0; i&lt;=255; i++ ) {\r\n\tstroke(i);\r\n\tline(xIni+i,yIni,xIni+i,yIni+256);\r\n  }\r\n}<\/pre>\n<h2>Ejercicios<\/h2>\n<p>A partir del ejemplo, intentad hacer los siguientes cuadros, que solo requieren peque\u00f1os cambios en el programa anterior:<\/p>\n<p><img loading=\"lazy\" class=\"alignnone wp-image-2089 size-full\" src=\"http:\/\/disseny-test.uoc.edu\/materials\/programacio\/wp-content\/uploads\/sites\/17\/2019\/07\/PID_00258587_2_010.jpg\" alt=\"\" width=\"727\" height=\"336\" srcset=\"http:\/\/disseny-test.uoc.edu\/materials\/programacio\/wp-content\/uploads\/sites\/17\/2019\/07\/PID_00258587_2_010.jpg 727w, http:\/\/disseny-test.uoc.edu\/materials\/programacio\/wp-content\/uploads\/sites\/17\/2019\/07\/PID_00258587_2_010-300x139.jpg 300w\" sizes=\"(max-width: 727px) 100vw, 727px\" \/><\/p>\n<p>Tambi\u00e9n pod\u00e9is intentar hacer este otro, a pesar de que hay que hacer dos repeticiones; la primera es el tri\u00e1ngulo degradado que acabamos de hacer. La segunda\u2026<\/p>\n<p><img loading=\"lazy\" class=\"alignnone wp-image-236\" src=\"http:\/\/disseny-test.uoc.edu\/materials\/programacio\/wp-content\/uploads\/sites\/17\/2019\/07\/PID_00258586_2_011.jpg\" alt=\"\" width=\"236\" height=\"236\" srcset=\"http:\/\/disseny-test.uoc.edu\/materials\/programacio\/wp-content\/uploads\/sites\/17\/2019\/07\/PID_00258586_2_011.jpg 242w, http:\/\/disseny-test.uoc.edu\/materials\/programacio\/wp-content\/uploads\/sites\/17\/2019\/07\/PID_00258586_2_011-150x150.jpg 150w\" sizes=\"(max-width: 236px) 100vw, 236px\" \/><\/p>\n<p>Encontrar\u00e9is las soluciones al final de este reto.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A pesar de que se volver\u00e1 a ver m\u00e1s adelante en el libro, vamos a ver una instrucci\u00f3n que nos permitir\u00e1 seleccionar entre dos opciones: la instrucci\u00f3n condicional. La instrucci\u00f3n condicional es el if y la podemos usar de dos maneras diferentes. La sintaxis de la primera manera es la siguiente: if (condici\u00f3n) { \/\/ [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"inline_featured_image":false},"acf":[],"_links":{"self":[{"href":"http:\/\/disseny-test.uoc.edu\/materials\/programacio\/es\/wp-json\/wp\/v2\/pages\/1958"}],"collection":[{"href":"http:\/\/disseny-test.uoc.edu\/materials\/programacio\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/disseny-test.uoc.edu\/materials\/programacio\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/disseny-test.uoc.edu\/materials\/programacio\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/disseny-test.uoc.edu\/materials\/programacio\/es\/wp-json\/wp\/v2\/comments?post=1958"}],"version-history":[{"count":19,"href":"http:\/\/disseny-test.uoc.edu\/materials\/programacio\/es\/wp-json\/wp\/v2\/pages\/1958\/revisions"}],"predecessor-version":[{"id":3740,"href":"http:\/\/disseny-test.uoc.edu\/materials\/programacio\/es\/wp-json\/wp\/v2\/pages\/1958\/revisions\/3740"}],"wp:attachment":[{"href":"http:\/\/disseny-test.uoc.edu\/materials\/programacio\/es\/wp-json\/wp\/v2\/media?parent=1958"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}