Structures de données indexées - Licence 1 MASS ...verel/TEACHING/07-08/... · 1: dernier du...

31

Transcript of Structures de données indexées - Licence 1 MASS ...verel/TEACHING/07-08/... · 1: dernier du...

Page 1: Structures de données indexées - Licence 1 MASS ...verel/TEACHING/07-08/... · 1: dernier du taille Conséquence: il n'est pas p ossible de lire une donnée en deho rs des b o rnes

Stru tures de données indexéesLi en e 1 MASS - AlgorithmiqueSébastien Verelverel�i3s.uni e.frwww.i3s.uni e.fr/∼verelÉquipe S oBi - Université de Ni e Sophia-Antipolis15 février 2008

Page 2: Structures de données indexées - Licence 1 MASS ...verel/TEACHING/07-08/... · 1: dernier du taille Conséquence: il n'est pas p ossible de lire une donnée en deho rs des b o rnes

Introdu tionDé�nition de la stru tureAlgorithme sur les tableauxObje tifs de la séan e 51 Lire et enregistrer une valeur dans un tableau2 Re her he des valeurs extrémales d'un tableau3 Utilisation d'un a umulateur pour réaliser un al ul dans untableau4 Savoir on evoir un jeu de tests pour un algorithme5 Savoir inspe ter les valeurs de ertaines données d'unalgorithmeQuestions prin ipales du jour :Comment traiter les données de manière indexée ?Sébastien Verel Stru tures de données indexées

Page 3: Structures de données indexées - Licence 1 MASS ...verel/TEACHING/07-08/... · 1: dernier du taille Conséquence: il n'est pas p ossible de lire une donnée en deho rs des b o rnes

Introdu tionDé�nition de la stru tureAlgorithme sur les tableauxA quoi ça sert ?Algorithme moyenne(n1 , n2 , n3 , n4 , n5 , n6 , n7 , n8 , n9 ,n10 , n11 , n12 : réel) : : réeldébutvariable m : réelm← (n1+n2+n3+n4+n5+n6+n7+n8+n9+n10+n11+n12)/12retourner m�nCe n'est pas tenable :lorsqu'on passe à une é helle de 1000 notes ou plus,lorsque le nombre de notes n'est pas déterminé à l'avan eSébastien Verel Stru tures de données indexées

Page 4: Structures de données indexées - Licence 1 MASS ...verel/TEACHING/07-08/... · 1: dernier du taille Conséquence: il n'est pas p ossible de lire une donnée en deho rs des b o rnes

Introdu tionDé�nition de la stru tureAlgorithme sur les tableauxFinalement souvenez-vous ( m03)Algorithme moyenne(n : entier) : réeldébutvariable m, a : réelvariable i : entierpour i de 1 à n fairelire(a)m← m + a�n pourm← m/nretourner m�n→ ATTENTION : oublie de l'initialisation de a umulateurSébastien Verel Stru tures de données indexées

Page 5: Structures de données indexées - Licence 1 MASS ...verel/TEACHING/07-08/... · 1: dernier du taille Conséquence: il n'est pas p ossible de lire une donnée en deho rs des b o rnes

Introdu tionDé�nition de la stru tureAlgorithme sur les tableauxFinalement souvenez-vous ( m03)Algorithme moyenne(n : entier) : réeldébutvariable m, a : réelvariable i : entierm ← 0pour i de 1 à n fairelire(a)m← m + a�n pourm← m/nretourner m�nMais :l'algorithme e�e tue deux hoses : le ture des notes et al ulde la moyenneLes valeurs des notes sont perdues :Par exemple, il n'est plus possible de al uler l'é art-typeSébastien Verel Stru tures de données indexées

Page 6: Structures de données indexées - Licence 1 MASS ...verel/TEACHING/07-08/... · 1: dernier du taille Conséquence: il n'est pas p ossible de lire une donnée en deho rs des b o rnes

