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 - Groupe 2 : mardi, 15h15 – 16h45 (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 Motivation Structure de donnée: - tableau a 2 dimension Algorithmes: - surtout I.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) 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. ». 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. 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 ») 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. 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; 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 <bloc d’instructions> Ingrédients d’algorithmes • Structure de contrôle – Branchements conditionnels SI <condition> ALORS <bloc d’instructions> SINON <bloc d’instructions> 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 <bloc d’instructions> En PASCAL : IF (score>meilleur_score) THEN meilleur_score := score; Exemple: SI (score>meilleur_score) ALORS 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) Ingrédients d’algorithmes • Structure de contrôle – Boucle TANT QUE <condition> FAIRE <bloc d’instructions> FIN TANT QUE ou FAIRE <bloc d’instructions> TANT QUE <condition>