Sensibilisation à lAlgorithmique. 2 Algorithme Permet de résoudre un problème donné ex: Trouver...
-
Upload
georgette-roques -
Category
Documents
-
view
109 -
download
2
Transcript of Sensibilisation à lAlgorithmique. 2 Algorithme Permet de résoudre un problème donné ex: Trouver...
Sensibilisation à l’Algorithmique
2
Algorithme
Permet de résoudre un problème donnéex: Trouver la crue minimale et la crue maximale à
partir d’un ensemble de relevés
Procédure de calcul bien définie Séquence d'instructions élémentaires
termine en un temps fini prend une ou des valeur(s) en entrée donne une ou des valeur(s) en sortie
3
Etude de cas – Fil rouge
Gestion des relevés d’une crue d’une rivière Un relevé comprend :
La hauteur de la crue Le point de relevé La date du relevé L’heure du relevé
L’auteur du relevé Un identifiant de relevé
On stocke et analyse un ensemble de relevés
4
Exemple
Exemple de problème à résoudreTrouver la crue minimale et/ou la crue maximale à
partir d’un ensemble de relevés
Input: liste non triée de relevés Output: liste des relevés correspondant à la
crue minimale ou maximale Algo: ???
5
Types de problèmes
Tris d'éléments d'une liste (trier les relevés) Recherches d'un élément (trouver la hauteur
de la crue à une heure donnée à un point donné)
Calculs (calculer la moyenne de la crue, identifier les points critiques….)
Algorithmes exacts / d'approximation
6
Algorithme et Programme
Un algorithme est implémenté dans un langage de programmation
Un même algorithme peut être implémenté dans différents langages (Java, C, Python, Caml, ...)
Pseudo-code
7
Structure de Données
Moyen de stocker et organiser les données d'un algorithme
accès aux données modification, mise à jour des données
Tableaux nombre max de relevés est connu (le tableau incomplet)
Listes la liste contient toujours le nombre de relevés courant, on ne connait pas
forcément le nombre max de relevés Sets : notion d’ensemble
Les relevés n’ont pas besoin d’être retrouvés selon un ordre Maps : un index unique
Les relevés peuvent être retrouvés directement à partir du nom de l’auteur Piles, files : gestion des accès aux données Graphes, arbres, arbres binaires de recherche
8
Structures de contrôle
Structures de contrôle conditionnelle Si cond Alors instr FinSi Si cond Alors instr sinon instr FinSi(imbrications possibles)
Structures de contrôle itératives TantQue cond Faire instr FinTantQue variantes(imbrications possibles)
9
Itérations
int i = 0;
while(i<10){
System.out.println(“Coucou”);
i +=1;
}
10
Itérations
int i = 0;do{ System.out.println(“Coucou”); i +=1;}while(i<10);
for (i=0; i<10; i++) System.out.println(“Coucou”);
11
Tableaux
Déclaration et allocation mémoire d’un tableau de 10 entiersint [] hauteurs = new int[10];
Accès au premier élément : hauteurs[0] Accès au dernier élément :
hauteurs[hauteurs.length -1] i ième élément : hauteurs[i-1] init./modif. d'un élément: hauteurs[i] = 3;
12
Tableaux
valeur tableau[i] / indice i recherche du (des) élément(s) vérifiant une
certaine propriété vérification de la présence ou l'absence d'une
certaine valeur dans le tableau recherche de l'indice dans le tableau d'une
valeur donné tri du tableau selon un certain critère
13
Exemple d’Itération
int i = 0; int somme=0;
while(i<hauteurs.length){
somme=somme+hauteurs[i];
}
int max=hauteurs[0];
for (int i=1; i<hauteurs.length; i++){
if (max < hauteurs[i]) max=hauteurs[i];
}
14
Matrices
Tableau de tableaux :int [][] matrice = new int[10][15];
élément en ligne i et colonne j : matrice[i][j]
Matrice carrée :int [][] matriceCarree = new int[7][7];
15
La classe ArrayList : Liste
Déclaration et allocation mémoireArrayList<Integer> hauteurs;hauteurs = new ArrayList<Integer>();ArrayList<Releve> releves;releves = new ArrayList<Releve>();
Ne peuvent contenir que des objets
Accès au premier élément : releves.get(0) dernier élément : releves.get(liste.size()-1) i ième élément : releves.get(i-1)
16
La classe ArrayList : Listes
ajout d'un élt: releves.add(new Releve(3,100,10,0,”26/04/2003”) );
modif d'un élt: hauteurs.set(i,new Integer(4));
suppression d'un élt: releves.remove(i);
mêmes algos que sur les tableaux
17
Exemple d’Itération
int i = 0; int somme=0;while(i<hauteurs.size()){ somme=somme+hauteurs.get(i).value();}
int max=hauteurs.get(0).value();for (int i=1; i<hauteurs.size(); i++){ if (max < hauteurs.get(i).value())
max=hauteurs.get(i).value();}
18
Paires d'objets : Maps
Déclaration et allocation mémoireHashMap<String,String> surnoms;surnoms = new HashMap<String,String>();HashMap<String,Releve> releves;releves = new HashMap<String,Releve>();
paires clé/valeur, clés uniques
ajout d'un couple clé/valeur : surnoms.put(“tartampion”, “dupont”);
releves.put(“Martin”, new Releve(3,100,10,0,”26/04/2003”)) suppression d'un couple clé/valeur :
releves.remove(“Martin”);
19
Maps
plus de premier, dernier, i ième élément, récupération d'une valeur associée à une clé : Releve r = releves.get(“martin”);
récupération directe de la valeur associée à une clé : get de l'information de présence/absence
d'une valeur: releves.containsKey(“dupont”); d'une clé : releves.containsValue(r);
20
ensemble non ordonné d'objet : Sets
Déclaration et allocation mémoireHashSet<String> surnoms;surnoms = new HashSet<String>();
ajout d'un élément : surnoms.put(“tartampion”); suppression : surnoms.remove(“tartampion”);
test direct de la présence d'un élément :
surnoms.contains(“tartampion”);
21
Exemple d’Itération
int i = 0; int somme=0;while(i<hauteurs.size()){ somme=somme+hauteurs.get(i).value();}
int max=hauteurs.get(0).value();for (int i=1; i<hauteurs.size(); i++){ if (max < hauteurs.get(i).value())
max=hauteurs.get(i).value();}
22
Maps et Sets
Les structures de Maps et de Sets ne supportent que les opérations de dictionnaire:insérer, rechercher, supprimer
HashMap et HashSet sont des implémentations à base
de tables de hachage qui permettent de réduire le coût
de ces opérations.
23
Piles et Files
Ordonnancements particuliers des éléments d'un tableau ou d'une liste
Pile : empiler/dépiler des éléments File : enfiler /défiler des éléments :