DUT SRC – IUT de Marne-la-Vallée             23/09/2011       INF120 - Algorithmique           Cours 1Introduction aux alg...
Organisation pratique • Contact - Courriel : philippe.gambette@gmail.com   (INF120 doit apparaître dans le sujet du courri...
Organisation pratique • Notes et devoirs - Interrogations QCM en début de cours ou TD   (signalement des absences pour rat...
Sources • Le livre de Java premier langage, dA. Tasso • http://www.pise.info/algo/introduction.htm • Cours INF120 de J.-G....
Plan des cours du semestre • Introduction aux algorithmes • Variables et affectation, type et codage des données • Les tes...
Plan du cours 1 – Introduction aux algorithmes • Introduction aux algorithmes     • A quoi sert un algorithme ?     • Enje...
A quoi sert un algorithme ? • À décrire les étapes de résolution dun problème :     → de façon structurée et compacte     ...
A quoi sert un algorithme ? • À décrire les étapes de résolution dun problème :     → de façon structurée et compacte     ...
A quoi sert un algorithme ? • À décrire les étapes de résolution dun problème :     → de façon structurée et compacte     ...
A quoi sert un algorithme ? • À décrire les étapes de résolution dun problème :     → de façon structurée et compacte     ...
A quoi sert un algorithme ? • À décrire les étapes de résolution dun problème :     → de façon structurée et compacte     ...
A quoi sert un algorithme ? • À décrire les étapes de résolution dun problème :     → de façon structurée et compacte     ...
A quoi sert un algorithme ?  • À décrire les étapes de résolution dun problème :        → de façon structurée et compacte ...
A quoi sert un algorithme ?  • À décrire les étapes de résolution dun problème :        → de façon structurée et compacte ...
A quoi sert un algorithme ?  • À décrire les étapes de résolution dun problème :        → de façon structurée et compacte ...
La recette des crêpes                        http://www.crepes-recette.com
La recette des crêpes                        http://www.crepes-recette.com
La recette des crêpes                        http://www.crepes-recette.com
L“algorithme des crêpes” Ingrédients : beurre, oeufs, sachets de sucre vanillé, farine, lait, sel Récipients : saladier, v...
Organigramme de la recette des crêpes  saladier ← 4 oeufs            Crêpes ! saladier ← saladier +                       ...
Organigramme de résolution de tout problème logiciel    La “minute xkcd”    Chers parents, grands parents, collègues, et a...
Enjeux de lalgorithmique - terminaison Lalgorithme se termine-t-il en un temps fini ? Preuve de terminaison : - critère qu...
Enjeux de lalgorithmique - terminaison Lalgorithme se termine-t-il en un temps fini ? Preuve de terminaison : - critère qu...
Enjeux de lalgorithmique - terminaison Lalgorithme se termine-t-il en un temps fini ? Preuve de terminaison : - critère qu...
Enjeux de lalgorithmique - terminaison Lalgorithme se termine-t-il en un temps fini ? Preuve de terminaison : - critère qu...
Enjeux de lalgorithmique - terminaison Lalgorithme se termine-t-il en un temps fini ? Preuve de terminaison : - critère qu...
Enjeux de lalgorithmique - terminaison Lalgorithme se termine-t-il en un temps fini ? Preuve de terminaison : - critère qu...
Enjeux de lalgorithmique - terminaison Lalgorithme se termine-t-il en un temps fini ? Preuve de terminaison : - critère qu...
Enjeux de lalgorithmique - terminaison Lalgorithme se termine-t-il en un temps fini ? Preuve de terminaison : - critère qu...
Enjeux de lalgorithmique - terminaison Lalgorithme se termine-t-il en un temps fini ? Preuve de terminaison : - critère qu...
Enjeux de lalgorithmique - terminaison Lalgorithme se termine-t-il en un temps fini ? Preuve de terminaison : - critère qu...
Enjeux de lalgorithmique - terminaison   La “minute votes SMS”   Problème : aller en voiture de Châtelet à la Tour Montpar...
Enjeux de lalgorithmique - terminaison   La “minute votes SMS”   Problème : aller en voiture de Châtelet à la Tour Montpar...
Enjeux de lalgorithmique - terminaison   La “minute votes SMS”   Problème : aller en voiture de Châtelet à la Tour Montpar...
Enjeux de lalgorithmique - terminaison   La “minute votes SMS”   Problème : aller en voiture de Châtelet à la Tour Montpar...
Enjeux de lalgorithmique - terminaison   La “minute votes SMS”   Problème : aller en voiture de Châtelet à la Tour Montpar...
Enjeux de lalgorithmique - terminaison   La “minute votes SMS”   Problème : aller en voiture de Châtelet à la Tour Montpar...
Enjeux de lalgorithmique - correction Correction : Lalgorithme donne-t-il le résultat attendu ? Preuve de correction : - «...
Enjeux de lalgorithmique - complexité Complexité : Combien de temps lalgorithme prend-il pour se terminer ? Théorie de la ...
Enjeux de lalgorithmique - complexité Complexité : Combien de temps lalgorithme prend-il pour se terminer ? Théorie de la ...
De lalgorithme au programme     Besoin                                                    Mise en production    Cahier des...
De lalgorithme au programme     Besoin                                                             Mise en production    C...
Composants dun algorithme    Données du                   Algorithme :                                 Instruction 1      ...
Quels types dinstructions ? Divers types dinstructions : - déclaration dun algorithme - appel dun algorithme - déclaration...
Organigramme de la recette des crêpes  saladier ← 4 oeufs            Crêpes ! saladier ← saladier +                       ...
Organigramme de la recette des crêpes  saladier ← 4 oeufs            Crêpes !                                             ...
Organigramme de la recette des crêpes  saladier ← 4 oeufs            Crêpes !                                             ...
Organigramme de la recette des crêpes  saladier ← 4 oeufs            Crêpes !                                             ...
Organigramme de la recette des crêpes  saladier ← 4 oeufs            Crêpes !                                             ...
Variables et affectation  Dans un algorithme, une variable possède :  • un nom,  • une valeur,  • un type (ensemble des va...
Variables et affectation  Dans un algorithme, une variable possède :  • un nom,  • une valeur,  • un type (ensemble des va...
Variables et affectation  Dans un algorithme, une variable possède :  • un nom,  • une valeur,  • un type (ensemble des va...
Variables et affectation  Dans un algorithme, une variable possède :  • un nom,  • une valeur,  • un type (ensemble des va...
Noms des variables  Dans un algorithme, choisir pour les variables :  • un nom composé de lettres et éventuellement de chi...
Mon premier vrai algorithme Je connais lalgorithme daddition de deux entiers positifs. Comment écrire un algorithme de mul...
Mon premier vrai algorithme Je connais lalgorithme daddition de deux entiers positifs. Comment écrire un algorithme de mul...
Mon premier vrai algorithme Je connais lalgorithme daddition de deux entiers positifs. Comment écrire un algorithme de mul...
Mon premier vrai algorithme Je connais lalgorithme daddition de deux entiers positifs. Comment écrire un algorithme de mul...
Mon premier vrai algorithme Je connais lalgorithme daddition de deux entiers positifs. Comment écrire un algorithme de mul...
Mon premier vrai algorithme Je connais lalgorithme daddition de deux entiers positifs. Comment écrire un algorithme de mul...
Mon premier vrai algorithme Je connais lalgorithme daddition de deux entiers positifs. Comment écrire un algorithme de mul...
Mon premier vrai algorithme Je connais lalgorithme daddition de deux entiers positifs. Comment écrire un algorithme de mul...
Mon premier vrai algorithme Je connais lalgorithme daddition de deux entiers positifs. Comment écrire un algorithme de mul...
Mon premier vrai algorithme Je connais lalgorithme daddition de deux entiers positifs. Comment écrire un algorithme de mul...
Prochain SlideShare
Chargement dans…5
×

INF120 - Algo DUT SRC1 - Cours 1

7 203 vues

Publié le

Cours du 23 septembre 2011
IUT de Marne-la-Vallée, département SRC, 1° année

Publié dans : Formation
0 commentaire
1 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
7 203
Sur SlideShare
0
Issues des intégrations
0
Intégrations
5 473
Actions
Partages
0
Téléchargements
82
Commentaires
0
J’aime
1
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

INF120 - Algo DUT SRC1 - Cours 1

  1. 1. DUT SRC – IUT de Marne-la-Vallée 23/09/2011 INF120 - Algorithmique Cours 1Introduction aux algorithmes Philippe Gambette
  2. 2. Organisation pratique • Contact - Courriel : philippe.gambette@gmail.com (INF120 doit apparaître dans le sujet du courriel) - Avant ou après le cours • Matériel - Ordinateur portable : interdit pendant les TP, a priori inutile en cours et TD. - Pas de téléphone portable pendant cours/TD/TP • Déroulement des enseignements - Page web du cours : http://tinyurl.com/INF120-2011S1 - En général, distribution de notes de cours à compléter - Pause (méritée) de 5 minutes entre deux heures de TD - Passages au tableau pour les corrections dexercices en TD
  3. 3. Organisation pratique • Notes et devoirs - Interrogations QCM en début de cours ou TD (signalement des absences pour rattrapage, voir intranet) - Un devoir maison • Note finale - Prévision : environ 2/3 “compétences”, environ 1/3 “motivation” - Compétences : 2/3 devoir final (11 janvier 2012), 1/3 QCM - Motivation : devoir maison, exercices, TP • Exercices supplémentaires dentraînement - Sur demande, par courriel - Sur demande, possibilité dorganiser une séance dexercices ou de préparation au devoir final.
  4. 4. Sources • Le livre de Java premier langage, dA. Tasso • http://www.pise.info/algo/introduction.htm • Cours INF120 de J.-G. Luque • http://serecom.univ-tln.fr/cours/index.php/Algorithmie • Cours de J. Henriet : http://julienhenriet.olympe-network.com/Algo.html • http://xkcd.com, http://xkcd.free.fr
  5. 5. Plan des cours du semestre • Introduction aux algorithmes • Variables et affectation, type et codage des données • Les tests et la logique • Les boucles et leur terminaison, les tableaux • Les entrées-sorties et les fonctions
  6. 6. Plan du cours 1 – Introduction aux algorithmes • Introduction aux algorithmes • A quoi sert un algorithme ? • Enjeux de lalgorithmique • Algorithme et programme • Composants dun algorithme • Variables et affectation
  7. 7. A quoi sert un algorithme ? • À décrire les étapes de résolution dun problème : → de façon structurée et compacte → à partir dopérations de base → indépendamment dun langage de programmation
  8. 8. A quoi sert un algorithme ? • À décrire les étapes de résolution dun problème : → de façon structurée et compacte → à partir dopérations de base → indépendamment dun langage de programmation “étapes” aussi appelées “pas de lalgorithme”
  9. 9. A quoi sert un algorithme ? • À décrire les étapes de résolution dun problème : → de façon structurée et compacte → à partir dopérations de base → indépendamment dun langage de programmation Les données du problème en entrée Le résultat de sa résolution en sortie
  10. 10. A quoi sert un algorithme ? • À décrire les étapes de résolution dun problème : → de façon structurée et compacte → à partir dopérations de base → indépendamment dun langage de programmation Méthode de résolution dun problème : facile à comprendre facile à transmettre
  11. 11. A quoi sert un algorithme ? • À décrire les étapes de résolution dun problème : → de façon structurée et compacte → à partir dopérations de base → indépendamment dun langage de programmation Méthode de résolution dun problème : adaptée aux moyens à disposition adaptée aux connaissances de celui qui lutilise
  12. 12. A quoi sert un algorithme ? • À décrire les étapes de résolution dun problème : → de façon structurée et compacte → à partir dopérations de base → indépendamment dun langage de programmation Méthode de résolution dun problème : adaptée pour des problèmes qui se traitent sans ordinateur compréhensible sans apprendre un langage de programmation
  13. 13. A quoi sert un algorithme ? • À décrire les étapes de résolution dun problème : → de façon structurée et compacte → à partir dopérations de base → indépendamment dun langage de programmation La “minute culturelle” Algorithmes sans ordinateurs : - Euclide (vers -300) : calcul du PGCD de 2 nombresEuclide & Ada Lovelace : WikipediaAl-Khuwārizmī : Flickr (Heathen Dawn)
  14. 14. A quoi sert un algorithme ? • À décrire les étapes de résolution dun problème : → de façon structurée et compacte → à partir dopérations de base → indépendamment dun langage de programmation La “minute culturelle” Algorithmes sans ordinateurs : - Euclide (vers -300) : calcul du PGCD de 2 nombres - Al-Khuwārizmī (825) : résolution déquationsEuclide & Ada Lovelace : WikipediaAl-Khuwārizmī : Flickr (Heathen Dawn)
  15. 15. A quoi sert un algorithme ? • À décrire les étapes de résolution dun problème : → de façon structurée et compacte → à partir dopérations de base → indépendamment dun langage de programmation La “minute culturelle” Algorithmes sans ordinateurs : - Euclide (vers -300) : calcul du PGCD de 2 nombres - Al-Khuwārizmī (825) : résolution déquations - Ada Lovelace (1842) : calcul des nombres de Bernoulli sur la machine analytique de Charles BabbageEuclide & Ada Lovelace : WikipediaAl-Khuwārizmī : Flickr (Heathen Dawn)
  16. 16. La recette des crêpes http://www.crepes-recette.com
  17. 17. La recette des crêpes http://www.crepes-recette.com
  18. 18. La recette des crêpes http://www.crepes-recette.com
  19. 19. L“algorithme des crêpes” Ingrédients : beurre, oeufs, sachets de sucre vanillé, farine, lait, sel Récipients : saladier, verre mesureur, poêle, assiette Opérations de base : mettre dans un récipient, mélanger, attendre pendant … minutes, retourner, laisser cuire pendant ... minutes Algorithme des crêpes : Mettre 4 oeufs dans le saladier Laisser cuire la poêle pendant 0.5 minute Mettre 1 sachet de sucre vanillé dans le saladier Tant que le saladier nest pas vide : Mettre 250 g de farine dans le verre mesureur Mettre 5 cL du contenu du saladier dans Mettre le contenu du verre mesureur dans le saladier le verre mesureur Mettre 0,5 litre de lait dans le verre mesureur Mettre le contenu du verre mesureur Mettre le contenu du verre mesureur dans le saladier dans la poêle Mettre 50 grammes de beurre dans la poêle Laisser cuire la poêle pendant 2 minutes Laisser cuire la poêle pendant 1 minute Retourner le contenu de la poêle Mettre le contenu de la poêle dans le saladier Laisser cuire la poêle pendant 2 minutes Mélanger le contenu du saladier Mettre le contenu de la poêle dans Attendre pendant 60 minutes lassiette Mettre 5 grammes de beurre dans la poêle
  20. 20. Organigramme de la recette des crêpes saladier ← 4 oeufs Crêpes ! saladier ← saladier + Bon appétit ! verre ← 5cL saladier poêle ← verre sucre vanillé oui non verre ← 250g farine saladier vide ? cuire(poêle, 2 min) boucle saladier ← saladier + cuire(poêle, 0.5 min) retourner(poêle) verre assiette ← poêle verre ← 0.5L lait poêle ← 5g beurre cuire(poêle, 2 min) saladier ← saladier + attendre(60 min) verre poêle ← 50g beurre mélanger(saladier) ingrédients saladier ← saladier + cuire(poêle, 1 min) poêle récipients
  21. 21. Organigramme de résolution de tout problème logiciel La “minute xkcd” Chers parents, grands parents, collègues, et autres non-informaticiens variés. Nous ne savons pas tout faire dans tous les logiciels comme par magie. Quand on vous aide, en général on ne fait que ça : http://xkcd.com/627 http://xkcd.free.fr?id=627 Merci dimprimer cet organigramme et de le scotcher à côté de votre écran. Félicitations, vous êtes maintenant lexpert du coin en informatique !
  22. 22. Enjeux de lalgorithmique - terminaison Lalgorithme se termine-t-il en un temps fini ? Preuve de terminaison : - critère qui diminue à chaque exécution dune boucle de lalgorithme
  23. 23. Enjeux de lalgorithmique - terminaison Lalgorithme se termine-t-il en un temps fini ? Preuve de terminaison : - critère qui diminue à chaque exécution dune boucle de lalgorithme → quantité de pâte à crêpes Algorithme des crêpes : Mettre 4 oeufs dans le saladier Laisser cuire la poêle pendant 0.5 minute Mettre 1 sachet de sucre vanillé dans le saladier Tant que le saladier nest pas vide : Mettre 250 g de farine dans le verre mesureur Mettre 5 cL du contenu du saladier dans Mettre le contenu du verre mesureur dans le saladier le verre mesureur Mettre 0,5 litre de lait dans le verre mesureur Mettre le contenu du verre mesureur Mettre le contenu du verre mesureur dans le saladier dans la poêle Mettre 50 grammes de beurre dans la poêle Laisser cuire la poêle pendant 2 minutes Laisser cuire la poêle pendant 1 minute Retourner le contenu de la poêle Mettre le contenu de la poêle dans le saladier Laisser cuire la poêle pendant 2 minutes Mélanger le contenu du saladier Mettre le contenu de la poêle dans Attendre pendant 60 minutes lassiette Mettre 5 grammes de beurre dans la poêle
  24. 24. Enjeux de lalgorithmique - terminaison Lalgorithme se termine-t-il en un temps fini ? Preuve de terminaison : - critère qui diminue à chaque exécution dune boucle de lalgorithme → quantité de pâte à crêpes Algorithme des crêpes : Mettre 4 oeufs dans le saladier Laisser cuire la poêle pendant 0.5 minute Mettre 1 sachet de sucre vanillé dans le saladier Tant que le saladier nest pas vide : Mettre 250 g de farine dans le verre mesureur Mettre 5 cL du contenu du saladier dans Mettre le contenu du verre mesureur dans le saladier le verre mesureur Mettre 0,5 litre de lait dans le verre mesureur Mettre le contenu du verre mesureur Mettre le contenu du verre mesureur dans le saladier dans la poêle Mettre 50 grammes de beurre dans la poêle Laisser cuire la poêle pendant 2 minutes Laisser cuire la poêle pendant 1 minute Retourner le contenu de la poêle Mettre le contenu de la poêle dans le saladier Laisser cuire la poêle pendant 2 minutes Mélanger le contenu du saladier Mettre le contenu de la poêle dans Attendre pendant 60 minutes lassiette Mettre 5 grammes de beurre dans la poêle boucle
  25. 25. Enjeux de lalgorithmique - terminaison Lalgorithme se termine-t-il en un temps fini ? Preuve de terminaison : - critère qui diminue à chaque exécution dune boucle de lalgorithme - suite à valeurs entières positives, strictement décroissante à chaque exécution dune boucle de lalgorithme La “minute mathématique” Valeurs entières : critère 100 au pas i, critère = 100/i 50 10 i 1 2 3 4 5 pas de lalgorithme
  26. 26. Enjeux de lalgorithmique - terminaison Lalgorithme se termine-t-il en un temps fini ? Preuve de terminaison : - critère qui diminue à chaque exécution dune boucle de lalgorithme - suite à valeurs entières positives, strictement décroissante à chaque exécution dune boucle de lalgorithme La “minute mathématique” Valeurs entières : critère 100 au pas i, ne termine pas ! critère = 100/i 50 10 i 1 2 3 4 5 pas de lalgorithme
  27. 27. Enjeux de lalgorithmique - terminaison Lalgorithme se termine-t-il en un temps fini ? Preuve de terminaison : - critère qui diminue à chaque exécution dune boucle de lalgorithme - suite à valeurs entières positives, strictement décroissante à chaque exécution dune boucle de lalgorithme La “minute mathématique” Valeurs positives : critère 4 au pas i, 3 critère = 5-i 2 1 0 i 1 2 3 4 5 pas de lalgorithme
  28. 28. Enjeux de lalgorithmique - terminaison Lalgorithme se termine-t-il en un temps fini ? Preuve de terminaison : - critère qui diminue à chaque exécution dune boucle de lalgorithme - suite à valeurs entières positives, strictement décroissante à chaque exécution dune boucle de lalgorithme La “minute mathématique” Valeurs positives : critère 4 au pas i, ne termine pas ! 3 critère = 5-i 2 1 0 i 1 2 3 4 5 pas de lalgorithme
  29. 29. Enjeux de lalgorithmique - terminaison Lalgorithme se termine-t-il en un temps fini ? Preuve de terminaison : - critère qui diminue à chaque exécution dune boucle de lalgorithme - suite à valeurs entières positives, strictement décroissante à chaque exécution dune boucle de lalgorithme La “minute mathématique” Strictement décroissante : critère au pas i, critère = 4 3 • 5-i si i<5 2 • 1 sinon 1 0 i 1 2 3 4 5 pas de lalgorithme
  30. 30. Enjeux de lalgorithmique - terminaison Lalgorithme se termine-t-il en un temps fini ? Preuve de terminaison : - critère qui diminue à chaque exécution dune boucle de lalgorithme - suite à valeurs entières positives, strictement décroissante à chaque exécution dune boucle de lalgorithme La “minute mathématique” Strictement décroissante : critère au pas i, ne termine pas ! critère = 4 3 • 5-i si i<5 2 • 1 sinon 1 0 i 1 2 3 4 5 pas de lalgorithme
  31. 31. Enjeux de lalgorithmique - terminaison Lalgorithme se termine-t-il en un temps fini ? Preuve de terminaison : - critère qui diminue à chaque exécution dune boucle de lalgorithme - suite à valeurs entières positives, strictement décroissante à chaque exécution dune boucle de lalgorithme La “minute mathématique” Théorème : Toute suite à valeurs entières positives, strictement décroissante, ne peut prendre quun nombre fini de valeurs. Application : Trouver la suite qui convient pour prouver la terminaison dun algorithme.
  32. 32. Enjeux de lalgorithmique - terminaison La “minute votes SMS” Problème : aller en voiture de Châtelet à la Tour Montparnasse
  33. 33. Enjeux de lalgorithmique - terminaison La “minute votes SMS” Problème : aller en voiture de Châtelet à la Tour Montparnasse Algorithme “du repère visuel” : A tout instant on sait où se trouve la Tour Montparnasse → prendre la rue qui sen rapproche le plus
  34. 34. Enjeux de lalgorithmique - terminaison La “minute votes SMS” Problème : aller en voiture de Châtelet à la Tour Montparnasse Algorithme “du repère visuel” : A tout instant on sait où se trouve la Tour Montparnasse → prendre la rue qui sen rapproche le plus algorithme de la famille des algorithmes gloutons toujours choisir le profit maximum !
  35. 35. Enjeux de lalgorithmique - terminaison La “minute votes SMS” Problème : aller en voiture de Châtelet à la Tour Montparnasse Algorithme “du repère visuel” : A tout instant on sait où se trouve la Tour Montparnasse → prendre la rue qui sen rapproche le plus Question : lalgorithme “du repère visuel” termine ?
  36. 36. Enjeux de lalgorithmique - terminaison La “minute votes SMS” Problème : aller en voiture de Châtelet à la Tour Montparnasse Algorithme “du repère visuel” : A tout instant on sait où se trouve la Tour Montparnasse → prendre la rue qui sen rapproche le plus Question : lalgorithme “du repère visuel” termine ? distance (en millimètres, au mm près) entre la position actuelle et la Tour Montparnasse, entière, positive, strictement décroissante ? Illustration : http://www.tourmontparnasse56.com
  37. 37. Enjeux de lalgorithmique - terminaison La “minute votes SMS” Problème : aller en voiture de Châtelet à la Tour Montparnasse Algorithme “du repère visuel” : A tout instant on sait où se trouve la Tour Montparnasse → prendre la rue qui sen rapproche le plus Question : lalgorithme “du repère visuel” termine ? NON ! distance (en millimètres, au mm près) entre la position actuelle et la Tour Montparnasse, entière, positive, strictement décroissante ? Illustration : http://www.tourmontparnasse56.com
  38. 38. Enjeux de lalgorithmique - correction Correction : Lalgorithme donne-t-il le résultat attendu ? Preuve de correction : - « invariant » : propriété vraie tout au long de lalgorithme • vraie à la première étape • si vraie à une étape, vraie à létape suivante  vrai à la fin En pratique, pour débuter : - vérifier sur les “cas de base” - vérifier sur des exemples aléatoires
  39. 39. Enjeux de lalgorithmique - complexité Complexité : Combien de temps lalgorithme prend-il pour se terminer ? Théorie de la complexité : - évaluer le nombre dopérations en fonction de la taille du problème, dans le pire cas - prouver quon ne peut pas utiliser moins dopérations pour résoudre le problème, dans le pire cas En pratique, pour débuter : - vérifier sur des exemples aléatoires - connaître les cas difficiles
  40. 40. Enjeux de lalgorithmique - complexité Complexité : Combien de temps lalgorithme prend-il pour se terminer ? Théorie de la complexité : - évaluer le nombre dopérations en fonction de la taille du problème, dans le pire cas - prouver quon ne peut pas utiliser moins dopérations pour résoudre le problème, dans le pire cas En pratique, pour débuter : - vérifier sur des exemples aléatoires - connaître les cas difficiles impossible de faire mieux que la ligne droite !
  41. 41. De lalgorithme au programme Besoin Mise en production Cahier des charges Tests dintégration Tests fonctionnels Analyse et techniques Écriture de Tests unitaires lalgorithme Compilation et Codage assemblage programme : code source programme : exécutable http://julienhenriet.olympe-network.com/Algo.html
  42. 42. De lalgorithme au programme Besoin Mise en production Cahier des charges Tests dintégration Tests fonctionnels Analyse et techniques intuition clarté rigueur Écriture de Tests unitaires lalgorithme Compilation et Codage assemblage programme : code source programme : exécutable INF120 http://julienhenriet.olympe-network.com/Algo.html
  43. 43. Composants dun algorithme Données du Algorithme : Instruction 1 Résultat problème Instruction 2 sorties de entrées de Instruction 3 lalgorithme lalgorithme ... ingrédients beurre, oeufs, sachets crêpes de sucre vanillé, farine, Recette des crêpes lait, sel informations sur itinéraire lenvironnement Guidage GPS ou prochaineplan des rues, position de direction à la voiture, position de la prendre Tour Montparnasse deux entiers Multiplication leur produit entier1 et entier2 entier1 x entier2
  44. 44. Quels types dinstructions ? Divers types dinstructions : - déclaration dun algorithme - appel dun algorithme - déclaration dune variable pour stocker des valeurs, des résultats intermédiaires - affectation dune variable - entrées / sorties - boucle - test
  45. 45. Organigramme de la recette des crêpes saladier ← 4 oeufs Crêpes ! saladier ← saladier + Bon appétit ! verre ← 5cL saladier poêle ← verre sucre vanillé oui non verre ← 250g farine saladier vide ? cuire(poêle, 2 min) saladier ← saladier + cuire(poêle, 0.5 min) retourner(poêle) verre assiette ← poêle verre ← 0.5L lait poêle ← 5g beurre cuire(poêle, 2 min) saladier ← saladier + attendre(60 min) verre poêle ← 50g beurre mélanger(saladier) ingrédients saladier ← saladier + cuire(poêle, 1 min) poêle récipients
  46. 46. Organigramme de la recette des crêpes saladier ← 4 oeufs Crêpes ! sorties saladier ← saladier + Bon appétit ! verre ← 5cL saladier poêle ← verre sucre vanillé oui non verre ← 250g farine saladier vide ? cuire(poêle, 2 min) saladier ← saladier + cuire(poêle, 0.5 min) retourner(poêle) verre assiette ← poêle verre ← 0.5L lait poêle ← 5g beurre cuire(poêle, 2 min) saladier ← saladier + attendre(60 min) verre poêle ← 50g beurre mélanger(saladier) entrées ingrédients saladier ← saladier + cuire(poêle, 1 min) poêle récipients
  47. 47. Organigramme de la recette des crêpes saladier ← 4 oeufs Crêpes ! sorties affectations saladier ← saladier + Bon appétit ! verre ← 5cL saladier poêle ← verre sucre vanillé oui non verre ← 250g farine saladier vide ? cuire(poêle, 2 min) saladier ← saladier + cuire(poêle, 0.5 min) retourner(poêle) verre assiette ← poêle verre ← 0.5L lait poêle ← 5g beurre cuire(poêle, 2 min) saladier ← saladier + attendre(60 min) verre poêle ← 50g beurre mélanger(saladier) entrées ingrédients saladier ← saladier + cuire(poêle, 1 min) poêle récipients variables
  48. 48. Organigramme de la recette des crêpes saladier ← 4 oeufs Crêpes ! sorties affectations saladier ← saladier + Bon appétit ! verre ← 5cL saladier poêle ← verre sucre vanillé oui non verre ← 250g farine saladier vide ? cuire(poêle, 2 min) boucle saladier ← saladier + cuire(poêle, 0.5 min) retourner(poêle) verre assiette ← poêle verre ← 0.5L lait poêle ← 5g beurre cuire(poêle, 2 min) saladier ← saladier + attendre(60 min) verre poêle ← 50g beurre mélanger(saladier) entrées ingrédients saladier ← saladier + cuire(poêle, 1 min) poêle récipients variables
  49. 49. Organigramme de la recette des crêpes saladier ← 4 oeufs Crêpes ! sorties affectations saladier ← saladier + Bon appétit ! verre ← 5cL saladier poêle ← verre sucre vanillé oui non verre ← 250g farine saladier vide ? cuire(poêle, 2 min) boucle saladier ← saladier + cuire(poêle, 0.5 min) retourner(poêle) verre assiette ← poêle verre ← 0.5L lait poêle ← 5g beurre cuire(poêle, 2 min) saladier ← saladier + attendre(60 min) verre appels dalgorithmes poêle ← 50g beurre mélanger(saladier) entrées ingrédients saladier ← saladier + cuire(poêle, 1 min) poêle récipients variables
  50. 50. Variables et affectation Dans un algorithme, une variable possède : • un nom, • une valeur, • un type (ensemble des valeurs que peut prendre la variable).
  51. 51. Variables et affectation Dans un algorithme, une variable possède : • un nom, • une valeur, • un type (ensemble des valeurs que peut prendre la variable). La valeur dune variable : En revanche, le nom et • est fixe à un moment donné, le type dune variable • peut changer au cours du temps. ne changent pas.
  52. 52. Variables et affectation Dans un algorithme, une variable possède : • un nom, • une valeur, • un type (ensemble des valeurs que peut prendre la variable). La valeur dune variable : • est fixe à un moment donné, • peut changer au cours du temps. Laffectation change la valeur dune variable : •a←5: - la variable a prend la valeur 5 - la valeur précédente est perdue (“écrasée”) •a←b: - la variable a prend la valeur de la variable b - la valeur précédente de a est perdue (“écrasée”) - la valeur de b nest pas modifiée - a et b doivent être de même type (ou de type compatible)
  53. 53. Variables et affectation Dans un algorithme, une variable possède : • un nom, • une valeur, • un type (ensemble des valeurs que peut prendre la variable). La valeur dune variable : • est fixe à un moment donné, • peut changer au cours du temps. Laffectation change la valeur dune variable : •a←5: - la variable a prend la valeur 5 - la valeur précédente est perdue (“écrasée”) •a←b: - la variable a prend la valeur de la variable b - la valeur précédente de a est perdue (“écrasée”) - la valeur de b nest pas modifiée La recette de cuisine avec - a et b doivent être de même type récipients nest quune métaphore (ou de type compatible)
  54. 54. Noms des variables Dans un algorithme, choisir pour les variables : • un nom composé de lettres et éventuellement de chiffres • un nom expressif, par exemple : - chaine, requête1... pour une chaîne de caractères - n, a, b, compteur, nbOperations, longueur... pour un entier - x, y, température pour un réel - estEntier, testEntier, trouvé... pour un booléen • un nom assez court (il faut lécrire !) • éviter les noms réservés : pour, tant que, si... Dans un programme : • éviter les lettres accentuées et la ponctuation • préférer langlais si votre code source est diffusé largement • être expressif et lisible : - est_entier ou estEntier plutôt que estentier Votre code sera relu, par vous ou par dautres...
  55. 55. Mon premier vrai algorithme Je connais lalgorithme daddition de deux entiers positifs. Comment écrire un algorithme de multiplication de deux entiers ? Intuition : 5x3 = 5+5+5 3 fois entier1 x entier2 = entier1 + entier1 + entier1 + … + entier1 entier2 fois
  56. 56. Mon premier vrai algorithme Je connais lalgorithme daddition de deux entiers positifs. Comment écrire un algorithme de multiplication de deux entiers ? Multiplication : Entrées : deux entiers entier1 et entier2 Sorties : le produit de entier1 et entier2 Variables : Début pseudo-code Fin
  57. 57. Mon premier vrai algorithme Je connais lalgorithme daddition de deux entiers positifs. Comment écrire un algorithme de multiplication de deux entiers ? Multiplication : Entrées : deux entiers entier1 et entier2 Sorties : le produit de entier1 et entier2 Variables : entiers compteur et résultat Début compteur ← 0 résultat ← entier1 compteur ← 1 Tant que compteur ≤ entier2 faire : résultat ← addition(résultat, entier1) Fin tant que renvoyer produit Fin
  58. 58. Mon premier vrai algorithme Je connais lalgorithme daddition de deux entiers positifs. Comment écrire un algorithme de multiplication de deux entiers ? Multiplication : Terminaison ? Entrées : deux entiers entier1 et entier2 La condition de sortie de boucle nest jamais vérifiée car compteur Sorties : le produit de entier1 et entier2 ne varie pas. Variables : entiers compteur et résultat Lalgorithme ne termine pas. Début compteur ← 0 résultat ← entier1 compteur ← 1 Tant que compteur ≤ entier2 faire : résultat ← addition(résultat, entier1) Fin tant que renvoyer produit Fin
  59. 59. Mon premier vrai algorithme Je connais lalgorithme daddition de deux entiers positifs. Comment écrire un algorithme de multiplication de deux entiers ? Multiplication : Entrées : deux entiers entier1 et entier2 Sorties : le produit de entier1 et entier2 Variables : entiers compteur et résultat Début compteur ← 0 résultat ← entier1 compteur ← 1 Tant que compteur ≤ entier2 faire : résultat ← addition(résultat, entier1) compteur ← addition(compteur, 1) Fin tant que renvoyer produit Fin
  60. 60. Mon premier vrai algorithme Je connais lalgorithme daddition de deux entiers positifs. Comment écrire un algorithme de multiplication de deux entiers ? Multiplication : Terminaison ? Entrées : deux entiers entier1 et entier2 Oui car compteur augmente progressivement jusquà arriver à Sorties : le produit de entier1 et entier2 entier2. Variables : entiers compteur et résultat Plus formellement, lensemble des Début valeurs successives de compteur ← 0 (entier2 – compteur) (à la fin de chaque boucle) est une résultat ← entier1 suite dentiers positifs strictement compteur ← 1 décroissante. Tant que compteur ≤ entier2 faire : Lalgorithme termine. résultat ← addition(résultat, entier1) compteur ← addition(compteur, 1) Fin tant que renvoyer produit Fin
  61. 61. Mon premier vrai algorithme Je connais lalgorithme daddition de deux entiers positifs. Comment écrire un algorithme de multiplication de deux entiers ? Multiplication : Correction ? Entrées : deux entiers entier1 et entier2 Essayons avec lexemple : entier1 = 5 et entier2 = 3 Sorties : le produit de entier1 et entier2 Variables : entiers compteur et résultat Tableau des valeurs des variables avant le début de la i-ième boucle Début Tant que : compteur ← 0 i 1 2 3 4 résultat ← entier1 compteur 1 2 3 4 compteur ← 1 résultat 5 10 15 20 Tant que compteur ≤ entier2 faire : entier1 5 5 5 5 entier2 3 3 3 3 résultat ← addition(résultat, entier1) compteur ← addition(compteur, 1) La boucle nest exécutée que 3 Fin tant que fois mais on renvoie 20 : lalgorithme nest pas correct ! renvoyer produit Fin
  62. 62. Mon premier vrai algorithme Je connais lalgorithme daddition de deux entiers positifs. Comment écrire un algorithme de multiplication de deux entiers ? Multiplication : Correction ? Entrées : deux entiers entier1 et entier2 Essayons avec lexemple : entier1 = 5 et entier2 = 3 Sorties : le produit de entier1 et entier2 Variables : entiers compteur et résultat Tableau des valeurs des variables avant le début de la i-ième boucle Début Tant que : compteur ← 0 i 1 2 3 4 résultat ← entier1 compteur 1 2 3 - compteur ← 1 résultat 5 10 15 - Tant que compteur < entier2 faire : entier1 5 5 5 - entier2 3 3 3 - résultat ← addition(résultat, entier1) compteur ← addition(compteur, 1) La boucle nest exécutée que 2 Fin tant que fois et on renvoie 15 : lalgorithme semble correct... renvoyer produit Fin … mais ne lest pas pour entier2=0
  63. 63. Mon premier vrai algorithme Je connais lalgorithme daddition de deux entiers positifs. Comment écrire un algorithme de multiplication de deux entiers ? Multiplication : Entrées : deux entiers entier1 et entier2 Sorties : le produit de entier1 et entier2 Variables : entiers compteur et produit Début compteur ← 0 produit ← 0 Tant que compteur < entier2 faire : produit ← addition(produit, entier1) compteur ← addition(compteur, 1) Fin tant que renvoyer produit Fin
  64. 64. Mon premier vrai algorithme Je connais lalgorithme daddition de deux entiers positifs. Comment écrire un algorithme de multiplication de deux entiers ? Multiplication : Correction ? Entrées : deux entiers entier1 et entier2 entier1 = 5 et entier2 = 3 Sorties : le produit de entier1 et entier2 Tableau des valeurs des variables Variables : entiers compteur et produit avant le début de la i-ième boucle Tant que : Début i 1 2 3 4 compteur ← 0 compteur 0 1 2 3 produit ← 0 produit 0 5 10 15 Tant que compteur < entier2 faire : entier1 5 5 5 5 produit ← addition(produit, entier1) entier2 3 3 3 3 compteur ← addition(compteur, 1) On remarque que produit est égal Fin tant que à compteur x entier1 tout au long renvoyer produit de lalgorithme. Or à la fin de lalgorithme Fin compteur=entier2 donc lalgorithme est correct.

×