Introdu tionDé�nition de la stru tureAlgorithme sur les tableauxVers une solutionIl faudrait noter (enregistrer) les notes quelque part :Algorithme moyenne(notes : ? ? ?, n : entier) : réelnotes : 12 8 17 5 16 18 18 11 14 12il serait possible de les lire de nouveau sans avoir à demander denouveau les notes.Nous allons apprendre à utliser es tableaux de donnéesSébastien Verel Stru tures de données indexées

Page 7: Structures de données indexées - Licence 1 MASS ...verel/TEACHING/07-08/... · 1: dernier du taille Conséquence: il n'est pas p ossible de lire une donnée en deho rs des b o rnes

Introdu tionDé�nition de la stru tureAlgorithme sur les tableauxPlan1 Introdu tion2 Dé�nition de la stru ture3 Algorithme sur les tableaux

Sébastien Verel Stru tures de données indexées

Page 8: Structures de données indexées - Licence 1 MASS ...verel/TEACHING/07-08/... · 1: dernier du taille Conséquence: il n'est pas p ossible de lire une donnée en deho rs des b o rnes

Introdu tionDé�nition de la stru tureAlgorithme sur les tableauxBesoin en tableauxLe besoin de sto ker pour traiter les données sont énormes :les images : tableau en deux dimensionsrépertoire de nomsles fa turesles alendriersles pla ards..........Sébastien Verel Stru tures de données indexées

Page 9: Structures de données indexées - Licence 1 MASS ...verel/TEACHING/07-08/... · 1: dernier du taille Conséquence: il n'est pas p ossible de lire une donnée en deho rs des b o rnes

Introdu tionDé�nition de la stru tureAlgorithme sur les tableauxCara téristiques de es stru tures de données0 1 2 3 4 5 6 7 812 3 4 78 12 3 9 11 12De taille �nie :le nombre maximum de données est déterminéeles données sont "numérotables" : indexablesle ture de données dont l'indi e (le rang) est déterminé

Sébastien Verel Stru tures de données indexées

Page 10: Structures de données indexées - Licence 1 MASS ...verel/TEACHING/07-08/... · 1: dernier du taille Conséquence: il n'est pas p ossible de lire une donnée en deho rs des b o rnes

Introdu tionDé�nition de la stru tureAlgorithme sur les tableauxDé laration tableauDé laration d'un tableau t de type typeElement ave N valeursvariable t : tableau de N typeElement0 1 2 3 4 5 6 7 812 3 4 78 12 3 9 11 12variable t : tableau de 9 entiersDé laration d'un tableau ontenant 12 ara tères :variable : tableau de 12 ara tèresDé laration d'un tableau ontenant n nombres réels (n est unevariable) :variable tabReal : tableau de n réelSébastien Verel Stru tures de données indexées

Page 11: Structures de données indexées - Licence 1 MASS ...verel/TEACHING/07-08/... · 1: dernier du taille Conséquence: il n'est pas p ossible de lire une donnée en deho rs des b o rnes

Introdu tionDé�nition de la stru tureAlgorithme sur les tableauxRemarquesles données d'un tableau sont du même typetaille du tableau : nombre maximal de donnée que peut ontenir le tableaula taille est déterminé à la dé larationla taille est �xe

Sébastien Verel Stru tures de données indexées

Page 12: Structures de données indexées - Licence 1 MASS ...verel/TEACHING/07-08/... · 1: dernier du taille Conséquence: il n'est pas p ossible de lire une donnée en deho rs des b o rnes

Introdu tionDé�nition de la stru tureAlgorithme sur les tableauxLe ture des valeursle ture de la valeur d'indi e i du tableau tt[i ]0 1 2 3 4 5 6 7 812 3 4 78 12 3 9 11 12t[3] a pour valeur 78tous les t[.] sont des variables lassiques :t[3] + 10 a pour valeur 88t[7] + t[0] a pour valeur 23Sébastien Verel Stru tures de données indexées

Page 13: Structures de données indexées - Licence 1 MASS ...verel/TEACHING/07-08/... · 1: dernier du taille Conséquence: il n'est pas p ossible de lire une donnée en deho rs des b o rnes

