Anda di halaman 1dari 3

12/09/13

Cours d'Algorithmique - Christophe Darmangeat

Prambule : le Codage Introduction l'algorithmique


Qu'est-ce que l'algomachin ? Faut-il tre matheux ?... L'ADN, les Shadoks et les ordinateurs Algorithmique et programmation Avec quelles conventions crit-on ?

Rappel : ce cours d'algorithmique et de programmation est enseign l'Universit Paris 7, dans la spcialit PISE du Master MECI (ancien DESS AIGES) par Christophe Darmangeat

1. Les Variables 2. Lecture et Ecriture 3. Les Tests 4. Encore de la Logique 5. Les Boucles 6. Les Tableaux 7. Techniques Ruses 8. Tableaux Multidimensionnels 9. Fonctions Prdfinies 10. Fichiers 11. Procdures et Fonctions 12. Notions Complmentaires Liens Souvent Poses Questions

PARTIE 1 I NTRODUCTION A L ALGORITHMIQUE


Un langage de programmation est une convention pour donner des ordres un ordinateur. Ce nest pas cens tre obscur, bizarre et plein de piges subtils. Ca, ce sont les caractristiques de la magie. Dave Small C'est illogique, Capitaine - Mr Spock

Lalgorithmique est un terme dorigine arabe, comme algbre, amiral ou znith. Ce nest pas une excuse pour massacrer son orthographe, ou sa prononciation. Ainsi, lalgo nest pas rythmique , la diffrence du bon rockn roll. Lalgo nest pas non plus lagglo . Alors, ne confondez pas lalgorithmique avec lagglo rythmique, qui consiste poser des parpaings en cadence.

Trs loin de l'informatique, pas tout prs de l'conomie :

1. Quest-ce que lalgomachin ?


Avez-vous dj ouvert un livre de recettes de cuisine ? Avez vous dj dchiffr un mode demploi traduit directement du coren pour faire fonctionner un magntoscope ou un rpondeur tlphonique rticent ? Si oui, sans le savoir, vous avez dj excut des algorithmes. Plus fort : avez-vous dj indiqu un chemin un touriste gar ? Avez vous fait chercher un objet quelquun par tlphone ? Ecrit une lettre anonyme stipulant comment procder une remise de ranon ? Si oui, vous avez dj fabriqu et fait excuter des algorithmes. Comme quoi, lalgorithmique nest pas un savoir sotrique rserv quelques rares initis touchs par la grce divine, mais une aptitude partage par la totalit de lhumanit. Donc, pas dexcuses Un algorithme, cest une suite dinstructions, qui une fois excute correctement, conduit un rsultat donn. Si lalgorithme est juste, le rsultat est le rsultat voulu, et le touriste se retrouve l o il voulait aller. Si lalgorithme est faux, le rsultat est, disons, alatoire, et dcidment, cette saloperie de rpondeur ne veut rien savoir. Compltons toutefois cette dfinition. Aprs tout, en effet, si lalgorithme, comme on vient de le dire, nest quune suite dinstructions menant celui qui lexcute rsoudre un problme, pourquoi ne pas donner comme instruction unique : rsous le problme , et laisser linterlocuteur se dbrouiller avec a ? A ce tarif, nimporte qui serait champion dalgorithmique sans faire aucun effort. Pas de a Lisette, ce serait trop facile. Le malheur (ou le bonheur, tout dpend du point de vue) est que justement, si le touriste vous demande son chemin, cest quil ne le connat pas. Donc, si on nest pas un goujat intgral, il ne sert rien de lui dire de le trouver tout seul. De mme les modes demploi contiennent gnralement (mais pas toujours) un peu plus dinformations que dbrouillez vous pour que a marche . Pour fonctionner, un algorithme doit donc contenir uniquement des instructions comprhensibles par celui qui devra lexcuter. Cest dailleurs lun des points dlicats pour les rdacteurs de modes demploi : les rfrences culturelles, ou lexicales, des utilisateurs, tant variables, un mme mode demploi peut tre trs clair pour certains et parfaitement abscons pour dautres. En informatique, heureusement, il ny a pas ce problme : les choses auxquelles ont doit donner des instructions sont les ordinateurs, et ceux-ci ont le bon got dtre tous strictement aussi idiots les uns que les autres.

