Tableau à une dimension

1
Tableau à une dimension
2
Plan
• Les tableaux en algorithmique
▫ Définition
▫ Déclaration
▫ Accès aux éléments
• Les tableaux en python
• Passage des paramètres en python (LES LISTES)
• Exercices
Pourquoi les tableaux?
Algorithme Fibonacci
Variable
i,n,t0,t1,t2: entier
Debut
Lire(n)
t00
t11
Pour i2 jusqu’à n faire
t2t0+t1
t0t1
t1t2
Fp
fin
• Cet algorithme permet de
garder que les trois dernières
valeurs et donc les autres
valeurs seront perdues.
• Cet algorithme sera évidement
incapable de stocker toutes les
valeurs des termes d’ordre
inférieur à n-1 pour un calcul
ultérieur. Une solution à ce
problème est d’utiliser une
variable indicée ou un tableau.
3
4
Définition
• Un tableau est une liste de données de même type
•
•
•
•
•
représenté par un nom de variable unique.
Les différentes données sont stockées dans des cases
identifiées par le nom du tableau et un indice
suivant la position de la donnée.
La première case aura pour indice 0.
Pour un tableau de N données les indices seront de
0 à N-1.
Ce type de tableau est unidimensionnel c’est-à-dire
un tableau à une seule dimension (vecteur)
On peut trouver des tableaux multidimensionnel.
5
Déclaration et accès aux éléments:
• La déclaration d’un tableau se fait dans la partie
déclarative de l’algorithme:
• <Nom Tableau>[<taille>]:type
• Exemple:
• Montab[50]:entier
indices
0
1
valeurs
Montab[0]
2
...
…
…
…
…. …
49
6
Les tableaux en python
• En python les tableaux sont représentés par des listes.
• Déclaration et initialisation d’un tableau:
Nom_tableau=[valeur]*taille.
Exemple: initialisation d’un tableau de taille 50.
Déclaration d'un tableau avec initialisation par des zéros :
L=[0]*50
• Déclaration d'un tableau avec initialisation par des uns :
L=[1]*50
• Déclaration d'un tableau avec initialisation par des
valeurs
L=[1,2, 3,4,5,6,7,8,9,10]
7
Passage des paramètres en python
• Rappel:
8
Listes et références
>>> s = [1,2,3]
>>> t = s
>>> s is t
True
1.Créer une liste de 3
objets entiers (valant 1, 2
et 3), de mettre dans s la
référence à cette liste et
ensuite de donner la
même référence à t; et
donc s is t répond True.
2.Donc s et t référencent
la même liste comme
le montre le schéma:
9
Exemple:
def func(x, y):
print(id(x))
x = 27
# la valeur locale de x est changée
y[0] =9 # impact sur la référence partagée
print(id(x))
#-----------------------PROGRAMME PRINCIPAL------------------------x=1
print(id(x))
y = [2, 3, 5, 7]
func(x, y)
# x est non mutable, mais y l'est
print (x,y)
Affichage-----------------------------------------------------------------------8731968
8731968
8732800
1 [9, 3, 5, 7]
10
Explications :
Puisque x est un nom local à la fonction func,
l'affectation à la valeur 27 n'a aucune incidence
sur l'appelant.
Par contre y dans l'appelant étant une liste (donc
mutable), le résultat de l'affectation à y[0] est
visible dans l'appelant à l'issue de l'exécution de
la fonction.
11
12
Autre exemple:
def swap(x, y):
x, y = y, x # seules les valeurs locales sont changées
x, y = 0, 1
swap(x, y)
print (x, y)
# 0, 1
x, y = [2, 3, 5, 7], [-2, -1, 0]
swap(x, y)
print (x, y)
# [2, 3, 5, 7] [-2, -1, 0]
13
def swap(x, y):
x[1], y[1] = y[1], x[1]
x, y = [2, 3, 5, 7], [-2, -1, 0]
swap(x, y)
print (x, y)
# [2, -1, 5, 7] [-2, 3, 0]
14
TD 7