{"id":1797,"date":"2012-06-13T14:10:00","date_gmt":"2012-06-13T12:10:00","guid":{"rendered":"http:\/\/www.auditsi.eu\/?p=1797"},"modified":"2017-08-21T23:42:57","modified_gmt":"2017-08-21T21:42:57","slug":"initiation-a-la-programmation-en-basic-etape-8-tests-conditionnels","status":"publish","type":"post","link":"https:\/\/www.auditsi.eu\/?p=1797","title":{"rendered":"Initiation \u00e0 la programmation en Basic \u2013 ETAPE 8 : Tests conditionnels"},"content":{"rendered":"<p style=\"text-align: justify;\">Jusqu\u2019\u00e0 maintenant, notre programme ex\u00e9cute toutes les instructions les unes apr\u00e8s les autres. Lors de l\u2019\u00e9tape pr\u00e9c\u00e9dente, nous avons vu qu\u2019\u00e0 l\u2019aide de boucles, le programme peut r\u00e9it\u00e9rer l\u2019ex\u00e9cution de certaines instructions. Lors de la pr\u00e9sente \u00e9tape d\u2019initiation \u00e0 FreeBasic, nous allons aborder les tests conditionnels. Nous en profiterons pour introduire cette notion dans diff\u00e9rents langages afin de d\u00e9montrer la relative portabilit\u00e9 des programmes d\u2019un langage \u00e0 l\u2019autre.<\/p>\n<p style=\"text-align: justify;\">Un test conditionnel permet de n\u2019ex\u00e9cuter une instruction ou ensemble d\u2019instructions que si une ou plusieurs conditions sont remplies.<\/p>\n<p style=\"text-align: justify;\"><a href=\"https:\/\/www.auditsi.eu\/wp-content\/uploads\/2012\/06\/Test-conditionnel.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1799\" title=\"Test conditionnel\" src=\"https:\/\/www.auditsi.eu\/wp-content\/uploads\/2012\/06\/Test-conditionnel.png\" alt=\"\" width=\"371\" height=\"284\" \/><\/a><strong><em>Condition simple : SI condition r\u00e9alis\u00e9e ALORS action<\/em><\/strong><\/p>\n<p style=\"text-align: justify;\">Les tests conditionnels sont une structure de programmation courante, facile \u00e0 programmer qui se traduit ainsi en Basic : IF condition r\u00e9alis\u00e9e THEN action.<\/p>\n<p style=\"text-align: justify;\"><em>Exemple :<\/em><\/p>\n<pre class=\"lang:default decode:true \">If age&gt;=18 Then Print \"Le sujet est majeur\"<\/pre>\n<p style=\"text-align: justify;\">L\u2019action PRINT &#8220;Le sujet est majeur&#8221; ne sera ex\u00e9cut\u00e9e que si le contenu de la variable <em>age<\/em> est sup\u00e9rieur ou \u00e9gal \u00e0 18.<\/p>\n<p style=\"text-align: justify;\">Le test conditionnel repose sur une comparaison. C&#8217;est la r\u00e9alisation ou non de la condition qui conditionne l&#8217;action \u00e0 ex\u00e9cuter.<\/p>\n<p style=\"text-align: justify;\"><em>Expression de la comparaison :<\/em><\/p>\n<p style=\"text-align: justify;\">La condition utilise une variable (dans l&#8217;exemple pr\u00e9c\u00e9dent la variable <em>age<\/em>), des op\u00e9rateurs de comparaison (ici : &gt;=) et des nombres et du texte. La notion de variable a d\u00e9j\u00e0 \u00e9t\u00e9 introduite.<\/p>\n<p style=\"text-align: justify;\">Les <a href=\"https:\/\/www.auditsi.eu\/?p=6979\">op\u00e9rateurs de comparaison<\/a> utilis\u00e9s pour exprimer la condition sont pour une bonne part repris du monde des math\u00e9matiques :<\/p>\n<ul>\n<li>&lt; (inf\u00e9rieur \u00e0),<\/li>\n<li>&gt; (sup\u00e9rieur \u00e0),<\/li>\n<li>&lt;&gt; (diff\u00e9rent de),<\/li>\n<li>= (\u00e9gal \u00e0),<\/li>\n<li>&lt;= (inf\u00e9rieur ou \u00e9gal \u00e0),<\/li>\n<li>&gt;= (sup\u00e9rieur ou \u00e9gal \u00e0),<\/li>\n<li>NOT (non)<\/li>\n<\/ul>\n<p style=\"text-align: justify;\"><strong><em>Expression de conditions multicrit\u00e8res :<\/em><\/strong><\/p>\n<p style=\"text-align: justify;\">Le pr\u00e9c\u00e9dent exemple ne comprenait qu\u2019un seul crit\u00e8re. La condition peut comprendre plusieurs crit\u00e8res. Chaque crit\u00e8re est li\u00e9 au pr\u00e9c\u00e9dent par un op\u00e9rateur AND (et), OR (ou), XOR (ou exclusif).<\/p>\n<p style=\"text-align: justify;\"><em>Exemple :<\/em><\/p>\n<p style=\"text-align: justify;\">If (age&gt;=18) AND (age&lt;=30) Then&#8230; : Si l&#8217;\u00e2ge est compris entre 18 et 30 ans (bornes comprises) alors&#8230;<\/p>\n<p style=\"text-align: justify;\">If (age=30) OR (age=45) Then&#8230; : Si l&#8217;\u00e2ge est \u00e9gal \u00e0 18 ans ou \u00e0 45 alors&#8230;<\/p>\n<p style=\"text-align: justify;\">Attention aux conditions impossibles : par exemple, pour reprendre l&#8217;exemple pr\u00e9c\u00e9dent, la condition : If (age=30) AND (age=45) Then&#8230; est irr\u00e9alisable puisque la variable (ou un \u00eatre humain normalement constitu\u00e9 d&#8217;ailleurs) ne peut simultan\u00e9ment prendre les valeurs 30 et 45.<\/p>\n<p style=\"text-align: justify;\">Il est parfaitement possible d&#8217;imbriquer des conditions et de d\u00e9finir les priorit\u00e9s entre elles \u00e0 l&#8217;aide de parenth\u00e8ses. Dans ce cas, le <a href=\"https:\/\/www.auditsi.eu\/?p=6458\">r\u00e9gime des priorit\u00e9s<\/a> r\u00e9pond aux m\u00eames r\u00e8gles qu&#8217;en math\u00e9matiques. A noter, chaque parenth\u00e8se ouverte doit \u00eatre referm\u00e9e&#8230;<\/p>\n<p style=\"text-align: justify;\"><em>Exemple :<\/em><\/p>\n<pre class=\"lang:default decode:true \">If ((typeclient=\"Grand Compte\") And ((CA&gt;1000000) And (CA&lt;5000000))) Or ((typeclient=\"PME\") And ((CA&gt;10000) And (CA&lt;50000))) Then TauxRemise = 0.10<\/pre>\n<p style=\"text-align: justify;\">Si le client est un grand compte et que son chiffre d&#8217;affaires est compris entre 1 et 5 millions ou s&#8217;il s&#8217;agit d&#8217;une PME et que son CA est compris entre 10 et 50 K\u20ac alors le taux de remise appliqu\u00e9 est de 10 %.<\/p>\n<p style=\"text-align: justify;\"><em><strong>Et sinon ?<\/strong><\/em><\/p>\n<p style=\"text-align: justify;\">Pour l&#8217;instant, nous avons programm\u00e9 l&#8217;action \u00e0 r\u00e9alis\u00e9 si la condition est remplie (Then). Mais quid si l&#8217;action n&#8217;est pas remplie ? L&#8217;instruction Else permettra l&#8217;ex\u00e9cution d&#8217;action si la condition n&#8217;est pas remplie.<\/p>\n<p style=\"text-align: justify;\">Exemple :<\/p>\n<pre class=\"lang:default decode:true \">If age&gt;=18 Then Print \"Le sujet est majeur\" Else Print \"Le sujet est mineur\"<\/pre>\n<p style=\"text-align: justify;\">Normalement, si vous avez bien suivi le cours, vous avez tout compris&#8230;<\/p>\n<p style=\"text-align: justify;\"><strong><em>Tests conditionnels imbriqu\u00e9s :<\/em><\/strong><\/p>\n<p style=\"text-align: justify;\">La r\u00e9alit\u00e9 des choses (et quelquefois la perversit\u00e9 du programmeur, po\u00e8te \u00e0 sa mani\u00e8re) conduit le programmeur \u00e0 imbriquer des tests.<\/p>\n<p style=\"text-align: justify;\">Ces tests seront effectu\u00e9s jusqu&#8217;\u00e0 ce qu&#8217;une condition ne soit pas remplie ; dans ce cas le programme sort de la s\u00e9quence de tests et continue son ex\u00e9cution.<\/p>\n<p style=\"text-align: justify;\">La structure de programmation est la suivante :<\/p>\n<p style=\"text-align: center;\">If condition Then If&#8230; Then Else&#8230; : SI ALORS SINON SI ALORS SINON\u2026<\/p>\n<p style=\"text-align: justify;\">Le programmeur peut laisser libre cours \u00e0 son imagination&#8230;<\/p>\n<p style=\"text-align: justify;\"><strong><em>Et dans d&#8217;autres langage ?<\/em><\/strong><\/p>\n<p style=\"text-align: justify;\">La structure de programmation est &#8220;relativement&#8221; semblable d&#8217;un langage \u00e0 l&#8217;autre.<\/p>\n<p style=\"text-align: justify;\"><em>Basic :<\/em><\/p>\n<pre class=\"lang:default decode:true \">If age&gt;=18 Then Etat=\"Majeur\" Else Etat=\"Mineur\"<\/pre>\n<p><em>VBA :<\/em><\/p>\n<pre class=\"lang:default decode:true\">If age&gt;=18 Then Etat=\"Majeur\" Else Etat=\"Mineur\"<\/pre>\n<p>(EndIf cl\u00f4turera la structure conditionnelle si le test est pr\u00e9sent\u00e9 sur plusieurs lignes)<\/p>\n<p style=\"text-align: justify;\"><em>DELPHI :<\/em><\/p>\n<pre class=\"lang:default decode:true \">If age&gt;=18 Then Etat:='Majeur' Else Etat='Mineur';<\/pre>\n<p style=\"text-align: justify;\"><em>PHP :<\/em><\/p>\n<pre class=\"lang:default decode:true\">if($age &gt;= 18):\r\n\r\n$etat=\"Majeur\";\r\n\r\nelse:\r\n\r\n$etat=\"Mineur\";\r\n\r\nendif;<\/pre>\n<p><strong><em>Calcul d&#8217;emprunt : ajout d&#8217;une ligne d&#8217;intitul\u00e9 de colonne<br \/>\n<\/em><\/strong><\/p>\n<p style=\"text-align: justify;\"><a href=\"https:\/\/www.auditsi.eu\/wp-content\/uploads\/2012\/06\/freeBasic-ETAPE-8-Tests-conditionnels-If-Then-Else.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1804\" title=\"freeBasic ETAPE 8 Tests conditionnels If Then Else\" src=\"https:\/\/www.auditsi.eu\/wp-content\/uploads\/2012\/06\/freeBasic-ETAPE-8-Tests-conditionnels-If-Then-Else.jpg\" alt=\"\" width=\"802\" height=\"341\" srcset=\"https:\/\/www.auditsi.eu\/wp-content\/uploads\/2012\/06\/freeBasic-ETAPE-8-Tests-conditionnels-If-Then-Else.jpg 802w, https:\/\/www.auditsi.eu\/wp-content\/uploads\/2012\/06\/freeBasic-ETAPE-8-Tests-conditionnels-If-Then-Else-300x127.jpg 300w, https:\/\/www.auditsi.eu\/wp-content\/uploads\/2012\/06\/freeBasic-ETAPE-8-Tests-conditionnels-If-Then-Else-1x1.jpg 1w\" sizes=\"auto, (max-width: 802px) 100vw, 802px\" \/><\/a><\/p>\n<p style=\"text-align: justify;\">Pour reprendre l&#8217;exemple qui nous sert de fil conducteur depuis le d\u00e9but de cette initiation \u00e0 FreeBasic, nous allons ajouter un test conditionnel qui ajoutera \u00e0 chaque p\u00e9riode de douze mois (douze \u00e9ch\u00e9ances) un intitul\u00e9 de colonne &#8220;Capital restant &#8211; Int\u00e9r\u00eats &#8211; Capital rembours\u00e9 &#8211; Capital restant&#8221; :<\/p>\n<pre class=\"lang:default decode:true \">if (i+11) mod 12=0 then\r\n\r\nprint \"Capital restant - Int\u00e9r\u00eats - Capital rembours\u00e9 - Capital restant\"\r\n\r\nend if<\/pre>\n<p>Explication :<\/p>\n<p style=\"text-align: justify;\"><em>if (i+11) mod 12=0<\/em> : signifie Si le reste de la division (i+11)\/12 est nul Alors&#8230; (le reste de la division est nul lorsque l&#8217;\u00e9ch\u00e9ance en cours (<em>i<\/em>) est la premi\u00e8re d&#8217;une p\u00e9riode de 12 mois&#8230;<\/p>\n<p style=\"text-align: justify;\">Comme d&#8217;habitude, le code-source du programme de calcul d&#8217;emprunt est t\u00e9l\u00e9chargeable ci-apr\u00e8s.<\/p>\n<p>Approfondir le sujet\u00a0: <a href=\"https:\/\/www.auditsi.eu\/?cat=1207\">Initiation au langage Basic (s\u00e9rie d\u2019articles)<\/a><\/p>\n<div style=\"padding-bottom:20px; padding-top:10px;\" class=\"hupso-share-buttons\"><!-- Hupso Share Buttons - https:\/\/www.hupso.com\/share\/ --><a class=\"hupso_counters\" href=\"https:\/\/www.hupso.com\/share\/\"><img decoding=\"async\" src=\"https:\/\/static.hupso.com\/share\/buttons\/lang\/fr\/share-small.png\" style=\"border:0px; padding-top:2px; float:left;\" alt=\"Share Button\"\/><\/a><script type=\"text\/javascript\">var hupso_services_c=new Array(\"twitter\",\"facebook_like\",\"facebook_send\",\"email\",\"print\",\"linkedin\");var hupso_counters_lang = \"fr_FR\";var hupso_image_folder_url = \"\";var hupso_twitter_via=\"BenoitRiviere14\";var hupso_url_c=\"\";var hupso_title_c=\"Initiation%20%C3%A0%20la%20programmation%20en%20Basic%20%E2%80%93%20ETAPE%208%20%3A%20Tests%20conditionnels\";<\/script><script type=\"text\/javascript\" src=\"https:\/\/static.hupso.com\/share\/js\/counters.js\"><\/script><!-- Hupso Share Buttons --><\/div>","protected":false},"excerpt":{"rendered":"<p>Jusqu\u2019\u00e0 maintenant, notre programme ex\u00e9cute toutes les instructions les unes apr\u00e8s les autres. Lors de l\u2019\u00e9tape pr\u00e9c\u00e9dente, nous avons vu qu\u2019\u00e0 l\u2019aide de boucles, le programme peut r\u00e9it\u00e9rer l\u2019ex\u00e9cution de certaines instructions. Lors de la pr\u00e9sente \u00e9tape d\u2019initiation \u00e0 FreeBasic, nous allons aborder les tests conditionnels. Nous en profiterons pour introduire cette notion dans diff\u00e9rents &#8230;<\/p>\n<p><a href=\"https:\/\/www.auditsi.eu\/?p=1797\" class=\"more-link\">Continue reading &lsquo;Initiation \u00e0 la programmation en Basic \u2013 ETAPE 8 : Tests conditionnels&rsquo; &raquo;<\/a><\/p>\n<div style=\"padding-bottom:20px; padding-top:10px;\" class=\"hupso-share-buttons\"><!-- Hupso Share Buttons - https:\/\/www.hupso.com\/share\/ --><a class=\"hupso_counters\" href=\"https:\/\/www.hupso.com\/share\/\"><img src=\"https:\/\/static.hupso.com\/share\/buttons\/lang\/fr\/share-small.png\" style=\"border:0px; padding-top:2px; float:left;\" alt=\"Share Button\"\/><\/a><script type=\"text\/javascript\">var hupso_services_c=new Array(\"twitter\",\"facebook_like\",\"facebook_send\",\"email\",\"print\",\"linkedin\");var hupso_counters_lang = \"fr_FR\";var hupso_image_folder_url = \"\";var hupso_twitter_via=\"BenoitRiviere14\";var hupso_url_c=\"\";var hupso_title_c=\"Initiation%20%C3%A0%20la%20programmation%20en%20Basic%20%E2%80%93%20ETAPE%208%20%3A%20Tests%20conditionnels\";<\/script><script type=\"text\/javascript\" src=\"https:\/\/static.hupso.com\/share\/js\/counters.js\"><\/script><!-- Hupso Share Buttons --><\/div>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"ngg_post_thumbnail":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","_links_to":"","_links_to_target":""},"categories":[442,39,218,1207,471,191,215],"tags":[1647,1642,817,588,223,270,901,1640,222,663,1641],"class_list":["post-1797","post","type-post","status-publish","format-standard","hentry","category-basic","category-cas-pratiques","category-delphi","category-initiation-au-basic","category-langages","category-php","category-vba","tag-basic","tag-delphi","tag-freebasic","tag-if-condition-elseif-condition-else","tag-if-then-elseif","tag-if-then-else","tag-modulo","tag-php","tag-tests-conditionnels","tag-tutoriel","tag-vba"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_likes_enabled":false,"_links":{"self":[{"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=\/wp\/v2\/posts\/1797","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1797"}],"version-history":[{"count":14,"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=\/wp\/v2\/posts\/1797\/revisions"}],"predecessor-version":[{"id":7121,"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=\/wp\/v2\/posts\/1797\/revisions\/7121"}],"wp:attachment":[{"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1797"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1797"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1797"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}