{"id":156,"date":"2022-01-03T17:57:26","date_gmt":"2022-01-03T16:57:26","guid":{"rendered":"http:\/\/yb-isn.fr\/2021\/nsi\/lukas\/?p=156"},"modified":"2022-01-04T11:36:00","modified_gmt":"2022-01-04T10:36:00","slug":"hauteur-du-plafond-nuageux","status":"publish","type":"post","link":"http:\/\/yb-isn.fr\/2021\/nsi\/lukas\/?p=156","title":{"rendered":"Hauteur du plafond nuageux"},"content":{"rendered":"\n<p>Voici un exercice dont l&rsquo;objectif est de calculer et d&rsquo;afficher la hauteur du plafond nuageux \u00e0 partir de la temp\u00e9rature et du taux d\u2019humidit\u00e9 dans une page web.<\/p>\n\n\n\n<p>En premier, nous allons commencer par coder la m\u00e9thode de calcul en python pour ensuite \u00e9crire le script d&rsquo;une fonction, \u00e0 l&rsquo;aide de donn\u00e9es nous permettant de calculer la base d&rsquo;un nuage et le point de ros\u00e9e.<\/p>\n\n\n\n<p><strong>1) On calcule la temp\u00e9rature de ros\u00e9e qui est la temp\u00e9rature \u00e0 partir de laquelle apparait la premi\u00e8re goutte de liquide. Cette temp\u00e9rature permet de calculer la hauteur du plafond nuageux.<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import math\n\na=17.27\nb=237.7\n\ntemperature=float(input(\"Temp\u00e9rature en \u00b0C  :  \"))\nhumiditeRelative=float(input(\"Thumidit\u00e9 en%  entre 0 et 100  : \"))\n\nalpha=((a*temperature)\/(b+temperature) +math.log(humiditeRelative\/ 100))\ntpreRosee = (b* alpha) \/ (a-alpha)\nplafondNuage = 125 * (temperature -tpreRosee)\n\nprint(\"temp\u00e9rature de ros\u00e9e = \",tpreRosee,\"\u00b0C\")\nprint(\"plafond Nuageux  = \",plafondNuage,\"m\")<\/pre>\n\n\n\n<p><strong>2) Am\u00e9lioration du calcul avec une fonction<\/strong>.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import math\n\na=17.27\nb=237.7\n\ndef plafondNuageux(tpre,tH):\n\n  alpha=((a*tpre)\/(b+tpre) +math.log(tH \/ 100))\n  t_rosee = (b* alpha) \/ (a-alpha)\n  plafondNuage = 125 * (tpre -t_rosee)\n  return t_rosee,plafondNuage\n\ntpreRosee,plafondNuage=plafondNuageux(20,50)\n\nprint(\"temp\u00e9rature de ros\u00e9e = \",tpreRosee,\"\u00b0C\")\nprint(\"plafond Nuageux  = \",plafondNuage,\"m\")<\/pre>\n\n\n\n<p><strong>3) On pr\u00e9cise les types des arguments de la fonction et de la donn\u00e9e retourn\u00e9e<\/strong>.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import math\n\na=17.27\nb=237.7\n\ndef plafondNuageux(tpre:float,tH:float)-&gt;tuple:\n\n  alpha=((a*tpre)\/(b+tpre) +math.log(tH \/ 100))\n  t_rosee = (b* alpha) \/ (a-alpha)\n  plafondNuage = 125 * (tpre -t_rosee)\n  return t_rosee,plafondNuage\n\ntpreRosee,plafondNuage=plafondNuageux(20,50)\n\nprint(\"temp\u00e9rature de ros\u00e9e = \",tpreRosee,\"\u00b0C\")\nprint(\"plafond Nuageux  = \",plafondNuage,\"m\")<\/pre>\n\n\n\n<p><strong>4) On documente la fonction<\/strong>.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import math\n\na=17.27\nb=237.7\n\ndef plafondNuageux(tpre:float,tH:float)-&gt;tuple:\n  \"\"\"\n  La temperature doit \u00eatre en \u00b0C et tH. l'humidit\u00e9 relative est comprise entre 0 et 100\n  la fonction renvoi un tuple contenant la temperature de ros\u00e9e puis le plafond nuageux.\n  \"\"\"\n\n  alpha=((a*tpre)\/(b+tpre) +math.log(tH \/ 100))\n  t_rosee = (b* alpha) \/ (a-alpha)\n  plafondNuage = 125 * (tpre -t_rosee)\n  return t_rosee,plafondNuage\n\ntpreRosee,plafondNuage=plafondNuageux(15,0.01)\n\nprint(\"temp\u00e9rature de ros\u00e9e = \",tpreRosee,\"\u00b0C\")\nprint(\"plafond Nuageux  = \",plafondNuage,\"m\")<\/pre>\n\n\n\n<p><strong>5) Assertion : on demande au programme de tester des pr\u00e9-conditions avant d&rsquo;ex\u00e9cuter la fonction. lorsque la condition n&rsquo;est pas v\u00e9rifi\u00e9e une erreur est d\u00e9clench\u00e9e avec un message.<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import math\n\na=17.27\nb=237.7\n\ndef plafondNuageux(tpre:float,tH:float)-&gt;tuple:\n  \"\"\"\n  La temperature doit \u00eatre en \u00b0C et tH. l'humidit\u00e9 relative est comprise entre 0 et 100\n  la fonction renvoi un tuple contenant la temperature de ros\u00e9e puis le plafond nuageux.\n  \"\"\"\n  assert tH&gt;0 and tH&lt;=100, 'th doit \u00eatre &gt;0 et &lt;=100'\n  assert type(tpre)==float or type(tpre)==int, ' la temperature est un entier ou un d\u00e9cimal'\n  assert type(tH)==float or type (tH)==int , \" le taux d'humidit\u00e9 est un entier ou un d\u00e9cimal\"\n\n  alpha=((a*tpre)\/(b+tpre) +math.log(tH \/ 100))\n  t_rosee = (b* alpha) \/ (a-alpha)\n  plafondNuage = 125 * (tpre -t_rosee)\n  return t_rosee,plafondNuage\n\ntpreRosee,plafondNuage=plafondNuageux(0,1)\n\nprint(\"temp\u00e9rature de ros\u00e9e = \",tpreRosee,\"\u00b0C\")\nprint(\"plafond Nuageux  = \",plafondNuage,\"m\")<\/pre>\n\n\n\n<p>En deuxi\u00e8me, nous allons cr\u00e9er une page web permettant d&rsquo;effectuer le calcul demand\u00e9. Nous allons cr\u00e9er le code HTML de la page web \u00e0 l&rsquo;aide du code python, en y ajoutant le langage JavaScript.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"html\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;html lang=\"fr\"&gt;\n\n&lt;head&gt;\n    &lt;title&gt;Nuages&lt;\/title&gt;\n    &lt;meta charset=\"UTF-8\" \/&gt;\n    &lt;link rel=\" stylesheet\" href=\"nuages.css\" \/&gt;\n&lt;\/head&gt;\n&lt;script&gt;\n    function affiche() {\n        var temperature =parseFloat(prompt('temp\u00e9rature en\u00b0C?'));\n        var humiditeR =parseFloat(prompt('humidit\u00e9 relative en %?'));\n        var a = 17.27;\n        var b = 237.7;\n        var meteo=\"\"\n        var alpha = a * temperature \/ (b + temperature) + Math.log(humiditeR * 0.01);\n        var pointRosee = b * alpha \/ (a - alpha);\n        var plafondNuage = 125 * (temperature - pointRosee)\n        var plafondNuageFt =400*(temperature - pointRosee)\n        if(isNaN(plafondNuage)||humiditeR&gt;100||humiditeR&lt;0||isNaN(humiditeR)){meteo=\"erreur\"}\n        else{\n        meteo = \"Le point de ros\u00e9e est \u00e9gal \u00e0 \" + pointRosee.toFixed(0) + \"\u00b0C \" +\"et la base des nuages est \u00e0 \" + plafondNuage.toFixed(0) + \"m .\";\n        meteo = meteo + \"&lt;br&gt;&lt;b&gt;soit \" + plafondNuageFt.toFixed(0) + \" ft .&lt;\/b&gt;\";\n        }\n        document.getElementById(\"test\").innerHTML = \"&lt;b&gt;\" + meteo + \"&lt;\/b&gt;\";\n           }\n&lt;\/script&gt;\n&lt;body&gt;\n    &lt;h2&gt;Hauteur du plafond nuageux&lt;\/h2&gt;&lt;br&gt;\n    &lt;button class=\"button\" onclick=\"affiche()\"&gt;Calculateur&lt;\/button&gt;&lt;br&gt;&lt;br&gt;\n    &lt;h4 id=\"test\"&gt;&lt;\/h4&gt;\n    &lt;\/body&gt;\n\n&lt;\/html&gt;<\/pre>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Voici un exercice dont l&rsquo;objectif est de calculer et d&rsquo;afficher la hauteur du plafond nuageux \u00e0 partir de la temp\u00e9rature et du taux d\u2019humidit\u00e9 dans une page web. En premier, nous allons commencer par coder la m\u00e9thode de calcul en python pour ensuite \u00e9crire le script d&rsquo;une fonction, \u00e0 l&rsquo;aide de donn\u00e9es nous permettant de [&hellip;]<\/p>\n","protected":false},"author":16,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"_links":{"self":[{"href":"http:\/\/yb-isn.fr\/2021\/nsi\/lukas\/index.php?rest_route=\/wp\/v2\/posts\/156"}],"collection":[{"href":"http:\/\/yb-isn.fr\/2021\/nsi\/lukas\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/yb-isn.fr\/2021\/nsi\/lukas\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/yb-isn.fr\/2021\/nsi\/lukas\/index.php?rest_route=\/wp\/v2\/users\/16"}],"replies":[{"embeddable":true,"href":"http:\/\/yb-isn.fr\/2021\/nsi\/lukas\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=156"}],"version-history":[{"count":2,"href":"http:\/\/yb-isn.fr\/2021\/nsi\/lukas\/index.php?rest_route=\/wp\/v2\/posts\/156\/revisions"}],"predecessor-version":[{"id":159,"href":"http:\/\/yb-isn.fr\/2021\/nsi\/lukas\/index.php?rest_route=\/wp\/v2\/posts\/156\/revisions\/159"}],"wp:attachment":[{"href":"http:\/\/yb-isn.fr\/2021\/nsi\/lukas\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=156"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/yb-isn.fr\/2021\/nsi\/lukas\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=156"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/yb-isn.fr\/2021\/nsi\/lukas\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=156"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}