{"id":480,"date":"2017-02-27T00:27:51","date_gmt":"2017-02-26T23:27:51","guid":{"rendered":"http:\/\/www2.mathnique.com\/site\/?page_id=480"},"modified":"2024-07-18T14:40:41","modified_gmt":"2024-07-18T12:40:41","slug":"analyse-algorithme-programme","status":"publish","type":"page","link":"https:\/\/www.mathnique.com\/site\/analyse-algorithme-programme\/","title":{"rendered":"Analyse, algorithme, programme"},"content":{"rendered":"<ul>\n<li>Le mot algorithme vient de la d\u00e9formation du nom de AL-KHWARIZMI Muhamad Ibn Moussa (780-850) , astronome et math\u00e9maticien, membre de la maison de la sagesse \u00e0 Bagdad qui fut le centre du monde scientifique de l'an $800$ \u00e0 l'an $1200$. Il fut \u00e9galement l'auteur du premier trait\u00e9 \"abr\u00e9g\u00e9 de calcul pour l'al-jabr et de la muqabal\" . Ce mot al-jabr donna naissance au mot alg\u00e8bre.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-1640 aligncenter\" src=\"http:\/\/www.mathnique.com\/site\/wp-content\/uploads\/2017\/02\/alkuwarismi-216x300.png\" alt=\"\" width=\"216\" height=\"300\" srcset=\"https:\/\/www.mathnique.com\/site\/wp-content\/uploads\/2017\/02\/alkuwarismi-216x300.png 216w, https:\/\/www.mathnique.com\/site\/wp-content\/uploads\/2017\/02\/alkuwarismi.png 278w\" sizes=\"auto, (max-width: 216px) 85vw, 216px\" \/><br \/>\nA cette \u00e9poque, \u00e0 Bagdad, les nombres n\u00e9gatifs \u00e9taient inconnus. Al-Khwarizmi utilise un algorithme \u00e0 support g\u00e9om\u00e9trique pour d\u00e9terminer la solution positive des \u00e9quations du second degr\u00e9 lorsqu'elle se pr\u00e9sentent sous la forme $x^2 + bx = c$ o\u00f9 $b &gt; 0$ et $c &gt; 0$<br \/>\n<em>Par exemple, pour r\u00e9soudre l'\u00e9quation<\/em> $x^2 + 10 x =39$<br \/>\nIl propose de tracer un carr\u00e9 de c\u00f4t\u00e9 $x$ et de compl\u00e9ter par deux rectangles de dimensions $x$ et la moiti\u00e9 de $10$ (c'est-\u00e0-dire $5$) pour obtenir un grand carr\u00e9}<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-917 aligncenter\" src=\"http:\/\/www2.mathnique.com\/site\/wp-content\/uploads\/2017\/02\/alkhurawizmi-300x255.png\" alt=\"\" width=\"300\" height=\"255\" srcset=\"https:\/\/www.mathnique.com\/site\/wp-content\/uploads\/2017\/02\/alkhurawizmi-300x255.png 300w, https:\/\/www.mathnique.com\/site\/wp-content\/uploads\/2017\/02\/alkhurawizmi.png 350w\" sizes=\"auto, (max-width: 300px) 85vw, 300px\" \/><br \/>\nCe grand carr\u00e9 a pour aire $(x^2 + 10x ) + 5^2$ c'est-\u00e0-dire $39 + 25$ soit $64$.<br \/>\nDonc il a pour c\u00f4t\u00e9 $8$ . Il suffit alors de lui retirer $5$ pour obtenir le c\u00f4t\u00e9 $x$ cherch\u00e9 : $x = 3$<\/li>\n<li><span style=\"color: #ff0000;\"><strong>Analyse, Algorithme, Programme<\/strong><\/span><br \/>\nIl ne faut pas confondre Analyse, Algorithme et Programme. Les algorithmes existent depuis l'antiquit\u00e9 (exemple: l'algorithme d'Euclide),alors que l'informatique existe depuis les ann\u00e9es 1940 mais depuis une soixantaine d'ann\u00e9es, algorithmique et programmation vont aujourd'hui de pair.<\/li>\n<\/ul>\n<p><strong><span style=\"color: #ff0000;\">Un algorithme<\/span> est une marche \u00e0 suivre pour traiter des donn\u00e9es afin d'obtenir un r\u00e9sultat<\/strong>.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-918 aligncenter\" src=\"http:\/\/www.mathnique.com\/site\/wp-content\/uploads\/2017\/02\/knuth.jpg\" alt=\"\" width=\"200\" height=\"222\" \/><br \/>\nDonald KNUTH qui a cr\u00e9\u00e9 Tex et MetaFont afin de r\u00e9diger son c\u00e9l\u00e8bre ouvrage The Art of Computer Programming (3 tomes) en donne la d\u00e9finition suivante :<br \/>\n\"<em>Un algorithme est un ensemble de r\u00e8gles qui donne un r\u00e9sultat \u00e0 partir d'une situation donn\u00e9e. Chaque \u00e9tape est soigneusement d\u00e9finie pour que sa traduction soit claire en langage informatique et r\u00e9alisable par l'ordinateur.<\/em>\"<\/p>\n<ul>\n<li><span style=\"color: #ff0000;\"><strong>Un programme<\/strong><\/span> est le codage dans un langage de programmation d'une \\textbf{analyse} qui peut comporter un ou plusieurs algorithmes.<br \/>\nIl doit \u00eatre r\u00e9dig\u00e9 avec des commentaires appropri\u00e9s et avoir la structure formelle suivante :<\/li>\n<\/ul>\n<p>Nom du programme \u2026..;<br \/>\n(* partie d\u00e9clarations *)<br \/>\nconstantes<br \/>\ntypes de variables<br \/>\nvariables<br \/>\nsous programmes proc\u00e9dures<br \/>\nsous programmes fonctions<\/p>\n<p>d\u00e9but (* du programme principal *)<\/p>\n<p>(* entr\u00e9e des donn\u00e9es *)<br \/>\n...............................<\/p>\n<p>(*traitement *)<br \/>\n.................................<\/p>\n<p>(* affichage des r\u00e9sultats *)<br \/>\n..................................<br \/>\nfin. (* du programme principal *)<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-2811 aligncenter\" src=\"http:\/\/www.mathnique.com\/site\/wp-content\/uploads\/2019\/11\/prof.jpg\" alt=\"\" width=\"135\" height=\"128\" \/><br \/>\nIl faut remarquer que certaines fois, les parties traitement et affichage des r\u00e9sultats seront confondues car les r\u00e9sultats peuvent \u00eatre affich\u00e9s au fur et \u00e0 mesure du traitement.<\/p>\n<ul>\n<li><strong><span style=\"color: #ff0000;\">Une d\u00e9marche de r\u00e9solution<\/span><\/strong>\n<ul>\n<li>\u00a0Etape 1 : Analyser le probl\u00e8me<\/li>\n<li>Etape 2 : Concevoir un algorithme de r\u00e9solution de ce probl\u00e8me<\/li>\n<li>Etape 3 : Ecriture du programme qui sera ex\u00e9cut\u00e9 par la machine.<\/li>\n<li>Etape 4 : Tester, am\u00e9liorer et maintenir ce programme<\/li>\n<\/ul>\n<\/li>\n<li><span style=\"color: #ff0000;\"><strong>Certaines analyses sont tr\u00e8s simples<br \/>\n<\/strong><\/span>Par exemple :<br \/>\nL'affichage de la surface et du p\u00e9rim\u00e8tre d'un cercle dont l'utilisateur tape au clavier le rayon :<\/li>\n<\/ul>\n<p>On sait que $P = 2* \\pi * R$ et $S = \\pi*R^2$ avec $\\pi \\approx 3.14$<br \/>\n<em>Donn\u00e9e d \u2019entr\u00e9e :<\/em> le rayon de type entier positif<br \/>\n<em>Donn\u00e9es de sorties<\/em> :<br \/>\nle p\u00e9rim\u00e8tre de type r\u00e9el<br \/>\nla surface de type r\u00e9el<\/p>\n<p><em>Voici un algorithme de r\u00e9solution en Pseudo-code\u00a0<\/em>:<\/p>\n<p>Algorithme CERCLE;<\/p>\n<p>Constante PI = 3.14<\/p>\n<p>Variables RAYON de type entier<\/p>\n<p>PERIMETRE,SURFACE:de type r\u00e9el ;<\/p>\n<p>d\u00e9but<\/p>\n<p>(*entr\u00e9e des donn\u00e9es *)<\/p>\n<p>lire au clavier un nombre et le mettre dans la case m\u00e9moire RAYON<\/p>\n<p>(* traitement *)<\/p>\n<p>stocker dans la case PERIMETRE le calcul suivant:<br \/>\n2 *contenu de la case PI * le contenu de la\u00a0 case RAYON;<\/p>\n<p>stocker dans la case SURFACE le calcul suivant :<br \/>\nle contenu de PI* le carr\u00e9 du contenu de la case RAYON;<\/p>\n<p>(*sortie des r\u00e9sultats *)<\/p>\n<p>afficher \u00e0 l'\u00e9cran les contenus des cases m\u00e9moires PERIMETRE et SURFACE.<\/p>\n<p>fin.<\/p>\n<p><em>Voici une \u00e9criture de ce programme en Turbo Pascal :<\/em><\/p>\n<p>Program CERCLE;<\/p>\n<p>uses WinCRT;<\/p>\n<p>const PI = 3.14;<\/p>\n<p>var RAYON:integer;<\/p>\n<p>PERIMETRE,SURFACE:real;<\/p>\n<p>begin<\/p>\n<p>clrscr;<\/p>\n<p>(*entr\u00e9e des donn\u00e9es *)<\/p>\n<p>write('Veuillez taper le rayon au clavier :');<\/p>\n<p>readln(RAYON);<\/p>\n<p>(* traitement *)<\/p>\n<p>PERIMETRE := 2*PI*RAYON;<\/p>\n<p>SURFACE := PI*RAYON*RAYON;<\/p>\n<p>(*sortie des r\u00e9sultats *)<\/p>\n<p>writeln('Le p\u00e9rim\u00e8tre du cercle est :',PERIMETRE);<\/p>\n<p>write('La surface de ce cercle est :',SURFACE);<\/p>\n<p>en<em>d<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2847 aligncenter\" src=\"http:\/\/www.mathnique.com\/site\/wp-content\/uploads\/2019\/12\/filleordi-300x220.png\" alt=\"\" width=\"102\" height=\"75\" srcset=\"https:\/\/www.mathnique.com\/site\/wp-content\/uploads\/2019\/12\/filleordi-300x220.png 300w, https:\/\/www.mathnique.com\/site\/wp-content\/uploads\/2019\/12\/filleordi.png 313w\" sizes=\"auto, (max-width: 102px) 85vw, 102px\" \/><\/em><\/p>\n<p><em>Voici une \u00e9criture de ce programme en ALGOBOX :<\/em><br \/>\n1 VARIABLES<br \/>\n2 RAYON EST_DU_TYPE NOMBRE<br \/>\n3 PERIMETRE EST_DU_TYPE NOMBRE<br \/>\n4 SURFACE EST_DU_TYPE NOMBRE<br \/>\n5 DEBUT_ALGORITHME<br \/>\n6 AFFICHER \"(* Entree des donnees *)\"<br \/>\n7 AFFICHER \"Veillez saisir au clavier la valeur du rayon :\"<br \/>\n8 LIRE RAYON<br \/>\n9 AFFICHER \"Le rayon du cercle est : \"<br \/>\n10 AFFICHER RAYON<br \/>\n11 AFFICHER \"(* Traitement *)\"<br \/>\n12 PERIMETRE PREND_LA_VALEUR 2*Math.PI*RAYON<br \/>\n13 SURFACE PREND_LA_VALEUR Math.PI*pow(RAYON,2)<br \/>\n14 AFFICHER \"(* Sortie des resultats*)\"<br \/>\n15 AFFICHER \"Le perimetre du cercle est :\"<br \/>\n16 AFFICHER PERIMETRE<br \/>\n17 AFFICHER \"La surface du cercle est : \"<br \/>\n18 AFFICHER SURFACE<br \/>\n19 FIN_ALGORITHME<\/p>\n<ul>\n<li>Il est int\u00e9ressant de faire figure dans l'algorithme et le programme sous forme de commentaires<br \/>\nles 3 parties :<br \/>\n(* entr\u00e9e des donn\u00e9es *)<br \/>\n(* traitement *)<br \/>\n(* affichage des r\u00e9sultats *)<\/li>\n<\/ul>\n<p>Certaines fois, on sera oblig\u00e9 de traiter et d'afficher durant le traitement.<br \/>\nAlors il n' y a aura que deux parties :<br \/>\n* entr\u00e9e des donn\u00e9es *)<br \/>\n(* traitement et affichage des r\u00e9sultats *)<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2847 aligncenter\" src=\"http:\/\/www.mathnique.com\/site\/wp-content\/uploads\/2019\/12\/filleordi-300x220.png\" alt=\"\" width=\"145\" height=\"106\" srcset=\"https:\/\/www.mathnique.com\/site\/wp-content\/uploads\/2019\/12\/filleordi-300x220.png 300w, https:\/\/www.mathnique.com\/site\/wp-content\/uploads\/2019\/12\/filleordi.png 313w\" sizes=\"auto, (max-width: 145px) 85vw, 145px\" \/><\/p>\n<ul>\n<li><em>Voici une \u00e9criture de ce programme en SCILAB :<\/em><\/li>\n<\/ul>\n<p>r = input(\"Entrez un clavier le rayon R = \")<br \/>\np = %pi * 2 * r<br \/>\ns = %pi *r^2<br \/>\ndisp(\"p\u00e9rim\u00e8tre P = \"+string(p))<br \/>\ndisp(\"surface S = \" +string(s))<\/p>\n<ul>\n<li><em>Voici une \u00e9criture de ce programme en PYTHON<\/em> :<\/li>\n<\/ul>\n<p>&gt;&gt;&gt; r = input(\" Entrez au clavier le rayon r = \")<br \/>\n&gt;&gt;&gt; pi =3.14<br \/>\n&gt;&gt;&gt; p = 2 * pi * r<br \/>\n&gt;&gt;&gt; s = pi * r * r<br \/>\n&gt;&gt;&gt; print(p)<br \/>\n&gt;&gt;&gt; print(s)<\/p>\n<ul>\n<li><strong><span style=\"color: #ff0000;\">D'autres analyses sont plus complexes.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-2811 aligncenter\" src=\"http:\/\/www.mathnique.com\/site\/wp-content\/uploads\/2019\/11\/prof.jpg\" alt=\"\" width=\"135\" height=\"128\" \/><br \/>\n<\/span><\/strong><\/li>\n<\/ul>\n<ul>\n<li><\/li>\n<\/ul>\n<p><strong>Il faut en tout cas :<\/strong><\/p>\n<ul>\n<li><em>Bien lire le texte<\/em> du probl\u00e8me et <em>bien d\u00e9finir le probl\u00e8me \u00e0 traiter.<\/em><\/li>\n<li><em>Bien distinguer les donn\u00e9es en entr\u00e9e<\/em> : imaginer \u00e9ventuellement les \u00e9crans de saisie des donn\u00e9es<\/li>\n<li><em>Bien distinguer les r\u00e9sultats attendus<\/em> : imaginer \u00e9ventuellement les \u00e9crans d'affichage des r\u00e9sultats<\/li>\n<li><em>Trouver un traitement \u00e0 effectuer sur les donn\u00e9es<\/em> en raisonnant de telle fa\u00e7on que <strong>le programme soit juste par construction<\/strong> : Aussi il faut s'efforcer de choisir <strong>une structure de donn\u00e9es int\u00e9ressante<\/strong> .<br \/>\n<strong>Ce sont les actions sur les donn\u00e9es qui d\u00e9terminent la fa\u00e7on de les repr\u00e9senter.<\/strong><br \/>\nAttention, la bonne repr\u00e9sentation des donn\u00e9es n'est pas for\u00e7\u00e9ment celle qui mime la r\u00e9alit\u00e9!<\/li>\n<li><em>Il faut d\u00e9composer le probl\u00e8me en des sous probl\u00e8mes plus faciles \u00e0 r\u00e9soudre<\/em><strong>.<\/strong> C'est ce que l'on appelle <strong>l'analyse descendante<\/strong> qui suit le pr\u00e9cepte machiav\u00e9lique suivant \"Diviser pour r\u00e9gner \" .<br \/>\nCeci s'inspire du Discours de la M\u00e9thode de Ren\u00e9 Descartes : <em>\" diviser chacune des difficult\u00e9s que vous examinerez en autant de parcelles qu'il se pourra et qu'il sera requis pour mieux les r\u00e9soudre \"<\/em><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2847 aligncenter\" src=\"http:\/\/www.mathnique.com\/site\/wp-content\/uploads\/2019\/12\/filleordi-300x220.png\" alt=\"\" width=\"164\" height=\"120\" srcset=\"https:\/\/www.mathnique.com\/site\/wp-content\/uploads\/2019\/12\/filleordi-300x220.png 300w, https:\/\/www.mathnique.com\/site\/wp-content\/uploads\/2019\/12\/filleordi.png 313w\" sizes=\"auto, (max-width: 164px) 85vw, 164px\" \/><\/p>\n<ul>\n<li><em>Pour cela, il faut utiliser tous les (ou une partie des ) diff\u00e9rents types de structures de contr\u00f4le<\/em><strong> :<\/strong>\n<ul>\n<li>La structure s\u00e9quentielle<\/li>\n<li>Les structures alternatives (si\u2026alors\u2026; si \u2026 alors \u2026sinon \u2026;)<\/li>\n<li>Les structures it\u00e9ratives\n<ul>\n<li>la boucle pour (for ... do begin ...end;)<\/li>\n<li>la boucle tant que (while ...do begin ...end; )<\/li>\n<li>la boucle r\u00e9p\u00e9ter (repeat \u2026 until ... \ud83d\ude09<\/li>\n<\/ul>\n<\/li>\n<li>\u00a0<em>Les sous programmes fonctions et les sous programmes proc\u00e9dures.<\/em><\/li>\n<li><em>Ne pas oublier d'examiner la possibilit\u00e9 d'une<\/em> <strong>vision r\u00e9cursive<\/strong> du probl\u00e8me.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2824 aligncenter\" src=\"http:\/\/www.mathnique.com\/site\/wp-content\/uploads\/2019\/11\/vachequirit2.png\" alt=\"\" width=\"88\" height=\"83\" \/><\/p>\n<ul>\n<li>calcul de factorielle<\/li>\n<li>calcul de la puissance $n-i\u00e8me$ d'un entier<\/li>\n<li>tours de Hano\u00ef<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-2858 aligncenter\" src=\"http:\/\/www.mathnique.com\/site\/wp-content\/uploads\/2019\/12\/hanoi8-300x159.png\" alt=\"\" width=\"300\" height=\"159\" srcset=\"https:\/\/www.mathnique.com\/site\/wp-content\/uploads\/2019\/12\/hanoi8-300x159.png 300w, https:\/\/www.mathnique.com\/site\/wp-content\/uploads\/2019\/12\/hanoi8.png 679w\" sizes=\"auto, (max-width: 300px) 85vw, 300px\" \/><\/li>\n<li>\u00a0op\u00e9rations sur les files, les listes,...<\/li>\n<\/ul>\n<\/li>\n<li><em>Tester votre programme<\/em> en n'oubliant pas qu'<strong>une bonne analyse doit tourner \u00e0 la main<\/strong><\/li>\n<li>Voici<span style=\"color: #ff0000;\"><strong> les 10 commandements du bon programmeur<\/strong> <\/span>:<img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-919 aligncenter\" src=\"http:\/\/www2.mathnique.com\/site\/wp-content\/uploads\/2017\/02\/tablesloi.png\" alt=\"\" width=\"182\" height=\"183\" srcset=\"https:\/\/www.mathnique.com\/site\/wp-content\/uploads\/2017\/02\/tablesloi.png 182w, https:\/\/www.mathnique.com\/site\/wp-content\/uploads\/2017\/02\/tablesloi-150x150.png 150w\" sizes=\"auto, (max-width: 182px) 85vw, 182px\" \/>1 - En aucun cas tu ne taperas au clavier directement.<br \/>\n2 - L'\u00e9nonc\u00e9 tu pr\u00e9ciseras point par point tr\u00e8s compl\u00e9tement.<br \/>\n3 - Les programmes tu diviseras en petits blocs de traitement.<br \/>\n4 - C'est l'analyse descendante que tu feras \u00e0 tout moment.<br \/>\n5 - La solution construiras pas \u00e0 pas it\u00e9rativement.<br \/>\n6 - Le probl\u00e8me tu r\u00e9soudras quelquefois r\u00e9cursivement.<br \/>\n7 - Proc\u00e9dures et fonctions n'\u00e9viteras pour structure logiquement.<br \/>\n8 - Les commentaires utiliseras pour informer \u00e0 bon escient.<br \/>\n9 - La bidouille tu proscriras pour progresser rapidement.<br \/>\n10 - En cas d'erreur, tu reprendras tout ton travail patiemment<em>Bon programmeur tu deviendras si tu suis ces commandements !!!<\/em><br \/>\nMICRO-JAH<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Le mot algorithme vient de la d\u00e9formation du nom de AL-KHWARIZMI Muhamad Ibn Moussa (780-850) , astronome et math\u00e9maticien, membre de la maison de la sagesse \u00e0 Bagdad qui fut le centre du monde scientifique de l'an $800$ \u00e0 l'an $1200$. Il fut \u00e9galement l'auteur du premier trait\u00e9 \"abr\u00e9g\u00e9 de calcul pour l'al-jabr et de &hellip; <a href=\"https:\/\/www.mathnique.com\/site\/analyse-algorithme-programme\/\" class=\"more-link\">Continuer la lecture<span class=\"screen-reader-text\"> de &laquo;&nbsp;Analyse, algorithme, programme&nbsp;&raquo;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"class_list":["post-480","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.mathnique.com\/site\/wp-json\/wp\/v2\/pages\/480","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mathnique.com\/site\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.mathnique.com\/site\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.mathnique.com\/site\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mathnique.com\/site\/wp-json\/wp\/v2\/comments?post=480"}],"version-history":[{"count":10,"href":"https:\/\/www.mathnique.com\/site\/wp-json\/wp\/v2\/pages\/480\/revisions"}],"predecessor-version":[{"id":3547,"href":"https:\/\/www.mathnique.com\/site\/wp-json\/wp\/v2\/pages\/480\/revisions\/3547"}],"wp:attachment":[{"href":"https:\/\/www.mathnique.com\/site\/wp-json\/wp\/v2\/media?parent=480"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}