Algorithmique et structures de données I Riadh Ben Messaoud Université 7 novembre à Carthage Faculté des Sciences Économiques et de Gestion de Nabeul 1ère année Licence Fondamentale IAG 1ère année Licence Appliquée IAG Année universitaire 2009 – 2010 R. Ben Messaoud (FSEGN) Algorithmique I 2009 – 2010 1 / 11 Syllabus du cours ... Syllabus : http://eric.univ-lyon2.fr/~rbenmessaoud/ Objectif : se familiariser avec les méthodes de résolution de problèmes avec l’outil informatique ; apprendre les principes de l’algorithmique ; acquérir un début de maı̂trise des techniques et langages de programmation. Pré-requis : Connaissances générales en informatique utiles, mais pas indispensables. Organisation : 21 h de cours + 21 h de TD Bibliographie : Introduction à l’algorithmique, Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest et Clifford Stein, Dunod, Paris, 2004. Algorithmique Application en C, Jean-Michel Léry, Pearson Education, 2005. Algorithmique et programmation en Java, Vincent Granet, Dunod, Paris, 2000. Débuter en programmation, Greg Perry, CampusPress, 2003. R. Ben Messaoud (FSEGN) Algorithmique I 2009 – 2010 2 / 11 Syllabus du cours ... Syllabus : http://eric.univ-lyon2.fr/~rbenmessaoud/ Objectif : se familiariser avec les méthodes de résolution de problèmes avec l’outil informatique ; apprendre les principes de l’algorithmique ; acquérir un début de maı̂trise des techniques et langages de programmation. Pré-requis : Connaissances générales en informatique utiles, mais pas indispensables. Organisation : 21 h de cours + 21 h de TD Bibliographie : Introduction à l’algorithmique, Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest et Clifford Stein, Dunod, Paris, 2004. Algorithmique Application en C, Jean-Michel Léry, Pearson Education, 2005. Algorithmique et programmation en Java, Vincent Granet, Dunod, Paris, 2000. Débuter en programmation, Greg Perry, CampusPress, 2003. R. Ben Messaoud (FSEGN) Algorithmique I 2009 – 2010 2 / 11 Syllabus du cours ... Syllabus : http://eric.univ-lyon2.fr/~rbenmessaoud/ Objectif : se familiariser avec les méthodes de résolution de problèmes avec l’outil informatique ; apprendre les principes de l’algorithmique ; acquérir un début de maı̂trise des techniques et langages de programmation. Pré-requis : Connaissances générales en informatique utiles, mais pas indispensables. Organisation : 21 h de cours + 21 h de TD Bibliographie : Introduction à l’algorithmique, Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest et Clifford Stein, Dunod, Paris, 2004. Algorithmique Application en C, Jean-Michel Léry, Pearson Education, 2005. Algorithmique et programmation en Java, Vincent Granet, Dunod, Paris, 2000. Débuter en programmation, Greg Perry, CampusPress, 2003. R. Ben Messaoud (FSEGN) Algorithmique I 2009 – 2010 2 / 11 Syllabus du cours ... Syllabus : http://eric.univ-lyon2.fr/~rbenmessaoud/ Objectif : se familiariser avec les méthodes de résolution de problèmes avec l’outil informatique ; apprendre les principes de l’algorithmique ; acquérir un début de maı̂trise des techniques et langages de programmation. Pré-requis : Connaissances générales en informatique utiles, mais pas indispensables. Organisation : 21 h de cours + 21 h de TD Bibliographie : Introduction à l’algorithmique, Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest et Clifford Stein, Dunod, Paris, 2004. Algorithmique Application en C, Jean-Michel Léry, Pearson Education, 2005. Algorithmique et programmation en Java, Vincent Granet, Dunod, Paris, 2000. Débuter en programmation, Greg Perry, CampusPress, 2003. R. Ben Messaoud (FSEGN) Algorithmique I 2009 – 2010 2 / 11 Syllabus du cours ... Syllabus : http://eric.univ-lyon2.fr/~rbenmessaoud/ Objectif : se familiariser avec les méthodes de résolution de problèmes avec l’outil informatique ; apprendre les principes de l’algorithmique ; acquérir un début de maı̂trise des techniques et langages de programmation. Pré-requis : Connaissances générales en informatique utiles, mais pas indispensables. Organisation : 21 h de cours + 21 h de TD Bibliographie : Introduction à l’algorithmique, Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest et Clifford Stein, Dunod, Paris, 2004. Algorithmique Application en C, Jean-Michel Léry, Pearson Education, 2005. Algorithmique et programmation en Java, Vincent Granet, Dunod, Paris, 2000. Débuter en programmation, Greg Perry, CampusPress, 2003. R. Ben Messaoud (FSEGN) Algorithmique I 2009 – 2010 2 / 11 Syllabus du cours ... Syllabus : http://eric.univ-lyon2.fr/~rbenmessaoud/ Objectif : se familiariser avec les méthodes de résolution de problèmes avec l’outil informatique ; apprendre les principes de l’algorithmique ; acquérir un début de maı̂trise des techniques et langages de programmation. Pré-requis : Connaissances générales en informatique utiles, mais pas indispensables. Organisation : 21 h de cours + 21 h de TD Bibliographie : Introduction à l’algorithmique, Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest et Clifford Stein, Dunod, Paris, 2004. Algorithmique Application en C, Jean-Michel Léry, Pearson Education, 2005. Algorithmique et programmation en Java, Vincent Granet, Dunod, Paris, 2000. Débuter en programmation, Greg Perry, CampusPress, 2003. R. Ben Messaoud (FSEGN) Algorithmique I 2009 – 2010 2 / 11 Syllabus du cours ... Syllabus : http://eric.univ-lyon2.fr/~rbenmessaoud/ Objectif : se familiariser avec les méthodes de résolution de problèmes avec l’outil informatique ; apprendre les principes de l’algorithmique ; acquérir un début de maı̂trise des techniques et langages de programmation. Pré-requis : Connaissances générales en informatique utiles, mais pas indispensables. Organisation : 21 h de cours + 21 h de TD Bibliographie : Introduction à l’algorithmique, Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest et Clifford Stein, Dunod, Paris, 2004. Algorithmique Application en C, Jean-Michel Léry, Pearson Education, 2005. Algorithmique et programmation en Java, Vincent Granet, Dunod, Paris, 2000. Débuter en programmation, Greg Perry, CampusPress, 2003. R. Ben Messaoud (FSEGN) Algorithmique I 2009 – 2010 2 / 11 Syllabus du cours ... Syllabus : http://eric.univ-lyon2.fr/~rbenmessaoud/ Objectif : se familiariser avec les méthodes de résolution de problèmes avec l’outil informatique ; apprendre les principes de l’algorithmique ; acquérir un début de maı̂trise des techniques et langages de programmation. Pré-requis : Connaissances générales en informatique utiles, mais pas indispensables. Organisation : 21 h de cours + 21 h de TD Bibliographie : Introduction à l’algorithmique, Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest et Clifford Stein, Dunod, Paris, 2004. Algorithmique Application en C, Jean-Michel Léry, Pearson Education, 2005. Algorithmique et programmation en Java, Vincent Granet, Dunod, Paris, 2000. Débuter en programmation, Greg Perry, CampusPress, 2003. R. Ben Messaoud (FSEGN) Algorithmique I 2009 – 2010 2 / 11 Plan du cours 1 Introduction 2 Environnement algorithmique 3 Variables 4 Structures conditionnelles 5 Structures itératives 6 Tableaux 7 Sous-programmes 8 Mode de passage de paramètres R. Ben Messaoud (FSEGN) Algorithmique I 2009 – 2010 3 / 11 Environnement algorithmique L’algorithmique et la programmation ... Quelle est la différence entre l’algorithmique et la programmation ? R. Ben Messaoud (FSEGN) Algorithmique I 2009 – 2010 4 / 11 Environnement algorithmique L’algorithmique et la programmation ... Quelle est la différence entre l’algorithmique et la programmation ? Réponse L’écriture d’un programme dans un langage de programmation n’est que l’étape finale d’un développement qui se déroule en trois phases : l’analyse, l’algorithmique et la programmation. R. Ben Messaoud (FSEGN) Algorithmique I 2009 – 2010 4 / 11 Environnement algorithmique L’algorithmique et la programmation ... Quelle est la différence entre l’algorithmique et la programmation ? Réponse L’écriture d’un programme dans un langage de programmation n’est que l’étape finale d’un développement qui se déroule en trois phases : l’analyse, l’algorithmique et la programmation. En d’autre terme : Un algorithme est un maillon de la chaı̂ne de développement d’un programme. Il est le lien indispensable entre l’analyse et la programmation. R. Ben Messaoud (FSEGN) Algorithmique I 2009 – 2010 4 / 11 Environnement algorithmique L’algorithmique et la programmation ... Quelle est la différence entre l’algorithmique et la programmation ? Réponse L’écriture d’un programme dans un langage de programmation n’est que l’étape finale d’un développement qui se déroule en trois phases : l’analyse, l’algorithmique et la programmation. En d’autre terme : Un algorithme est un maillon de la chaı̂ne de développement d’un programme. Il est le lien indispensable entre l’analyse et la programmation. En utilisant des images : Si un programme était une construction, l’algorithme serait le plan Si un programme était une toile de peinture, l’algorithme serait l’esquisse R. Ben Messaoud (FSEGN) Algorithmique I 2009 – 2010 4 / 11 Environnement algorithmique L’algorithmique et la programmation ... Algorithme : R. Ben Messaoud (FSEGN) Algorithmique I 2009 – 2010 5 / 11 Environnement algorithmique L’algorithmique et la programmation ... Programme : R. Ben Messaoud (FSEGN) Algorithmique I 2009 – 2010 5 / 11 Environnement algorithmique Niveau logique du développement I Apprendre l’algorithmique, c’est apprendre à manier la structure logique d’un programme informatique. I L’algorithmique exprime les instructions résolvant un problème donné indépendamment des particularités de tel ou tel langage. I Lorsqu’on programme dans un langage (en C, en Visual Basic, etc.) on doit, en plus de la structure logique, prendre en considération les problèmes de syntaxe et les types d’instructions propres à ce langage. R. Ben Messaoud (FSEGN) Algorithmique I 2009 – 2010 6 / 11 Environnement algorithmique Niveau logique du développement I Apprendre l’algorithmique, c’est apprendre à manier la structure logique d’un programme informatique. I L’algorithmique exprime les instructions résolvant un problème donné indépendamment des particularités de tel ou tel langage. I Lorsqu’on programme dans un langage (en C, en Visual Basic, etc.) on doit, en plus de la structure logique, prendre en considération les problèmes de syntaxe et les types d’instructions propres à ce langage. R. Ben Messaoud (FSEGN) Algorithmique I 2009 – 2010 6 / 11 Environnement algorithmique Niveau logique du développement I Apprendre l’algorithmique, c’est apprendre à manier la structure logique d’un programme informatique. I L’algorithmique exprime les instructions résolvant un problème donné indépendamment des particularités de tel ou tel langage. I Lorsqu’on programme dans un langage (en C, en Visual Basic, etc.) on doit, en plus de la structure logique, prendre en considération les problèmes de syntaxe et les types d’instructions propres à ce langage. R. Ben Messaoud (FSEGN) Algorithmique I 2009 – 2010 6 / 11 Environnement algorithmique Niveau logique du développement I Apprendre l’algorithmique, c’est apprendre à manier la structure logique d’un programme informatique. I L’algorithmique exprime les instructions résolvant un problème donné indépendamment des particularités de tel ou tel langage. I Lorsqu’on programme dans un langage (en C, en Visual Basic, etc.) on doit, en plus de la structure logique, prendre en considération les problèmes de syntaxe et les types d’instructions propres à ce langage. Niveaux de développement : 1 Analyse : niveau conceptuel ; 2 Algorithmique : niveau logique ; 3 Programmation : niveau physique. R. Ben Messaoud (FSEGN) Algorithmique I 2009 – 2010 6 / 11 Environnement algorithmique Représentation d’un algorithme Historiquement, plusieurs types de notations ont été utilisés pour représenter des algorithmes : Descriptions littéraires Organigrammes Pseudo-codes R. Ben Messaoud (FSEGN) Algorithmique I 2009 – 2010 7 / 11 Environnement algorithmique Représentation d’un algorithme Historiquement, plusieurs types de notations ont été utilisés pour représenter des algorithmes : Descriptions littéraires Organigrammes Pseudo-codes R. Ben Messaoud (FSEGN) Algorithmique I 2009 – 2010 7 / 11 Environnement algorithmique Représentation d’un algorithme Historiquement, plusieurs types de notations ont été utilisés pour représenter des algorithmes : Descriptions littéraires Organigrammes Pseudo-codes R. Ben Messaoud (FSEGN) Algorithmique I 2009 – 2010 7 / 11 Environnement algorithmique Représentation d’un algorithme Historiquement, plusieurs types de notations ont été utilisés pour représenter des algorithmes : Descriptions littéraires Organigrammes Pseudo-codes R. Ben Messaoud (FSEGN) Algorithmique I 2009 – 2010 7 / 11 Environnement algorithmique Représentation d’un algorithme Historiquement, plusieurs types de notations ont été utilisés pour représenter des algorithmes : Descriptions littéraires Organigrammes Pseudo-codes Définition informelle Un pseudo-code est une série de conventions qui ressemble à un langage de programmation authentique dont on aurait évacué la plupart des problèmes de syntaxe. R. Ben Messaoud (FSEGN) Algorithmique I 2009 – 2010 7 / 11 Environnement algorithmique Représentation d’un algorithme Historiquement, plusieurs types de notations ont été utilisés pour représenter des algorithmes : Descriptions littéraires Organigrammes Pseudo-codes Définition informelle Un pseudo-code est une série de conventions qui ressemble à un langage de programmation authentique dont on aurait évacué la plupart des problèmes de syntaxe. Important Un pseudo-code est susceptible de varier d’une référence à une autre. En effet, un pseudo-code est purement conventionnel. Aucune machine n’est censée le reconnaı̂tre. R. Ben Messaoud (FSEGN) Algorithmique I 2009 – 2010 7 / 11 Environnement algorithmique Représentation d’un algorithme Exemple de conventions : exprimer les actions avec des verbes à l’infinitif ; numéroter les instruction dans l’ordre séquentiel en commençant par 1 ; exprimer le nom de l’acteur dans les instructions ; exprimer le lien entre l’acteur et l’action par le symbole “→” ; encadrer les instructions de l’algorithme ; exprimer, en en-tête, le nom de l’algorithme. Se lever Marcher vers la porte Ouvrir la porte Marcher vers la cha^ ıse S’asseoir R. Ben Messaoud (FSEGN) Algorithmique I 2009 – 2010 8 / 11 Environnement algorithmique Représentation d’un algorithme Exemple de conventions : exprimer les actions avec des verbes à l’infinitif ; numéroter les instruction dans l’ordre séquentiel en commençant par 1 ; exprimer le nom de l’acteur dans les instructions ; exprimer le lien entre l’acteur et l’action par le symbole “→” ; encadrer les instructions de l’algorithme ; exprimer, en en-tête, le nom de l’algorithme. 1 2 3 4 5 R. Ben Messaoud (FSEGN) Se lever Marcher vers la porte Ouvrir la porte Marcher vers la cha^ ıse S’asseoir Algorithmique I 2009 – 2010 8 / 11 Environnement algorithmique Représentation d’un algorithme Exemple de conventions : exprimer les actions avec des verbes à l’infinitif ; numéroter les instruction dans l’ordre séquentiel en commençant par 1 ; exprimer le nom de l’acteur dans les instructions ; exprimer le lien entre l’acteur et l’action par le symbole “→” ; encadrer les instructions de l’algorithme ; exprimer, en en-tête, le nom de l’algorithme. 1 2 3 4 5 R. Ben Messaoud (FSEGN) M. M. M. M. M. Foulen Foulen Foulen Foulen Foulen Se lever Marcher vers la porte Ouvrir la porte Marcher vers la cha^ ıse S’asseoir Algorithmique I 2009 – 2010 8 / 11 Environnement algorithmique Représentation d’un algorithme Exemple de conventions : exprimer les actions avec des verbes à l’infinitif ; numéroter les instruction dans l’ordre séquentiel en commençant par 1 ; exprimer le nom de l’acteur dans les instructions ; exprimer le lien entre l’acteur et l’action par le symbole “→” ; encadrer les instructions de l’algorithme ; exprimer, en en-tête, le nom de l’algorithme. 1 2 3 4 5 M. M. M. M. M. R. Ben Messaoud (FSEGN) Foulen Foulen Foulen Foulen Foulen → → → → → Se lever Marcher vers la porte Ouvrir la porte Marcher vers la cha^ ıse S’asseoir Algorithmique I 2009 – 2010 8 / 11 Environnement algorithmique Représentation d’un algorithme Exemple de conventions : exprimer les actions avec des verbes à l’infinitif ; numéroter les instruction dans l’ordre séquentiel en commençant par 1 ; exprimer le nom de l’acteur dans les instructions ; exprimer le lien entre l’acteur et l’action par le symbole “→” ; encadrer les instructions de l’algorithme ; exprimer, en en-tête, le nom de l’algorithme. 1 2 3 4 5 M. M. M. M. M. R. Ben Messaoud (FSEGN) Foulen Foulen Foulen Foulen Foulen → → → → → Se lever Marcher vers la porte Ouvrir la porte Marcher vers la cha^ ıse S’asseoir Algorithmique I 2009 – 2010 8 / 11 Environnement algorithmique Représentation d’un algorithme Exemple de conventions : exprimer les actions avec des verbes à l’infinitif ; numéroter les instruction dans l’ordre séquentiel en commençant par 1 ; exprimer le nom de l’acteur dans les instructions ; exprimer le lien entre l’acteur et l’action par le symbole “→” ; encadrer les instructions de l’algorithme ; exprimer, en en-tête, le nom de l’algorithme. Ouvrir 1 M. 2 M. 3 M. 4 M. 5 M. R. Ben Messaoud (FSEGN) la porte Foulen → Foulen → Foulen → Foulen → Foulen → Se lever Marcher vers la porte Ouvrir la porte Marcher vers la cha^ ıse S’asseoir Algorithmique I 2009 – 2010 8 / 11 Environnement algorithmique Représentation d’un algorithme Convention à adopter : squelette d’un algorithme Algorithme Nom algorithme Const : Var : Début Fin R. Ben Messaoud (FSEGN) Algorithmique I 2009 – 2010 9 / 11 Environnement algorithmique Représentation d’un algorithme Convention à adopter : squelette d’un algorithme Algorithme Nom algorithme Const : [Constantes] Var : [Variables] Début [Instructions] Fin R. Ben Messaoud (FSEGN) Algorithmique I 2009 – 2010 9 / 11 Environnement algorithmique Représentation d’un algorithme Convention à adopter : squelette d’un algorithme Algorithme Nom algorithme Const : [Constantes] Var : [Variables] Début [Instructions] Fin R. Ben Messaoud (FSEGN) Algorithmique I 2009 – 2010 9 / 11 Environnement algorithmique Représentation d’un algorithme Convention à adopter : squelette d’un algorithme ←− En-tête Algorithme Nom algorithme Const : [Constantes] ←− Déclaration des Var : [Variables] constantes et des variables Début ←− Traitements [Instructions] Fin R. Ben Messaoud (FSEGN) Algorithmique I 2009 – 2010 9 / 11 Environnement algorithmique Représentation d’un algorithme Exemple : calcul de la surface d’un rectangle Algorithme CalculSurface 1 Const : Longueur = 4,32 ; Largeur = 3,77 Var : Surface : réel Début Surface ← Longueur * Largeur Ecrire (“La surface du rectangle est :” ; Surface) Fin R. Ben Messaoud (FSEGN) Algorithmique I 2009 – 2010 10 / 11 Environnement algorithmique Représentation d’un algorithme Exemple : calcul de la surface d’un rectangle Algorithme CalculSurface 2 Var : Surface : réel ; Longueur : réel ; Largeur : réel ; Début Ecrire (“Donnez la longueur en m”) Lire (Longueur) Ecrire (“Donnez la largeur en m”) Lire (Largeur) Surface ← Longueur * Largeur Ecrire (“La surface du rectangle est :” ; Surface) Fin R. Ben Messaoud (FSEGN) Algorithmique I 2009 – 2010 10 / 11 Plan du cours 1 Introduction 2 Environnement algorithmique 3 Variables 4 Structures conditionnelles 5 Structures itératives 6 Tableaux 7 Sous-programmes 8 Mode de passage de paramètres R. Ben Messaoud (FSEGN) Algorithmique I 2009 – 2010 11 / 11