Introdu tionDé�nition de la stru tureAlgorithme sur les tableauxRemarquesBeau oup de langage de programmation ont pour onvention quenous adopterons.Supposons que la taille du tableau est n.indi e 0 : premier élément du tableauindi e n − 1 : dernier indi e du tailleConséquen e : il n'est pas possible de lire une donnée endehors des bornes (t[n + 1], t[n] ou t[−1])ATTENTION :Il n'est pas possible d'a éder à tous les éléments du tableauen même temps : seulement élément par élément (traitementséquen iel)Ne pas onfondre indi e et valeur :t[i ] 6= i Sébastien Verel Stru tures de données indexées

Page 14: Structures de données indexées - Licence 1 MASS ...verel/TEACHING/07-08/... · 1: dernier du taille Conséquence: il n'est pas p ossible de lire une donnée en deho rs des b o rnes

Introdu tionDé�nition de la stru tureAlgorithme sur les tableauxRemarques 0 1 2 3 4 5 6 7 812 3 4 78 12 3 9 11 12i ← 3�la ase après i�t[i + 1] 12�la ase avant i�t[i − 1] 4Sébastien Verel Stru tures de données indexées

Page 15: Structures de données indexées - Licence 1 MASS ...verel/TEACHING/07-08/... · 1: dernier du taille Conséquence: il n'est pas p ossible de lire une donnée en deho rs des b o rnes

Introdu tionDé�nition de la stru tureAlgorithme sur les tableauxA�e tation des valeursA�e tation de la valeur a à la ase d'indi e i du tableau tt[i ]← a0 1 2 3 4 5 6 7 812 3 4 78 12 3 9 11 12t[3]← 15t[2]← t[0]t[8]← t[1]2 + 10 1 2 3 4 5 6 7 812 3 12 15 12 3 9 11 10Sébastien Verel Stru tures de données indexées

Page 16: Structures de données indexées - Licence 1 MASS ...verel/TEACHING/07-08/... · 1: dernier du taille Conséquence: il n'est pas p ossible de lire une donnée en deho rs des b o rnes

Introdu tionDé�nition de la stru tureAlgorithme sur les tableauxRemarques sur l'a�e tationt : tableau de 5 entierst[0]← 3t[1]← 6t[2]← 98t[3]← 23t[4]← 91t[0] se omporte omme une variable � lassique��La ase d'avant i reçoit la ase i� :i ← 3t[i − 1]← t[i ]�La ase d'après i reçoit la ase d'avant� :i ← 3t[i + 1]← t[i ] Sébastien Verel Stru tures de données indexées

Page 17: Structures de données indexées - Licence 1 MASS ...verel/TEACHING/07-08/... · 1: dernier du taille Conséquence: il n'est pas p ossible de lire une donnée en deho rs des b o rnes

Introdu tionDé�nition de la stru tureAlgorithme sur les tableauxQuand utiliser un tableau ?Les questions que l'on doit se poser :Le nombre de données est-il déterminé à l'avan e ?Le nombre maximal de données est-il déterminé à l'avan e ?Les données ont-elles besoin d'être indexées (numérotées) ?A-t-on besoin d'a éder à une donnée dont l'indexe doit êtredéterminé ?Si oui, oui, oui, oui,il surement onseiller d'utiliser un tableauSébastien Verel Stru tures de données indexées

Page 18: Structures de données indexées - Licence 1 MASS ...verel/TEACHING/07-08/... · 1: dernier du taille Conséquence: il n'est pas p ossible de lire une donnée en deho rs des b o rnes

Introdu tionDé�nition de la stru tureAlgorithme sur les tableauxem MapleLes tableaux en maple peuvent ommen er à partir de n'importequel indi e.Toutefois, essaierons toujours de faire ommen er les tableaux àpartir de l'indi e 0.Dé laration d'un tableau t de taille 9 :t := array(0..8)Il faut seulement dé larer l'indi e initial et �nal.Il n'est pas né essaire de dé larer le type des données.Le ture :t[3℄ + 1;A�e tation :t[4℄ := 6; Sébastien Verel Stru tures de données indexées

Page 19: Structures de données indexées - Licence 1 MASS ...verel/TEACHING/07-08/... · 1: dernier du taille Conséquence: il n'est pas p ossible de lire une donnée en deho rs des b o rnes