Visitez mon blog ! propos d'anthropologie, de marxisme et d'volution sociale... Et mes livres...

En savoir plus...

Retour Haut de Page

2. Faut-il tre matheux pour tre bon en algorithmique ?


pise.info/algo/introduction.htm

Je consacre quelques lignes cette question, car cette opinion aussi fortement affirme que

1/3

12/09/13

Cours d'Algorithmique - Christophe Darmangeat

En savoir plus... Ne manquez pas mon groupe de country-rock, les incroyables Moonlight Swampers !

Je consacre quelques lignes cette question, car cette opinion aussi fortement affirme que faiblement fonde sert rgulirement dexcuse : moi, de toute faon, je suis mauvais(e) en algo, jai jamais rien pig aux maths . Faut-il tre bon en maths pour expliquer correctement son chemin quelquun ? Je vous laisse juge. La matrise de lalgorithmique requiert deux qualits, trs complmentaires dailleurs : il faut avoir une certaine intuition, car aucune recette ne permet de savoir a priori quelles instructions permettront dobtenir le rsultat voulu. Cest l, si lon y tient, quintervient la forme dintelligence requise pour lalgorithmique. Alors, cest certain, il y a des gens qui possdent au dpart davantage cette intuition que les autres. Cependant, et jinsiste sur ce point, les rflexes, cela sacquiert. Et ce quon appelle lintuition nest finalement que de lexprience tellement rpte que le raisonnement, au dpart laborieux, finit par devenir spontan . il faut tre mthodique et rigoureux. En effet, chaque fois quon crit une srie dinstructions quon croit justes, il faut systmatiquement se mettre mentalement la place de la machine qui va les excuter, arm d'un papier et d'un crayon, afin de vrifier si le rsultat obtenu est bien celui que lon voulait. Cette opration ne requiert pas la moindre once dintelligence. Mais elle reste nanmoins indispensable, si lon ne veut pas crire laveuglette. Et petit petit, force de pratique, vous verrez que vous pourrez faire de plus en plus souvent lconomie de cette dernire tape : lexprience fera que vous verrez le rsultat produit par vos instructions, au fur et mesure que vous les crirez. Naturellement, cet apprentissage est long, et demande des heures de travail patient. Aussi, dans un premier temps, vitez de sauter les tapes : la vrification mthodique, pas pas, de chacun de vos algorithmes reprsente plus de la moiti du travail accomplir... et le gage de vos progrs.

Vous aimez les petites btes qui vivent sous l'eau ?

Faites donc un tour vers mes photos sous-marines

Retour Haut de Page

3. LADN, les Shadoks, et les ordinateurs


Quel rapport me direz-vous ? Eh bien le point commun est : quatre mots de vocabulaire. Lunivers lexical Shadok, cest bien connu, se limite aux termes Ga , Bu , Zo , et Meu . Ce qui leur a tout de mme permis de formuler quelques fortes maximes, telles que : Mieux vaut pomper et quil ne se passe rien, plutt quarrter de pomper et risquer quil se passe quelque chose de pire (pour dautres fortes maximes Shadok, nhsitez pas visiter leur site Internet, il y en a toute une collection qui vaut le dtour). LADN, qui est en quelque sorte le programme gntique, lalgorithme la base de construction des tres vivants, est une chane construite partir de quatre lments invariables. Ce nest que le nombre de ces lments, ainsi que lordre dans lequel ils sont arrangs, qui vont dterminer si on obtient une puce ou un lphant. Et tous autant que nous sommes, splendides russites de la Nature, avons t construits par un programme constitu uniquement de ces quatre briques, ce qui devrait nous inciter la modestie. Enfin, les ordinateurs, quels quils soient, ne sont fondamentalement capables de comprendre que quatre catgories d'ordres (en programmation, on n'emploiera pas le terme d'ordre, mais plutt celui d'instructions). Ces quatre familles d'instructions sont : laffectation de variables la lecture / criture les tests les boucles Un algorithme informatique se ramne donc toujours au bout du compte la combinaison de ces quatre petites briques de base. Il peut y en avoir quelques unes, quelques dizaines, et jusqu plusieurs centaines de milliers dans certains programmes de gestion. Rassurez-vous, dans le cadre de ce cours, nous nirons pas jusque l (cependant, la taille dun algorithme ne conditionne pas en soi sa complexit : de longs algorithmes peuvent tre finalement assez simples, et de petits trs compliqus).

