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. ». Algorithme • Méthode de résolution de problème • énoncée sous la forme d'une série d'opérations à effectuer. 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 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 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; Faire tourner un algorithme Affectation x := 10; y := 30; z := x; x := 20 Chaque variable une colonne x y z 10 30 10 20 Opérateurs : – Opérateurs numé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; • Faire tourner l’algorithme Faire tourner un algorithme Affectation a := 7; points := 0; points := points + 100; meilleurpoints := points; gameover := FAUX; a points Chaque variable une colonne meilleurpoints gameover 7 0 100 100 FAUX