Introdu tionDé�nition de la stru tureAlgorithme sur les tableauxItération et tableauxL'itération devient l'outil indispensable pour par ourir un tableau.Algorithme enregistrer(n : entier) : tableau de réeldébutvariable a : réelvariable i : entiervariable t : tableau de n réelspour i de 0 à n-1 fairelire(a)t[i ]← a�n pourretourner t�n Sébastien Verel Stru tures de données indexées

Page 20: Structures de données indexées - Licence 1 MASS ...verel/TEACHING/07-08/... · 1: dernier du taille Conséquence: il n'est pas p ossible de lire une donnée en deho rs des b o rnes

Introdu tionDé�nition de la stru tureAlgorithme sur les tableauxItération et tableauxMieuxAlgorithme enregistrer(n : entier) : tableau de réeldébutvariable i : entiervariable t : tableau de n réelspour i de 0 à n-1 fairelire(t[i ])�n pourretourner t�n Sébastien Verel Stru tures de données indexées

Page 21: Structures de données indexées - Licence 1 MASS ...verel/TEACHING/07-08/... · 1: dernier du taille Conséquence: il n'est pas p ossible de lire une donnée en deho rs des b o rnes

Introdu tionDé�nition de la stru tureAlgorithme sur les tableauxEn maplele ture := pro (n)# n : entier nombre d'élément du tableau# sortie : tableau de n valeurslo al i, t;t := array(0..n-1);for i from 0 to n-1 dot[i℄ := readstat();od;RETURN(eval(t));end;La valeur retournée est eval(t) au lieu de t seulementsinon la pro édure renvoie seulement le �symbole� t au lieu d'untableau Sébastien Verel Stru tures de données indexées

Page 22: Structures de données indexées - Licence 1 MASS ...verel/TEACHING/07-08/... · 1: dernier du taille Conséquence: il n'est pas p ossible de lire une donnée en deho rs des b o rnes

Introdu tionDé�nition de la stru tureAlgorithme sur les tableauxCal ul de la moyenneAlgorithme moyenne(t : tableau de réel, n : entier) : réeldébutvariable m : réelvariable i : entierm ← 0pour i de 0 à n-1 fairem ← m + t[i ]�n pourm ← m/nretourner m�n Sébastien Verel Stru tures de données indexées

Page 23: Structures de données indexées - Licence 1 MASS ...verel/TEACHING/07-08/... · 1: dernier du taille Conséquence: il n'est pas p ossible de lire une donnée en deho rs des b o rnes

Introdu tionDé�nition de la stru tureAlgorithme sur les tableauxEn maplemoyenne := pro (t, n)# t : tableau de n entiers, ontenant les notes# n : entier, nombre de notes# sortie : valeur moyenne des noteslo al i, m;m := 0;for i from 0 to n-1 dom := m + t[i℄;od;m := m / n;RETURN(m);end; Sébastien Verel Stru tures de données indexées

Page 24: Structures de données indexées - Licence 1 MASS ...verel/TEACHING/07-08/... · 1: dernier du taille Conséquence: il n'est pas p ossible de lire une donnée en deho rs des b o rnes

Introdu tionDé�nition de la stru tureAlgorithme sur les tableauxUtilisation d'un a umulateurComme dans le as de al ul de la moyenne,un ertain nombre d'algorithmes né essite de mémoriser un al ulpartiel.On nomme souvent par a umulateur la variable qui permet demémoriser e résultat.ATTENTION !Il faut toujours a�e ter une valeur initiale (initialiser) àl'a umulateur avant le ommen ement du al ul.Sébastien Verel Stru tures de données indexées

Page 25: Structures de données indexées - Licence 1 MASS ...verel/TEACHING/07-08/... · 1: dernier du taille Conséquence: il n'est pas p ossible de lire une donnée en deho rs des b o rnes

Introdu tionDé�nition de la stru tureAlgorithme sur les tableauxSomme des arrésCal uler Sn =∑n−1k=0 u2k ave uk stoké l'in ide k du tableau t :Algorithme sommeCarre(t : tableau de réel, n : entier) : réeldébutvariable m : réelvariable i : entierm ← 0pour i de 0 à n-1 fairem ← m + t[i ]2�n pourretourner m�n Sébastien Verel Stru tures de données indexées