Retour Haut de Page

4. Algorithmique et programmation
Pourquoi apprendre lalgorithmique pour apprendre programmer ? En quoi a-t-on besoin dun langage spcial, distinct des langages de programmation comprhensibles par les ordinateurs ? Parce que lalgorithmique exprime les instructions rsolvant un problme donn indpendamment
pise.info/algo/introduction.htm 2/3

12/09/13

Parce que lalgorithmique exprime les instructions rsolvant un problme donn indpendamment des particularits de tel ou tel langage. Pour prendre une image, si un programme tait une dissertation, lalgorithmique serait le plan, une fois mis de ct la rdaction et lorthographe. Or, vous savez quil vaut mieux faire dabord le plan et rdiger ensuite que linverse Apprendre lalgorithmique, cest apprendre manier la structure logique dun programme informatique. Cette dimension est prsente quelle que soit le langage de programmation ; mais lorsquon programme dans un langage (en C, en Visual Basic, etc.) on doit en plus se colleter les problmes de syntaxe, ou de types dinstructions, propres ce langage. Apprendre lalgorithmique de manire spare, cest donc srier les difficults pour mieux les vaincre. A cela, il faut ajouter que des gnrations de programmeurs, souvent autodidactes (mais pas toujours, hlas !), ayant directement appris programmer dans tel ou tel langage, ne font pas mentalement clairement la diffrence entre ce qui relve de la structure logique gnrale de toute programmation (les rgles fondamentales de lalgorithmique) et ce qui relve du langage particulier quils ont appris. Ces programmeurs, non seulement ont beaucoup plus de mal passer ensuite un langage diffrent, mais encore crivent bien souvent des programmes qui mme sils sont justes, restent laborieux. Car on nignore pas impunment les rgles fondamentales de lalgorithmique Alors, autant lapprendre en tant que telle ! Bon, maintenant que jai bien fait larticle pour vendre ma marchandise, on va presque pouvoir passer au vif du sujet

Cours d'Algorithmique - Christophe Darmangeat

Retour Haut de Page

5. Avec quelles conventions crit-on un algorithme ?


Historiquement, plusieurs types de notations ont reprsent des algorithmes. Il y a eu notamment une reprsentation graphique, avec des carrs, des losanges, etc. quon appelait des organigrammes. Aujourdhui, cette reprsentation est quasiment abandonne, pour deux raisons. Dabord, parce que ds que lalgorithme commence grossir un peu, ce nest plus pratique du tout du tout. Ensuite parce que cette reprsentation favorise le glissement vers un certain type de programmation, dite non structure (nous dfinirons ce terme plus tard), que lon tente au contraire dviter. Cest pourquoi on utilise gnralement une srie de conventions appele pseudo-code , qui ressemble un langage de programmation authentique dont on aurait vacu la plupart des problmes de syntaxe. Ce pseudo-code est susceptible de varier lgrement dun livre (ou dun enseignant) un autre. Cest bien normal : le pseudo-code, encore une fois, est purement conventionnel ; aucune machine nest cense le reconnatre. Donc, chaque cuisinier peut faire sa sauce sa guise, avec ses petites pices bien lui, sans que cela prte consquence. Comme je nai pas moins de petites manies que la majorit de mes semblables, le pseudo-code que vous dcouvrirez dans les pages qui suivent possde quelques spcificits mineures qui ne doivent qu mes nvroses personnelles. Rassurez-vous cependant, celles-ci restent dans les limites tout fait acceptables. En tout cas, personnellement, je les accepte trs bien.

Retour Haut de Page

pise.info/algo/introduction.htm

3/3

Anda mungkin juga menyukai