{"id":1906,"date":"2016-01-01T00:56:41","date_gmt":"2015-12-31T23:56:41","guid":{"rendered":"http:\/\/www.lyceelecorbusier.eu\/insituhacklab\/?p=1906"},"modified":"2016-09-22T15:13:15","modified_gmt":"2016-09-22T14:13:15","slug":"variables","status":"publish","type":"post","link":"https:\/\/www.lyceelecorbusier.eu\/p5js\/?p=1906","title":{"rendered":"\/ p5.js \/ 4 \/ variables &amp; boucles"},"content":{"rendered":"<p style=\"text-align: center;\"><!--more--><\/p>\n<p><span id=\"result_box\" class=\"\" lang=\"fr\"><span class=\"hps\">Une variable<\/span> <span class=\"hps\">stocke une valeur<\/span> <span class=\"hps\">en m\u00e9moire afin<\/span> <span class=\"hps\">qu&#8217;elle puisse \u00eatre<\/span> <span class=\"hps\">utilis\u00e9e par la suite<\/span> <span class=\"hps\">dans un programme.<br \/>\n<\/span><\/span><span id=\"result_box\" class=\"\" lang=\"fr\"><span class=\"hps\">Une <\/span><span class=\"hps\">variable peut<\/span> <span class=\"hps\">\u00eatre utilis\u00e9e plusieurs fois<\/span> <span class=\"hps\">dans un <\/span><span class=\"hps\">programme<\/span>.<br \/>\n<span class=\"hps\">La raison<\/span> <span class=\"hps\">principale pour\u00a0<\/span><span class=\"hps\">utiliser<\/span> <span class=\"hps\">des variables<\/span> <span class=\"hps\">est d&#8217;\u00e9viter<\/span> <span class=\"hps\">de r\u00e9p\u00e9ter<\/span> sa valeur <span class=\"hps\">dans le code<\/span>. Le<span class=\"hps\"> code<\/span> <span class=\"hps\">est <\/span><span class=\"hps\">plus facile \u00e0<\/span> <span class=\"hps\">mettre \u00e0 jour gr\u00e2ce aux variables <\/span>.<br \/>\n<\/span><\/p>\n<pre>var y = 60;\r\nvar d = 100;\r\nfunction setup() {\r\ncreateCanvas(800, 600);\r\n}\r\nfunction draw() {\r\nbackground(200);\r\nellipse(100, y, d, d); \/\/ Gauche\r\nellipse(250, y, d, d); \/\/ Milieu\r\nellipse(400, y, d, d); \/\/ Droite\r\n}<\/pre>\n<p>Il est simple de modifier les valeurs <em>y<\/em> et <em>d<\/em><\/p>\n<h4>Cr\u00e9er des variables<\/h4>\n<p>Pour cr\u00e9er une variable il faut lui donner un nom (pertinent avec son usage).<br \/>\nUne variable doit \u00eatre d\u00e9clar\u00e9e <em>var<\/em> suivi par son <em>nom<\/em> et sa <em>valeur initiale<\/em>.<\/p>\n<pre>var y = 60;<\/pre>\n<p>Il est \u00e9galement possible d&#8217;\u00e9crire :<\/p>\n<pre>var y;\r\ny = 60;<\/pre>\n<p><span id=\"result_box\" class=\"\" lang=\"fr\"><span title=\"You can\u2019t have two variables with the \">Deux variables avec le <\/span><span title=\"same name in the same part of the program (Appendix C), or \">m\u00eame nom ne peuvent exister dans la m\u00eame partie du programme.<\/span><\/span><\/p>\n<p><span id=\"result_box\" class=\"\" lang=\"fr\"><span title=\"You can place your variables outside of setup() and draw().\">Les variables peuvent \u00eatre plac\u00e9es \u00e0 l&#8217;ext\u00e9rieur de <em>setup ()<\/em> et <em>draw ()<\/em>. U<\/span><span title=\"you create a variable inside of setup(), you can't use it inside of \">ne variable \u00e0 l&#8217;int\u00e9rieur de <em>setup ()<\/em>, ne peut \u00eatre utilis\u00e9e \u00e0 l&#8217;int\u00e9rieur de <em>d<\/em><\/span><span title=\"draw(), so you need to place those variables somewhere else. \"><em>raw ()<\/em>. Les<\/span><span title=\"Such variables are called global variables, because they can be \"><strong> variables globales<\/strong> (plac\u00e9es en dehors de <em>setup ()<\/em> et <em>draw ()<\/em>, peuvent \u00eatre <\/span><span title=\"used anywhere (\u201cglobally\u201d) in the program.\">utilis\u00e9es partout dans le programme.<\/span><\/span><\/p>\n<p><span id=\"result_box\" class=\"\" lang=\"fr\"><strong><span class=\"hps\">p5.js<\/span><\/strong> <span class=\"hps\">a une s\u00e9rie de<\/span> <span class=\"hps\">variables sp\u00e9ciales<\/span>. <span class=\"hps\">Par exemple,<\/span> <span class=\"hps\">la<\/span> <span class=\"hps\"><strong>largeur<\/strong> et la <strong>hauteur<\/strong><\/span> <span class=\"hps\">de l&#8217;animation<\/span> <span class=\"hps\">sont stock\u00e9es dans des<\/span> <span class=\"hps\">variables appel\u00e9es<\/span> <em>width<\/em><span class=\"hps\"> et <em>height<\/em><\/span>. <span class=\"hps\">Ces valeurs sont d\u00e9finies<\/span> <span class=\"hps\">par la fonction<\/span> <em><span class=\"hps\">createCanvas<\/span> <\/em><span class=\"hps\"><em>()<\/em>.<br \/>\n<\/span><\/span><\/p>\n<pre>function setup() {\r\ncreateCanvas(800, 600);\r\n}\r\nfunction draw() {\r\nbackground(200);\r\nline(0, 0, width, height); \r\nline(width, 0, 0, height);\r\nellipse(width\/2, height\/2, 150, 150);\r\n}<\/pre>\n<p>Il est possible d&#8217;utiliser les op\u00e9rateurs <em>+<\/em> (plus), <em>&#8211;<\/em> (moins), <em>\/<\/em> (diviser), et <em>*<\/em> (multiplier)<\/p>\n<pre>var x = 100\r\nvar y = 60;\r\nvar d = 100;\r\nfunction setup() {\r\ncreateCanvas(800, 600);\r\n}\r\nfunction draw() {\r\nbackground(200);\r\nellipse(x, y, d, d); \/\/ Gauche\r\nellipse(x*3, y+100, d, d); \/\/ Milieu\r\nellipse(x*5, y-50, d\/2, d\/2); \/\/ Droite\r\n}<\/pre>\n<p>Certains calculs existent sous une forme raccourcie :<\/p>\n<pre>x += 10; \/\/ est \u00e9quivalent \u00e0 x = x + 10\r\ny \u2212= 15; \/\/ est \u00e9quivalent \u00e0 y = y - 15\r\n\r\nx++; \/\/ est \u00e9quivalent \u00e0 x = x + 1\r\ny\u2212\u2212; \/\/ est \u00e9quivalent \u00e0 y = y \u2212 1<\/pre>\n<p>Cr\u00e9er des animations interactives en utilisant la souris avec des variables int\u00e9gr\u00e9es \u00e0 <em>p5.js<\/em> : <em>mouseX<\/em> &amp; <em>mouseY. <\/em><\/p>\n<pre>function setup() {\r\n\u00a0 createCanvas(780, 200);\r\n\u00a0 noStroke();\r\n\u00a0 fill(0,100)\r\n}\r\nfunction draw() {\r\n\u00a0ellipse(mouseX, mouseY, 10,10);\r\n}<\/pre>\n<p>Rappel : <em>draw<\/em> est ex\u00e9cut\u00e9 60 fois pas seconde.<\/p>\n<p>Deux autres variables int\u00e9gr\u00e9es permettent de dessiner : <em>pmouseX<\/em> &amp; <em>pmouseY<\/em><\/p>\n<pre>function setup() {\r\ncreateCanvas(780, 200);\r\nstrokeWeight(4);\r\nstroke(255);\r\nbackground(0)\r\n}\r\nfunction draw() {\r\nline(mouseX, mouseY, pmouseX, pmouseY);\r\n}<\/pre>\n<h4>\u00a0Les boucles<\/h4>\n<p>Les boucles \u00e9vitent les r\u00e9p\u00e9titions qui seraient fastidieuses \u00e0 \u00e9crire.<\/p>\n<pre>function setup() {\r\ncreateCanvas(800, 600);\r\n\r\n}\r\nfunction draw() {\r\nbackground(200);\r\nline(20, 40, 80, 560);\r\nline(80, 40, 140, 560);\r\nline(140, 40, 200, 560);\r\nline(200, 40, 260, 560);\r\nline(260, 40, 320, 560);\r\nline(320, 40, 380, 560);\r\nline(380, 40, 440, 560);\r\nline(440, 40, 500, 560);\r\nline(500, 40, 560, 560);\r\nline(560, 40, 620, 560);\r\nline(620, 40, 680, 560);\r\nline(680, 40, 740, 560);\r\n}<\/pre>\n<p>La m\u00eame chose peut s&#8217;\u00e9crire gr\u00e2ce \u00e0 la boucle <em>for<\/em><\/p>\n<pre>function setup() {\r\ncreateCanvas(800, 600);\r\n}\r\nfunction draw() {\r\nbackground(200);\r\nfor (var i= 20; i&lt;width-60; i += 60){\r\n\u00a0 line(i, 40, i + 60, 560);\r\n\u00a0 }\r\n}<\/pre>\n<p>Ce sch\u00e9ma illustre le m\u00e9canisme mis en \u0153uvre par la boucle <em>for<\/em> :<\/p>\n<p><img loading=\"lazy\" class=\"wp-image-1914 size-medium alignleft\" src=\"http:\/\/www.lyceelecorbusier.eu\/insituhacklab\/wp-content\/uploads\/sites\/9\/2015\/12\/for-300x148.png\" alt=\"for\" width=\"300\" height=\"148\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>Les boucles for peuvent \u00eatre embo\u00eet\u00e9es :<\/p>\n<pre>function setup() {\r\n\u00a0 createCanvas(800, 600);\r\n}\r\n\r\nfunction draw() {\r\n\u00a0 background(255);\r\n\u00a0 for (var i=20; i&lt;width; i+=20){\r\n\u00a0\u00a0\u00a0 for (var j=20; j&lt;height; j+=20){\r\n\u00a0\u00a0\u00a0 ellipse(i, j, 20, 20);\r\n\u00a0\u00a0\u00a0 }\r\n\u00a0 }\r\n}<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[2],"tags":[],"_links":{"self":[{"href":"https:\/\/www.lyceelecorbusier.eu\/p5js\/index.php?rest_route=\/wp\/v2\/posts\/1906"}],"collection":[{"href":"https:\/\/www.lyceelecorbusier.eu\/p5js\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lyceelecorbusier.eu\/p5js\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lyceelecorbusier.eu\/p5js\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lyceelecorbusier.eu\/p5js\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1906"}],"version-history":[{"count":10,"href":"https:\/\/www.lyceelecorbusier.eu\/p5js\/index.php?rest_route=\/wp\/v2\/posts\/1906\/revisions"}],"predecessor-version":[{"id":3159,"href":"https:\/\/www.lyceelecorbusier.eu\/p5js\/index.php?rest_route=\/wp\/v2\/posts\/1906\/revisions\/3159"}],"wp:attachment":[{"href":"https:\/\/www.lyceelecorbusier.eu\/p5js\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1906"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lyceelecorbusier.eu\/p5js\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1906"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lyceelecorbusier.eu\/p5js\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1906"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}