Page 26: Structures de données indexées - Licence 1 MASS ...verel/TEACHING/07-08/... · 1: dernier du taille Conséquence: il n'est pas p ossible de lire une donnée en deho rs des b o rnes

Introdu tionDé�nition de la stru tureAlgorithme sur les tableauxEn maplesommeCarre := pro (t, n)# t : tableau de n entiers, ontenant les uk# n : entier, nombre de termes# sortie : entier, somme des arréslo al i, m;m := 0;for i from 0 to n-1 dom := m + t[i℄^2;od;RETURN(m);end; Sébastien Verel Stru tures de données indexées

Page 27: Structures de données indexées - Licence 1 MASS ...verel/TEACHING/07-08/... · 1: dernier du taille Conséquence: il n'est pas p ossible de lire une donnée en deho rs des b o rnes

Introdu tionDé�nition de la stru tureAlgorithme sur les tableauxTrouver le maximum des éléments d'un tableauAlgorithme max2(a, b : réel) : réeldébutsi a > b alorsretourner asinonretourner b�n si�n�������������������Algorithme max3(a, b, : réel) : réeldébutretourner max2(max2(a, b), )�n�������������������Algorithme max4(a, b, , d : réel) : réeldébutretourner max2(max3(a, b, ), d)�n Sébastien Verel Stru tures de données indexées

Page 28: Structures de données indexées - Licence 1 MASS ...verel/TEACHING/07-08/... · 1: dernier du taille Conséquence: il n'est pas p ossible de lire une donnée en deho rs des b o rnes

Introdu tionDé�nition de la stru tureAlgorithme sur les tableauxTrouver le maximum des éléments d'un tableauAlgorithme max(t : tableau de réel, n : entier) : réeldébutsi n = 1 alorsretourner t[0]sinonretourner max2(max(t, n − 1), t[n − 1])�n si�n

Sébastien Verel Stru tures de données indexées

Page 29: Structures de données indexées - Licence 1 MASS ...verel/TEACHING/07-08/... · 1: dernier du taille Conséquence: il n'est pas p ossible de lire une donnée en deho rs des b o rnes

Introdu tionDé�nition de la stru tureAlgorithme sur les tableauxElement maximumTrouver le maximum des éléments d'un tableauAlgorithme maximum(t : tableau de réel, n : entier) : réeldébutvariable max : réelvariable i : entiermax ← t[0]pour i de 1 à n-1 fairesi max < t[i ] alorsmax ← t[i ]�n si�n pourretourner max�n Sébastien Verel Stru tures de données indexées

Page 30: Structures de données indexées - Licence 1 MASS ...verel/TEACHING/07-08/... · 1: dernier du taille Conséquence: il n'est pas p ossible de lire une donnée en deho rs des b o rnes

Introdu tionDé�nition de la stru tureAlgorithme sur les tableauxEn maplemaxTab := pro (t, n)# t : tableau de n nombres# n : entier, nombre d'éléments# sortie : réel, maximum du tableaulo al i, m;m := t[0℄:for i from 0 to n-1 doif m < t[i℄ thenm := t[i℄:fi:od:RETURN(m);end; Sébastien Verel Stru tures de données indexées

Page 31: Structures de données indexées - Licence 1 MASS ...verel/TEACHING/07-08/... · 1: dernier du taille Conséquence: il n'est pas p ossible de lire une donnée en deho rs des b o rnes

Introdu tionDé�nition de la stru tureAlgorithme sur les tableauxObje tifs de la séan e 51 Lire et enregistrer une valeur dans un tableau2 Re her he des valeurs extrémales d'un tableau3 Utilisation d'un a umulateur pour réaliser un al ul dans untableau4 Savoir on evoir un jeu de tests pour un algorithme5 Savoir inspe ter les valeurs de ertaines données d'unalgorithmeQuestions prin ipales du jour :Comment traiter les données de manière indexée ?Sébastien Verel Stru tures de données indexées