algorithmes

publicité
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 cours
1. Introduction à l'algorithmique
2. Environnement algorithmique
3. Structure de données
4. Structures de contrôle
5. Structures itératives
6. Sous-programmes
7. Mode de passage de paramètres
8. Tableaux
Introduction à l'algorithmique
Définition d'un algorithme
Qu'est ce qu'un algorithme ?
Définition informelle
 Un 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'algorithmique
Définition d'un algorithme
Une autre définition
 Un 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érale
 Un algorithme est une suite d'instructions, qui une fois
exécutée correctement, conduit à un résultat donné.
Introduction à l'algorithmique
Définition d'un algorithme
Remarque
 On 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.
Important
 Pour fonctionner, un algorithme doit contenir uniquement des
instructions compréhensibles par celui qui devra l'exécuter.
Introduction a l'algorithmique
Les origines historiques de l'algorithmique
 XVIIIè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'algorithmique
Pour ê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'algorithmique
Les 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).
Important
 Un 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 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
Environnement algorithmique
L'algorithmique et la programmation ...
 Algorithme :
Environnement algorithmique
L'algorithmique et la programmation ...
 Programme :
Environnement algorithmique
Niveau 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 algorithmique
Représentation d'un algorithme
Historiquement, plusieurs types de notations ont été utilises 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 évacue 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.
Environnement algorithmique
Représentation d'un algorithme
Exemple de conventions :
 exprimer les actions avec des verbes a l'infinitif ;
Se lever
Marcher vers la porte
Ouvrir la porte
Marcher vers la chaise
S'asseoir
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 ;
1
2
3
4
5
Se lever
Marcher vers la porte
Ouvrir la porte
Marcher vers la chaise
S'asseoir
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 ;
1
2
3
4
5
M. Foulen
M. Foulen
M. Foulen
M. Foulen
M. Foulen
Se lever
Marcher vers la porte
Ouvrir la porte
Marcher vers la chaise
S'asseoir
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 " " ;
1
2
3
4
5
M. Foulen
M. Foulen
M. Foulen
M. Foulen
M. Foulen
Se lever
Marcher vers la porte
Ouvrir la porte
Marcher vers la chaise
S'asseoir
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 ;
1
2
3
4
5
M. Foulen
M. Foulen
M. Foulen
M. Foulen
M. Foulen
Se lever
Marcher vers la porte
Ouvrir la porte
Marcher vers la chaise
S'asseoir
Environnement algorithmique
Exemple
de conventions :
Représentation d'un algorithme
 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 la porte
1
2
3
4
5
M. Foulen
M. Foulen
M. Foulen
M. Foulen
M. Foulen
Se lever
Marcher vers la porte
Ouvrir la porte
Marcher vers la chaise
S'asseoir
Environnement algorithmique
Représentation d'un algorithme
Convention à adopter : squelette d'un algorithme
Algorithme Nom_algorithme
Const :
Var :
Début
Fin
Environnement algorithmique
Représentation d'un algorithme
Convention à adopter : squelette d'un algorithme
Algorithme Nom_algorithme
Const : [Constantes]
Var : [Variables]
Début
[Instructions]
Fin
Environnement algorithmique
Représentation d'un algorithme
Convention à adopter :
squelette d'un algorithme
Algorithme Nom_algorithme
Const : [Constantes]
Var : [Variables]
Début
[Instructions]
Fin
Environnement algorithmique
Représentation d'un algorithme
Convention à adopter :
squelette d'un algorithme
Algorithme Nom_algorithme
Const : [Constantes]
Var : [Variables]
En-tête
Déclaration
des
constantes et
des variables
Début
[Instructions]
Fin
Traitements
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 : reel
Début
Surface := Longueur * Largeur
Écrire ("La surface du rectangle est :" ; Surface)
Fin
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
Lire (" Donnez la longueur en m" ; Longueur)
Lire (" Donnez la largeur en m" ; Largeur)
Surface := Longueur * Largeur
Ecrire (" La surface du rectangle est :" ; Surface)
Fin
Téléchargement