Download - Algorithmique et structure de données
Algorithmique et structure de données
Syllabus du cours ...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.
Bibliographie : Introduction a l'algorithmique, Thomas H. Cormen, Charles
E. Leiserson, Ronald L. Rivest et Cliord Stein, Dunod, Paris, 2004.
Algorithmique Application en C, Jean-Michel Lery, Pearson Education, 2005.
Algorithmique et programmation en Java, Vincent Granet, Dunod, Paris, 2000.
Débuter en programmation, Greg Perry, CampusPress, 2003.
Plan du cours1. Introduction à l'algorithmique2. Environnement algorithmique3. Structure de données4. Structures de contrôle5. Structures itératives6. Sous-programmes7. Mode de passage de paramètres8. Tableaux
Introduction à l'algorithmiqueDéfinition d'un algorithme
Qu'est ce qu'un algorithme ?Définition informelleUn algorithme est une procédure de calcul
bien définie qui prend en entrée une valeur, ou un ensemble de valeurs, et qui donne en sortie une valeur, ou un ensemble de valeurs.
Un algorithme est donc une séquence d’étapes de calcul qui transforment l'entrée en sortie.
Introduction à l'algorithmiqueDéfinition d'un algorithme
Une autre définitionUn algorithme est un moyen pour un humain de
présenter la résolution par calcul d'un problème à une autre personne physique (un autre humain) ou virtuelle (un calculateur).
En effet, un algorithme est un énoncé dans un langage bien défini d'une suite d'opérations permettant de résoudre par calcul un problème.
Encore une autre définition, plus généraleUn algorithme est une suite d'instructions, qui
une fois exécutée correctement, conduit à un résultat donné.
Introduction à l'algorithmiqueDéfinition d'un algorithmeRemarqueOn désigne par algorithmique ou algorithmie
l'ensemble des activités logiques qui relèvent des algorithmes.
Exemples d'algorithmes :indiquer un chemin à un touriste égaré ;rédiger une recette de cuisine ;élaborer un mode d'emploi pour faire fonctionner
un magnétoscope ;etc.ImportantPour fonctionner, un algorithme doit contenir
uniquement des instructions compréhensibles par celui qui devra l'exécuter.
Introduction a l'algorithmiqueLes origines historiques de l'algorithmiqueXVIIIème siècle av. J.-C. : les Babyloniens ont défini
des descriptions exhaustives d'algorithmes pour des calculs concernant le commerce et les impôts ;
IIIème siècle av. J.-C. : Euclide a introduit (dans son ouvrage les Éléments) le célèbre algorithme qui permet de trouver le plus grand diviseur commun (PGCD) de deux nombres ;
IXème siècle : Al Khuwarizmi été le premier qui a formalisé la notion d'algorithme dans son ouvrage L'algèbre et le balancement;
XIIème siècle : Adelard de Bath a introduit le terme latin de algorismus (par référence au nom de Al Khuwarizmi). Ce mot donne algorithme en français en 1554.
Introduction a l'algorithmiquePour être bon en algorithmique ...Faut-il être matheux pour être bon en
algorithmique?Non, pas du tout !
La maîtrise de l'algorithmique requiert trois qualités :1. Il faut être méthodique. Avant d‘écrire les instructions
d'un algorithme, il faut analyser le problème à résoudre. Il faut ensuite définir les entrées et les sorties de l'algorithme.
2. Il faut avoir de l'intuition. Aucune recette ne permet de savoir à priori quelles instructions permettront d'obtenir le résultat voulu. Les réflexes du raisonnement algorithmique deviennent spontanés avec l'expérience.
3. Il faut être rigoureux. Chaque fois qu'on écrit une série d'instructions, il faut systématiquement se mettre mentalement à la place de la machine qui va les exécuter. Si nécessaire, il faut avoir recours à une simulation sur papier.
Introduction a l'algorithmiqueLes instructions fondamentales
Les ordinateurs ne comprennent que quatre catégories d'instructions :
1.l'affectation de variables ;2.la lecture/écriture ;3.les tests (les structures conditionnelles) ;4.les boucles (les structures itératives).ImportantUn algorithme informatique se ramène
toujours à la combinaison de ces quatre types d'instruction. Il peut y en avoir quelques unes, quelques dizaines, et jusqu‘à plusieurs centaines de milliers.
Environnement algorithmiqueL'algorithmique et la programmation ...Quelle est la différence entre l'algorithmique et la
programmation ?RéponseL’é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 planSi un programme était une toile de peinture,
l'algorithme serait l'esquisse
Environnement algorithmiqueL'algorithmique et la programmation ...
Algorithme :
Environnement algorithmiqueL'algorithmique et la programmation ...
Programme :
Environnement algorithmiqueNiveau logique du développement Apprendre l'algorithmique, c'est apprendre à
manier la structure logique d'un programme informatique.
L'algorithmique exprime les instructions résolvant un problème donné indépendamment des particularités de tel ou tel langage.
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 a ce langage.
Niveaux de développement :1.Analyse : niveau conceptuel ;2.Algorithmique : niveau logique ;3.Programmation : niveau physique.
Environnement algorithmiqueReprésentation d'un algorithme
Historiquement, plusieurs types de notations ont été utilises pour représenter des algorithmes :
Descriptions littéraires Organigrammes Pseudo-codesDéfinition informelleUn pseudo-code est une série de conventions qui
ressemble à un langage de programmation authentique dont on aurait évacue la plupart des problèmes de syntaxe.
ImportantUn 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.
Environnement algorithmiqueReprésentation d'un algorithme
Exemple de conventions :exprimer les actions avec des verbes a
l'infinitif ;
Se leverMarcher vers la porteOuvrir la porteMarcher vers la chaiseS'asseoir
Environnement algorithmiqueRepré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 ;
1 Se lever2 Marcher vers la porte3 Ouvrir la porte4 Marcher vers la chaise5 S'asseoir
Environnement algorithmiqueRepré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 ;
1 M. Foulen Se lever2 M. Foulen Marcher vers la porte3 M. Foulen Ouvrir la porte4 M. Foulen Marcher vers la chaise5 M. Foulen S'asseoir
Environnement algorithmiqueRepré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 " " ;1 M. Foulen Se lever2 M. Foulen Marcher vers la porte3 M. Foulen Ouvrir la porte4 M. Foulen Marcher vers la chaise5 M. Foulen S'asseoir
Environnement algorithmiqueRepré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 ;
1 M. Foulen Se lever2 M. Foulen Marcher vers la porte3 M. Foulen Ouvrir la porte4 M. Foulen Marcher vers la chaise5 M. Foulen S'asseoir
Environnement algorithmiqueReprésentation d'un algorithmeExemple 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 M. Foulen Se lever2 M. Foulen Marcher vers la porte3 M. Foulen Ouvrir la porte4 M. Foulen Marcher vers la chaise5 M. Foulen S'asseoir
Ouvrir la porte
Environnement algorithmiqueReprésentation d'un algorithme
Convention à adopter : squelette d'un algorithmeAlgorithme Nom_algorithmeConst :Var :Début
Fin
Environnement algorithmiqueReprésentation d'un algorithme
Convention à adopter : squelette d'un algorithmeAlgorithme Nom_algorithmeConst : [Constantes]Var : [Variables]Début
[Instructions]
Fin
Environnement algorithmiqueReprésentation d'un algorithme
Convention à adopter : squelette d'un algorithme
Algorithme Nom_algorithme
Const : [Constantes]
Var : [Variables]
Début
[Instructions]
Fin
Environnement algorithmiqueReprésentation d'un algorithme
Convention à adopter : squelette d'un algorithmeAlgorithme Nom_algorithme
Const : [Constantes]
Var : [Variables]
Début
[Instructions]
Fin
En-tête
Déclaration des constantes etdes variables
Traitements
Environnement algorithmiqueReprésentation d'un algorithme
Exemple : calcul de la surface d'un rectangleAlgorithme CalculSurface_1
Const : Longueur = 4,32 ; Largeur = 3,77
Var : Surface : reelDébut Surface := Longueur * Largeur Écrire ("La surface du rectangle
est :" ; Surface)Fin
Environnement algorithmiqueReprésentation d'un algorithme
Exemple : calcul de la surface d'un rectangleAlgorithme CalculSurface_2Var : Surface : réel ; Longueur : réel ; Largeur : réel ;Début
Lire (" Donnez la longueur en m" ; Longueur)Lire (" Donnez la largeur en m" ; Largeur)Surface := Longueur * LargeurEcrire (" La surface du rectangle est :" ;
Surface)Fin