26
Algorithmique et structure de données

Algorithmique et structure de données

  • Upload
    adrina

  • View
    50

  • Download
    7

Embed Size (px)

DESCRIPTION

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. - PowerPoint PPT Presentation

Citation preview

Page 1: Algorithmique et structure de données

Algorithmique et structure de données

Page 2: 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.

Page 3: Algorithmique et structure de données

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

Page 4: Algorithmique et structure de données

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.

Page 5: Algorithmique et structure de données

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é.

Page 6: Algorithmique et structure de données

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.

Page 7: Algorithmique et structure de données

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.

Page 8: Algorithmique et structure de données

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.

Page 9: Algorithmique et structure de données

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.

Page 10: Algorithmique et structure de données

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

Page 11: Algorithmique et structure de données

Environnement algorithmiqueL'algorithmique et la programmation ...

Algorithme :

Page 12: Algorithmique et structure de données

Environnement algorithmiqueL'algorithmique et la programmation ...

Programme :

Page 13: Algorithmique et structure de données

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.

Page 14: Algorithmique et structure de données

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.

Page 15: Algorithmique et structure de données

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

Page 16: Algorithmique et structure de données

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

Page 17: Algorithmique et structure de données

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

Page 18: Algorithmique et structure de données

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

Page 19: Algorithmique et structure de données

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

Page 20: Algorithmique et structure de données

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

Page 21: Algorithmique et structure de données

Environnement algorithmiqueReprésentation d'un algorithme

Convention à adopter : squelette d'un algorithmeAlgorithme Nom_algorithmeConst :Var :Début

Fin

Page 22: Algorithmique et structure de données

Environnement algorithmiqueReprésentation d'un algorithme

Convention à adopter : squelette d'un algorithmeAlgorithme Nom_algorithmeConst : [Constantes]Var : [Variables]Début

[Instructions]

Fin

Page 23: Algorithmique et structure de données

Environnement algorithmiqueReprésentation d'un algorithme

Convention à adopter : squelette d'un algorithme

Algorithme Nom_algorithme

Const : [Constantes]

Var : [Variables]

Début

[Instructions]

Fin

Page 24: Algorithmique et structure de données

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

Page 25: Algorithmique et structure de données

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

Page 26: Algorithmique et structure de données

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