{"id":2734,"date":"2025-07-23T14:07:13","date_gmt":"2025-07-23T13:07:13","guid":{"rendered":"https:\/\/workboot.fr\/ciela\/?page_id=2734"},"modified":"2025-07-23T14:10:50","modified_gmt":"2025-07-23T13:10:50","slug":"td-script-shell-bash-factoriel","status":"publish","type":"page","link":"https:\/\/workboot.fr\/ciela\/td-script-shell-bash-factoriel\/","title":{"rendered":"TD script shell bash factoriel"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">version 1: lin\u00e9aire <\/h2>\n\n\n\n<pre style='color:#1f1c1b;background-color:#ffffff;'>\n<span style='color:#898887;'>#!\/bin\/bash<\/span>\n\n<span style='color:#898887;'># V\u00e9rifie qu'un argument est fourni<\/span>\n<b>if<\/b> <b><span style='color:#644a9b;'>[<\/span><\/b> <span style='color:#0057ae;'>$#<\/span> <span style='color:#006e28;'>-ne<\/span> 1 <b><span style='color:#644a9b;'>]<\/span><\/b><b>;<\/b> <b>then<\/b>\n    <b><span style='color:#644a9b;'>echo<\/span><\/b> <span style='color:#bf0303;'>&quot;Usage: <\/span><span style='color:#0057ae;'>$0<\/span><span style='color:#bf0303;'> &lt;nombre&gt;&quot;<\/span>\n    <b><span style='color:#644a9b;'>exit<\/span><\/b> 1\n<b>fi<\/b>\n\n<span style='color:#898887;'># V\u00e9rifie que l'argument est un nombre positif<\/span>\n<b>if<\/b> <span style='color:#006e28;'>! <\/span><b>[[<\/b> <span style='color:#0057ae;'>$1<\/span> <span style='color:#006e28;'>=~<\/span> <span style='color:#006e28;'>^<\/span><span style='color:#ca60ca;'>[<\/span><span style='color:#ff5500;'>0<\/span><span style='color:#ca60ca;'>-<\/span><span style='color:#ff5500;'>9<\/span><span style='color:#ca60ca;'>]<\/span><span style='color:#006e28;'>+<\/span><span style='color:#ca60ca;'>$<\/span> <b>]]<\/b><b>;<\/b> <b>then<\/b>\n    <b><span style='color:#644a9b;'>echo<\/span><\/b> <span style='color:#bf0303;'>&quot;Erreur: L'argument doit \u00eatre un nombre entier positif.&quot;<\/span>\n    <b><span style='color:#644a9b;'>exit<\/span><\/b> 1\n<b>fi<\/b>\n\n<span style='color:#0057ae;'>n<\/span><span style='color:#ca60ca;'>=<\/span><span style='color:#0057ae;'>$1<\/span>\n<span style='color:#0057ae;'>factorial<\/span><span style='color:#ca60ca;'>=<\/span>1\n\n<span style='color:#898887;'># Calcul du factoriel<\/span>\n<b>for<\/b> <b>((<\/b> <span style='color:#0057ae;'>i<\/span><span style='color:#ca60ca;'>=<\/span><span style='color:#b08000;'>1<\/span><b>;<\/b> <span style='color:#0057ae;'>i<\/span><span style='color:#ca60ca;'>&lt;=<\/span><span style='color:#0057ae;'>n<\/span><b>;<\/b> <span style='color:#0057ae;'>i<\/span><span style='color:#ca60ca;'>++<\/span> <b>))<\/b><b>;<\/b> <b>do<\/b>\n    <span style='color:#0057ae;'>factorial<\/span><span style='color:#ca60ca;'>=<\/span><span style='color:#0057ae;'>$((<\/span><span style='color:#0057ae;'>factorial<\/span> <span style='color:#ca60ca;'>*<\/span> <span style='color:#0057ae;'>i))<\/span>\n<b>done<\/b>\n\n<b><span style='color:#644a9b;'>echo<\/span><\/b> <span style='color:#bf0303;'>&quot;Factoriel de <\/span><span style='color:#0057ae;'>$n<\/span><span style='color:#bf0303;'> = <\/span><span style='color:#0057ae;'>$factorial<\/span><span style='color:#bf0303;'>&quot;<\/span>\n<\/pre>\n\n\n\n\n<h3 class=\"wp-block-heading\">Analyser le code <\/h3>\n\n\n\n<h2 class=\"wp-block-heading\">Version 2, r\u00e9cursive<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">la fonction factorial  s&rsquo;appelle elle m\u00eame jusqu\u2019\u00e0 la solution<\/p>\n\n\n\n<pre style='color:#1f1c1b;background-color:#ffffff;'>\n<span style='color:#898887;'>#!\/bin\/bash<\/span>\n\n<span style='color:#898887;'># Fonction r\u00e9cursive pour calculer le factoriel<\/span>\n<span style='color:#644a9b;'>factorial()<\/span> <b>{<\/b>\n    <b><span style='color:#644a9b;'>local<\/span><\/b> <span style='color:#0057ae;'>n<\/span><span style='color:#ca60ca;'>=<\/span><span style='color:#0057ae;'>$1<\/span>\n    <span style='color:#898887;'># Cas de base : factoriel de 0 ou 1 vaut 1<\/span>\n    <b>if<\/b> <b><span style='color:#644a9b;'>[<\/span><\/b> <span style='color:#0057ae;'>$n<\/span> <span style='color:#006e28;'>-le<\/span> 1 <b><span style='color:#644a9b;'>]<\/span><\/b><b>;<\/b> <b>then<\/b>\n        <b><span style='color:#644a9b;'>echo<\/span><\/b> 1\n    <b>else<\/b>\n        <span style='color:#898887;'># Appel r\u00e9cursif : n! = n * (n-1)!<\/span>\n        <b><span style='color:#644a9b;'>local<\/span><\/b> <span style='color:#0057ae;'>prev<\/span><span style='color:#ca60ca;'>=<\/span><span style='color:#0057ae;'>$(<\/span><b><span style='color:#0095ff;'>factorial<\/span><\/b> <span style='color:#0057ae;'>$((<\/span><span style='color:#0057ae;'>n<\/span> <span style='color:#ca60ca;'>-<\/span> <span style='color:#b08000;'>1<\/span><span style='color:#0057ae;'>))<\/span><span style='color:#0057ae;'>)<\/span>\n        <b><span style='color:#644a9b;'>echo<\/span><\/b> <span style='color:#0057ae;'>$((<\/span><span style='color:#0057ae;'>n<\/span> <span style='color:#ca60ca;'>*<\/span> <span style='color:#0057ae;'>prev))<\/span>\n    <b>fi<\/b>\n<b>}<\/b>\n\n<span style='color:#898887;'># V\u00e9rification des arguments<\/span>\n<b>if<\/b> <b><span style='color:#644a9b;'>[<\/span><\/b> <span style='color:#0057ae;'>$#<\/span> <span style='color:#006e28;'>-ne<\/span> 1 <b><span style='color:#644a9b;'>]<\/span><\/b><b>;<\/b> <b>then<\/b>\n    <b><span style='color:#644a9b;'>echo<\/span><\/b> <span style='color:#bf0303;'>&quot;Usage: <\/span><span style='color:#0057ae;'>$0<\/span><span style='color:#bf0303;'> &lt;nombre&gt;&quot;<\/span>\n    <b><span style='color:#644a9b;'>exit<\/span><\/b> 1\n<b>fi<\/b>\n\n<b>if<\/b> <span style='color:#006e28;'>! <\/span><b>[[<\/b> <span style='color:#0057ae;'>$1<\/span> <span style='color:#006e28;'>=~<\/span> <span style='color:#006e28;'>^<\/span><span style='color:#ca60ca;'>[<\/span><span style='color:#ff5500;'>0<\/span><span style='color:#ca60ca;'>-<\/span><span style='color:#ff5500;'>9<\/span><span style='color:#ca60ca;'>]<\/span><span style='color:#006e28;'>+<\/span><span style='color:#ca60ca;'>$<\/span> <b>]]<\/b><b>;<\/b> <b>then<\/b>\n    <b><span style='color:#644a9b;'>echo<\/span><\/b> <span style='color:#bf0303;'>&quot;Erreur: L'argument doit \u00eatre un nombre entier positif.&quot;<\/span>\n    <b><span style='color:#644a9b;'>exit<\/span><\/b> 1\n<b>fi<\/b>\n\n<span style='color:#898887;'># Calcul et affichage du r\u00e9sultat<\/span>\n<span style='color:#0057ae;'>result<\/span><span style='color:#ca60ca;'>=<\/span><span style='color:#0057ae;'>$(<\/span><b><span style='color:#0095ff;'>factorial<\/span><\/b> <span style='color:#0057ae;'>$1<\/span><span style='color:#0057ae;'>)<\/span>\n<b><span style='color:#644a9b;'>echo<\/span><\/b> <span style='color:#bf0303;'>&quot;Factoriel de <\/span><span style='color:#0057ae;'>$1<\/span><span style='color:#bf0303;'> = <\/span><span style='color:#0057ae;'>$result<\/span><span style='color:#bf0303;'>&quot;<\/span>\n<\/pre>\n\n\n\n\n<h3 class=\"wp-block-heading\">Analyser le code <\/h3>\n","protected":false},"excerpt":{"rendered":"<p>version 1: lin\u00e9aire #!\/bin\/bash # V\u00e9rifie qu&rsquo;un argument est fourni if [ $# -ne 1 ]; then echo &quot;Usage: $0 &lt;nombre&gt;&quot; exit 1 fi # V\u00e9rifie que l&rsquo;argument est un nombre positif if ! [[ $1 =~ ^[0-9]+$ ]]; then echo &quot;Erreur: L&rsquo;argument doit \u00eatre un nombre entier positif.&quot; exit 1 fi n=$1 factorial=1 # [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_uag_custom_page_level_css":"","footnotes":""},"class_list":["post-2734","page","type-page","status-publish","hentry"],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"admin","author_link":"https:\/\/workboot.fr\/ciela\/author\/admin\/"},"uagb_comment_info":0,"uagb_excerpt":"version 1: lin\u00e9aire #!\/bin\/bash # V\u00e9rifie qu'un argument est fourni if [ $# -ne 1 ]; then echo &quot;Usage: $0 &lt;nombre&gt;&quot; exit 1 fi # V\u00e9rifie que l'argument est un nombre positif if ! [[ $1 =~ ^[0-9]+$ ]]; then echo &quot;Erreur: L'argument doit \u00eatre un nombre entier positif.&quot; exit 1 fi n=$1 factorial=1 #\u2026","_links":{"self":[{"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/pages\/2734","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/comments?post=2734"}],"version-history":[{"count":2,"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/pages\/2734\/revisions"}],"predecessor-version":[{"id":2738,"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/pages\/2734\/revisions\/2738"}],"wp:attachment":[{"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/media?parent=2734"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}