sensibilisation à lalgorithmique. 2 algorithme permet de résoudre un problème donné ex: trouver...

23
Sensibilisation à l’Algorithmique

Upload: georgette-roques

Post on 03-Apr-2015

109 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Sensibilisation à lAlgorithmique. 2 Algorithme Permet de résoudre un problème donné ex: Trouver la crue minimale et la crue maximale à partir dun ensemble

Sensibilisation à l’Algorithmique

Page 2: Sensibilisation à lAlgorithmique. 2 Algorithme Permet de résoudre un problème donné ex: Trouver la crue minimale et la crue maximale à partir dun ensemble

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

Page 3: Sensibilisation à lAlgorithmique. 2 Algorithme Permet de résoudre un problème donné ex: Trouver la crue minimale et la crue maximale à partir dun ensemble

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

Page 4: Sensibilisation à lAlgorithmique. 2 Algorithme Permet de résoudre un problème donné ex: Trouver la crue minimale et la crue maximale à partir dun ensemble

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: ???

Page 5: Sensibilisation à lAlgorithmique. 2 Algorithme Permet de résoudre un problème donné ex: Trouver la crue minimale et la crue maximale à partir dun ensemble

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

Page 6: Sensibilisation à lAlgorithmique. 2 Algorithme Permet de résoudre un problème donné ex: Trouver la crue minimale et la crue maximale à partir dun ensemble

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

Page 7: Sensibilisation à lAlgorithmique. 2 Algorithme Permet de résoudre un problème donné ex: Trouver la crue minimale et la crue maximale à partir dun ensemble

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

Page 8: Sensibilisation à lAlgorithmique. 2 Algorithme Permet de résoudre un problème donné ex: Trouver la crue minimale et la crue maximale à partir dun ensemble

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)

Page 9: Sensibilisation à lAlgorithmique. 2 Algorithme Permet de résoudre un problème donné ex: Trouver la crue minimale et la crue maximale à partir dun ensemble

9

Itérations

int i = 0;

while(i<10){

System.out.println(“Coucou”);

i +=1;

}

Page 10: Sensibilisation à lAlgorithmique. 2 Algorithme Permet de résoudre un problème donné ex: Trouver la crue minimale et la crue maximale à partir dun ensemble

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”);

Page 11: Sensibilisation à lAlgorithmique. 2 Algorithme Permet de résoudre un problème donné ex: Trouver la crue minimale et la crue maximale à partir dun ensemble

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;

Page 12: Sensibilisation à lAlgorithmique. 2 Algorithme Permet de résoudre un problème donné ex: Trouver la crue minimale et la crue maximale à partir dun ensemble

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

Page 13: Sensibilisation à lAlgorithmique. 2 Algorithme Permet de résoudre un problème donné ex: Trouver la crue minimale et la crue maximale à partir dun ensemble

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];

}

Page 14: Sensibilisation à lAlgorithmique. 2 Algorithme Permet de résoudre un problème donné ex: Trouver la crue minimale et la crue maximale à partir dun ensemble

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];

Page 15: Sensibilisation à lAlgorithmique. 2 Algorithme Permet de résoudre un problème donné ex: Trouver la crue minimale et la crue maximale à partir dun ensemble

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)

Page 16: Sensibilisation à lAlgorithmique. 2 Algorithme Permet de résoudre un problème donné ex: Trouver la crue minimale et la crue maximale à partir dun ensemble

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

Page 17: Sensibilisation à lAlgorithmique. 2 Algorithme Permet de résoudre un problème donné ex: Trouver la crue minimale et la crue maximale à partir dun ensemble

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();}

Page 18: Sensibilisation à lAlgorithmique. 2 Algorithme Permet de résoudre un problème donné ex: Trouver la crue minimale et la crue maximale à partir dun ensemble

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”);

Page 19: Sensibilisation à lAlgorithmique. 2 Algorithme Permet de résoudre un problème donné ex: Trouver la crue minimale et la crue maximale à partir dun ensemble

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);

Page 20: Sensibilisation à lAlgorithmique. 2 Algorithme Permet de résoudre un problème donné ex: Trouver la crue minimale et la crue maximale à partir dun ensemble

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”);

Page 21: Sensibilisation à lAlgorithmique. 2 Algorithme Permet de résoudre un problème donné ex: Trouver la crue minimale et la crue maximale à partir dun ensemble

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();}

Page 22: Sensibilisation à lAlgorithmique. 2 Algorithme Permet de résoudre un problème donné ex: Trouver la crue minimale et la crue maximale à partir dun ensemble

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.

Page 23: Sensibilisation à lAlgorithmique. 2 Algorithme Permet de résoudre un problème donné ex: Trouver la crue minimale et la crue maximale à partir dun ensemble

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 :