Algorithmes et structures de données Cours 2 Patrick Reuter http://www.labri.fr/~preuter
Motivation Niklaus Wirth, ETH Zuerich, 1976 « Algorithms + Data Structures = Programs »
Algorithme L'algorithmique : Science des algorithmes, visant à étudier les opérations nécessaires à la réalisation d'un calcul. René Descartes dans le Discours de la Méthode : « diviser chacune des difficultés que j'examinerois, en autant de parcelles qu'il se pourroit, et qu'il seroit requis pour les mieux résoudre. ». examinerois, pourroit, seroit, / examine, peut, est, (ici « autant que » est une comparaison donc pas de subjonctif, différent des phrases du type « quitte à s’être levé, autant que ce soit pour aller en cours) ; pour les mieux résoudre / pour mieux les résoudre ; problème / problèmes
Algorithme Méthode de résolution de problème énoncée sous la forme d'une série d'opérations à effectuer. examinerois, pourroit, seroit, / examine, peut, est, (ici « autant que » est une comparaison donc pas de subjonctif, différent des phrases du type « quitte à s’être levé, autant que ce soit pour aller en cours) ; pour les mieux résoudre / pour mieux les résoudre ; problème / problèmes
Algorithme Mise en œuvre de l'algorithme : Implémentation (« codage ») Ecrire les opérations dans un langage de programmation la brique de base d'un programme informatique examinerois, pourroit, seroit, / examine, peut, est, (ici « autant que » est une comparaison donc pas de subjonctif, différent des phrases du type « quitte à s’être levé, autant que ce soit pour aller en cours) ; pour les mieux résoudre / pour mieux les résoudre ; problème / problèmes
Algorithme Plus ou moins détaillé selon le niveau d'abstraction du langage utilisé autrement dit : une recette de cuisine doit être plus ou moins détaillée en fonction de l'expérience du cuisinier examinerois, pourroit, seroit, / examine, peut, est, (ici « autant que » est une comparaison donc pas de subjonctif, différent des phrases du type « quitte à s’être levé, autant que ce soit pour aller en cours) ; pour les mieux résoudre / pour mieux les résoudre ; problème / problèmes
Structure de données Définition Wikipedia (12/9/2005) une structure logique destinée à contenir des données afin de leur donner une organisation permettant de simplifier leur traitement. Exemple : On peut présenter des numéros de téléphone * - par département, - par nom - par profession (pages jaunes), - par numéro téléphonique (annuaires destinés au télémarketing), - par rue et/ou - une combinaison quelconque de ces classements. À chaque usage correspondra une structure d'annuaire appropriée.
http://www.labri.fr/~preuter/asd2007
Variables Permet de stocker des données au cours d’un algorithme Structure de données la plus élémenataire Caractérisé par leur nom et leur type
Variables Caractérisé par leur nom et leur type Nom : x y z i pointsJoueur1 pointsJoueur2
Variables Mais non pas : 3x (doivent commencer par une lettre) entrée (pas de caractère spéciaux)
Variables Type : Nombre entier (p.ex. 5, integer) Nombre à virgule flottant (p.ex. 5.12, float) Caractère (p.ex. ‘c’, char) Chaîne de caractères (p.ex. "salut", string) Vrai/faux (p.ex. TRUE, boolean) plus de détails plus tard ….
Ingrédients d’algorithmes Affectation Condition/Comparaison Structure de contrôle Branchements conditionnels (multiples) Boucles Bloc d’instruction Appel de fonction
Ingrédients d’algorithmes Affectation x← 10; y := 30; z = x; un valeur / une valeur
Faire tourner un algorithme Affectation x := 10; y := 30; z := x; x := 20 Chaque variable une colonne un valeur / une valeur x 10 20 y 30 z 10
Opérateurs : Opérateurs numériques : Opérateurs alphanumériques : +, -, *, / % : modulo (reste de la division) Multiplication/division prioritaire Parenthèses Opérateurs alphanumériques : concatenation + Opérateurs booléennes : ET, OU, NON, XOR logique
Ingrédients d’algorithmes Affectation a := 7; points := 0; points := points + 100; meilleurpoints := points; gameover := FAUX; Note: Affectation d’une seule variable avec un valeur. La variable à affecter figure à gauche, la valeur à droite Faux: a+b := 6; 7 := c; un valeur / une valeur
Faire tourner l’algorithme
Faire tourner un algorithme Affectation a := 7; points := 0; points := points + 100; meilleurpoints := points; gameover := FAUX; Chaque variable une colonne un valeur / une valeur a 7 points 100 meilleurpoints 100 gameover FAUX