Algorithmes et structures de données (avancées) Cours 1+2 Patrick Reuter http://www.labri.fr/~preuter
Déroulement CM mardi de 8h à 9h TD - Groupe 1 : mardi, 13h30 – 15h00 (rendre la feuille à la prochaine séance)
Motivation Niklaus Wirth, ETH Zuerich, 1976 « Algorithms + Data Structures = Programs »
Motivation 8.168.684.336 pages Comment ça marche ?
Motivation Structure de donnée: p.ex. fantôme couleur position direction aggressif ou pas ? Algorithmes: p.ex. mettre a jour le meilleur score p. ex. / ex:
Motivation Structure de donnée: - tableau a 2 dimension Algorithmes: - surtout I.A. a / à
Motivation Structure de donnée : File FIFO (First In First Out) Aussi: File à priorité
Motivation Structure de donnée : Pile LIFO (Last In First Out)
Motivation Structure de donnée : Arbre (pour l’élimination des parties cachées)
Motivation Structure de donnée : Graphe (pour plannifier des trajets) plannifier / planifier
Algorithme http://www.labri.fr/~preuter/asda2007 L'algorithmique est la 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 Un algorithme est une 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 La mise en œuvre de l'algorithme consiste en l'écriture de ces opérations dans un langage de programmation et constitue alors la brique de base d'un programme informatique (implémentation, « codage ») 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 L'algorithme devra être 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
Exemple Trouver un numéro dans un annuaire par nom donnée
Exemple Trouver un nom dans un annuaire par numéro donnée
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.
Ingrédients d’algorithmes Variables : nombre y i patrick x1 Mais non pas : 3x entrée
Ingrédients d’algorithmes Affectation Condition/Comparaison Appel de fonction Structure de contrôle Branchements conditionnels (multiples) Boucles Bloc d’instruction
Ingrédients d’algorithmes Affectation a := 7; score := 0; score := score + 100; 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
Ingrédients d’algorithmes Condition/Comparaison a = 7 absent = FAUX malade = VRAI OU vacances = VRAI score > highscore; … Note: Le résultat d’une condition/comparaison peut être uniquement soit VRAI, soit FAUX
Ingrédients d’algorithmes Appel de fonction, p.ex. afficher(« Bonjour tout le monde »); resultat := racine_carre(16);
Ingrédients d’algorithmes Structure de contrôle Branchements conditionnels SI <condition> ALORS <bloc d’instructions> SINON
Ingrédients d’algorithmes Structure de contrôle Branchements conditionnels SI <condition> ALORS <bloc d’instructions> SINON Exemple: SI (score>meilleur_score) ALORS meilleur_score := score;
Ingrédients d’algorithmes Structure de contrôle Branchements conditionnels SI <condition> ALORS <bloc d’instructions> SINON Exemple: SI (score>meilleur_score) ALORS meilleur_score := score; En PASCAL : IF (score>meilleur_score) THEN meilleur_score := score;
Ingrédients d’algorithmes Structure de contrôle Branchements conditionnels multiples CAS mois DE ‘1': nom := « Janvier » ; ‘2': nom := « Février » ; ‘3': nom := « Mars » ; ‘4': nom := « Avril » ; ‘5': nom := « Mai » ; …. ‘12': nom := « Décembre » ; AUTREMENT afficher('Erreur dans le mois') ; FIN CAS;
Ingrédients d’algorithmes Structure de contrôle Boucle Définition : Suite d’instructions qui peut être exécuté plusieurs fois (itération) exécuté / exécutée
Ingrédients d’algorithmes Structure de contrôle Boucle TANT QUE <condition> FAIRE <bloc d’instructions> FIN TANT QUE ou FAIRE TANT QUE <condition>