2.Les bases de lalgorithmique P. Costamagna – ISEN N1
P. Costamagna2 A. Décomposition en sous-problèmes Exemple :
P. Costamagna3 B. Langage intermédiaire Son rôle Notion de bloc Exemple : Séquence
P. Costamagna4 B. Langage intermédiaire (suite1) Alternative La condition énoncée doit être décidable sans ambiguïté par lexécutant si une condition est remplie, alors telle action sera exécutée (sinon telle autre action sera exécutée). Exemple :
P. Costamagna5 B. Langage intermédiaire (suite2) Répétition ou itération Pour chaque poche faire la recherche de la clé. Tant que la clé na pas été trouvée fouiller une autre poche. Répéter la fouille de chaque poche lune après lautre jusquà ce que la clé soit trouvée. Exemple :
P. Costamagna6 C. Exemple : Environnement Fournir au robot la marche à suivre qui va lui permettre de peler la quantité de pommes de terre suffisante pour remplir la marmite. Le robot peleur de pommes de terre But Les instructions daction élémentaire - REMPLIS = le robot remplit le panier - PELE = il prend une pomme de terre dans le panier, la pèle et la place dans la marmite.
P. Costamagna7 C. Exemple (suite1) Les conditions que lexécutant peut tester - La marmite est remplie ? oui / non - Le panier est vide ? oui / non Possibilité de former des conditions plus complexes : - en énonçant le contraire des conditions précédentes - en les liant par les mots ET et OU Précisions - Aucune supposition quant à létat initial du panier - Aucune indication sur la taille du panier - Idem pour la marmite
P. Costamagna8 C. Exemple (suite2) Première proposition SI le panier est vide ALORS Remplis TANT QUE la marmite nest pas remplie Pèle 1 ère situation :
P. Costamagna9 C. Exemple (suite3) SI le panier est vide ALORS Remplis TANT QUE la marmite nest pas remplie Pèle 2 ème situation : Tester un programme peut éventuellement montrer quil ne fonctionne pas mais jamais prouver quil est correct.
P. Costamagna10 C. Exemple (suite4) SI le panier est vide ALORS Remplis TANT QUE la marmite nest pas remplie Pèle 3 ème situation : Le problème crucial sera de sassurer que la marche à suivre donnée conduit à des exécutions satisfaisantes dans tous les cas imaginables !
P. Costamagna11 C. Exemple (suite5) Deuxième proposition TANT QUE la marmite nest pas remplie TANT QUE le panier nest pas vide SI la marmite nest pas remplie ALORS Pèle Remplis 1 ère situation : Lexécutant travaille sans jamais sarrêter !
P. Costamagna12 C. Exemple (suite6) Troisième proposition REPETER Fais tout ce quil faut pour mettre une pomme de terre en plus dans la marmite TANT QUE la marmite nest pas remplie Le problème nest alors plus dexpliquer comment faire pour remplir la marmite ? mais comment faire pour ajouter une pomme de terre supplémentaire dans la marmite ?
P. Costamagna13 C. Exemple (suite7) TANT QUE la marmite nest pas remplie Fais tout ce quil faut pour mettre une pomme de terre en plus dans la marmite Tout fonctionne correctement sauf si aucune pomme de terre ne doit être pelée parce que la marmite fournie est déjà remplie. La question de savoir si la marmite est remplie ou non est posée trop tard. Le problème du remplissage de la marmite a disparu.
P. Costamagna14 C. Exemple (suite8) TANT QUE la marmite nest pas remplie SI le panier est vide ALORS Remplis Pèle Reste à expliquer comment ajouter une pomme de terre supplémentaire Le seul paramètre gênant à ce propos concerne létat du panier. Proposition finale
P. Costamagna15 D. Fonction Savoir décomposer un problème en actions, sous-actions … est important pour programmer. Mais il faut pouvoir réutiliser des choses faites auparavant. Exemple : Il faut que la forme sy prête Brique de base = Fonction ou sous-programme sin (x)
P. Costamagna16 E. Programme principal Une fonction fonctionne exactement comme un programme informatique tout entier Le programme principal = fonction principale doit toujours porter le même nom. En C, cette fonction principale porte tout simplement le nom de main.
P. Costamagna17 F. Qualité décriture du code Bug Conventions: - écrire le code le plus simplement possible ; - commenter le plus possible le code; - utiliser des indentations comme dans les exemples précédents pour visualiser rapidement les blocs dinstructions.