Algorithmes et structures de données

publicité
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>
Téléchargement