Sébastien Verel
vereli3s.unie.fr
www.i3s.unie.fr/
∼
verelÉquipeSoBi-UniversitédeNieSophia-Antipolis
15 février2008
Objetifs de la séane 5
1
Lireet enregistrerunevaleur dansuntableau
2
Reherhe desvaleurs extrémalesd'un tableau
3
Utilisationd'un aumulateur pourréaliserunalul dansun
tableau
4
Savoironevoir unjeude testspourun algorithme
5
Savoirinspeterles valeurs de ertainesdonnées d'un
algorithme
Questions prinipales dujour :
Comment traiterlesdonnées de manièreindexée?
A quoi ça sert?
Algorithme moyenne(n1 ,n2 ,n3 ,n4,n5 ,n6 ,n7 ,n8 ,n9 ,
n10 ,n11 ,n12 :réel): :réel
début
variable m:réel
m
← (
n1+
n2+
n3+
n4+
n5+
n6+
n7+
n8+
n9+
n10+
n11+
n12)/
12retournerm
n
Ce n'estpas tenable:
lorsqu'on passeàune éhellede 1000 notesou plus,
Finalement souvenez-vous (m03)
Algorithme moyenne(n:entier):réel
début
variable m,a:réel
variable i:entier
pouride1ànfaire
lire(a)
m
←
m+
anpour
m
←
m/
nretournerm
n
→
ATTENTION:oublie de l'initialisationde aumulateurFinalement souvenez-vous (m03)
Algorithme moyenne(n:entier):réel
début
variable m,a:réel
variable i:entier
m
←
0pouride1ànfaire
lire(a)
m
←
m+
anpour
m
←
m/
nretournerm
n
Mais :
Vers une solution
Il faudraitnoter (enregistrer)lesnotesquelque part:
Algorithme moyenne(notes :???, n :entier):réel
notes :
12 8 17 5 16 18 18 11 14 12
il seraitpossible de leslirede nouveau sansavoirà demanderde
nouveau lesnotes.
Nous allonsapprendre àutliser estableauxde données
Plan
1
Introdution
2
Dénition de lastruture
3
Algorithmesur lestableaux
Besoin en tableaux
Le besoinde stokerpour traiterlesdonnées sonténormes:
les images:tableau en deux dimensions
répertoirede noms
les fatures
les alendriers
les plaards
...
Caratéristiques de es strutures de données
0 1 2 3 4 5 6 7 8
12 3 4 78 12 3 9 11 12
De taillenie:
le nombremaximum de donnéesest déterminée
les donnéessont"numérotables" :indexables
leture de donnéesdontl'indie (le rang)est déterminé
Délaration tableau
Délarationd'un tableaut de type typeElement aveN valeurs
variable t:tableau de N typeElement
0 1 2 3 4 5 6 7 8
12 3 4 78 12 3 9 11 12
variable t:tableau de 9entiers
Délarationd'un tableauontenant 12 aratères:
variable :tableau de 12 aratères
Délarationd'un tableauontenant n nombres réels(n est une
variable) :
variable tabReal:tableau de n réel
Remarques
les donnéesd'un tableau sontdumême type
tailledutableau :nombremaximalde donnée quepeut
ontenirle tableau
latailleest déterminéàladélaration
latailleest xe
Leture des valeurs
leture de lavaleur d'indiei dutableau t
t
[
i]
0 1 2 3 4 5 6 7 8
12 3 4 78 12 3 9 11 12
t
[
3]
apour valeur78tousles t
[.]
sontdes variables lassiques:t
[
3] +
10a pourvaleur 88t
[
7] +
t[
0]
apourvaleur 23Remarques
Beauoup de langage de programmationont pouronventionque
nous adopterons.
Supposons quelatailledutableau estn.
indie 0:premier élémentdu tableau
indie n
−
1 :dernierindiedu tailleConséquene :iln'estpas possiblede lireunedonnée en
dehorsdesbornes (t
[
n+
1]
,t[
n]
ou t[−
1]
)ATTENTION :
Il n'est paspossibled'aéder àtous leséléments dutableau
en même temps:seulementélément parélément(traitement
Remarques
0 1 2 3 4 5 6 7 8
12 3 4 78 12 3 9 11 12
i
←
3laase aprèsi
t
[
i+
1]
12
laase avant i
t
[
i−
1]
4
Aetation des valeurs
Aetation dela valeura àlaase d'indiei dutableau t
t
[
i] ←
a0 1 2 3 4 5 6 7 8
12 3 4 78 12 3 9 11 12
t
[
3] ←
15t
[
2] ←
t[
0]
t
[
8] ←
t[
1]
2+
1Remarques sur l'aetation
t :tableaude 5 entiers
t
[
0] ←
3t
[
1] ←
6t
[
2] ←
98t
[
3] ←
23t
[
4] ←
91t
[
0]
seomporteomme unevariablelassiqueLa ase d'avanti reçoitlaase i :
i
←
3t
[
i−
1] ←
t[
i]
La ase d'après i reçoitlaase d'avant :
i
←
3t
[
i+
1] ←
t[
i]
Quand utiliser un tableau?
Les questionsque l'ondoit seposer :
Le nombrede donnéesest-ildéterminéàl'avane?
Le nombremaximalde donnéesest-ildéterminéàl'avane?
Les donnéesont-elles besoind'êtreindexées(numérotées)?
A-t-on besoin d'aéder àunedonnée dontl'indexedoit être
déterminé?
Si oui,oui,oui, oui,
em Maple
Les tableauxen maple peuvent ommeneràpartir de n'importe
quel indie.
Toutefois, essaieronstoujoursde faireommenerles tableauxà
partirde l'indie 0.
Délarationd'un tableaut de taille9 :
t := array(0..8)
Il fautseulement délarer l'indieinitialet nal.
Il n'est pasnéessaire de délarerle type desdonnées.
Leture :
t[3℄ + 1;
Aetation:
t[4℄ := 6;
Itération et tableaux
L'itération devient l'outilindispensablepourparourir untableau.
Algorithme enregistrer(n:entier): tableaude réel
début
variable a:réel
variable i:entier
variable t:tableau de n réels
pour ide 0 àn-1 faire
lire(a)
t
[
i] ←
anpour
Itération et tableaux
Mieux
Algorithme enregistrer(n:entier): tableaude réel
début
variable i:entier
variable t:tableau de n réels
pour ide 0 àn-1 faire
lire(t
[
i]
)npour
retournert
n
En maple
leture := pro(n)
# n : entier nombre d'élément du tableau
# sortie : tableau de n valeurs
loal i, t;
t := array(0..n-1);
for i from 0 to n-1 do
t[i℄ := readstat();
od;
RETURN(eval(t));
Calul de la moyenne
Algorithme moyenne(t :tableau de réel, n:entier) :réel
début
variable m:réel
variable i:entier
m
←
0pour ide 0 àn-1 faire
m
←
m+
t[
i]
npour
m
←
m/
nretournerm
n
En maple
moyenne := pro(t, n)
# t : tableau de n entiers, ontenant les notes
# n : entier, nombre de notes
# sortie : valeur moyenne des notes
loal i, m;
m := 0;
for i from 0 to n-1 do
m := m + t[i℄;
od;
Utilisation d'un aumulateur
Commedans leas de alulde la moyenne,
un ertainnombred'algorithmes néessitede mémoriserunalul
partiel.
On nommesouvent paraumulateur lavariable quipermetde
mémorisere résultat.
ATTENTION!
Il faut toujoursaeter unevaleur initiale(initialiser)à
l'aumulateur avantle ommenement dualul.
Somme des arrés
Caluler S
n
= P
n−
1k
=
0u 2
k
ave u
k
stokél'inide k dutableau t :
Algorithme sommeCarre(t:tableau deréel, n :entier) :réel
début
variable m:réel
variable i:entier
m
←
0pour ide 0 àn-1 faire
m
←
m+
t[
i]
2npour
En maple
sommeCarre := pro(t, n)
# t : tableau de n entiers, ontenant les uk
# n : entier, nombre de termes
# sortie : entier, somme des arrés
loal i, m;
m := 0;
for i from 0 to n-1 do
m := m + t[i℄^2;
od;
RETURN(m);
end;
Trouver le maximum des éléments d'un tableau
Algorithme max2(a ,b :réel):réel
début
sia
>
balorsretournera
sinon
retournerb
nsi
n
Algorithme max3(a ,b, :réel):réel
début
retournermax2(max2(a ,b),)
n
Trouver le maximum des éléments d'un tableau
Algorithme max(t:tableauderéel,n:entier):réel
début
sin
=
1alorsretournert
[
0]
sinon
retournermax2(max(t,n
−
1),t[
n−
1]
)nsi
n
Element maximum
Trouver lemaximum desélémentsd'un tableau
Algorithme maximum(t :tableaude réel, n :entier):réel
début
variable max:réel
variable i:entier
max
←
t[
0]
pour ide 1 àn-1 faire
si max
<
t[
i]
alorsmax
←
t[
i]
nsi
En maple
maxTab := pro(t, n)
# t : tableau de n nombres
# n : entier, nombre d'éléments
# sortie : réel, maximum du tableau
loal i, m;
m := t[0℄:
for i from 0 to n-1 do
if m < t[i℄ then
m := t[i℄:
fi:
od:
RETURN(m);
SébastienVerel Struturesdedonnéesindexées
Objetifs de la séane 5
1
Lireet enregistrerunevaleur dansuntableau
2
Reherhe desvaleurs extrémalesd'un tableau
3
Utilisationd'un aumulateur pourréaliserunalul dansun
tableau
4
Savoironevoir unjeude testspourun algorithme
5
Savoirinspeterles valeurs de ertainesdonnées d'un
algorithme
Questions prinipales dujour :