Tableau de taille fixe

tableu de taille fixe

In [1]:
class Tableau:  
    def __init__(self,N):
        
        self.data = [None]*N
                
        self.taille = N

La taille est spécifiée à l'initialisation.

L'indice d'un élément permet de calculer son emplacement mémoire en utilisant

  • l'emplacement du début
  • la taille des éléments

La plage des indices valides est l'intervalle [0,taille[.

In [4]:
def indice_valide(T,i):
    
    return i >= 0 and i < T.taille

Certains langages acceptent des indices négatifs.

In [6]:
def calculer_indice(T,i):
    if i < 0: return T.taille+i
    else:     return i
In [7]:
T = Tableau(4)
for i in range(-2,2):
    print(i,"→",calculer_indice(T,i))
-2 → 2
-1 → 3
0 → 0
1 → 1
Méthodes Descriptions
modifier _valeur(i,v) modificateur, écrit v dans l'élément d'indice i
lire_valeur(i) sélecteur, lit l'élément d'indice i
taille() sélecteur, retourne la taille du tableau
In [8]:
def modifier_valeur(T,i,val):   
    if not indice_valide(T,i):
        raise IndexError("")
    
    T.data[i] = val
In [10]:
def lire_valeur(T,i):
    if not indice_valide(T,i):
        raise IndexError("")
    
    return T.data[i]
In [12]:
def taille(T):
    
    return T.taille

En python

In [14]:
class Tableau:    
    def __init__(self,N):
        self.data = [None]*N
        self.taille = N
    
    __setitem__ = modifier_valeur
    
    __getitem__ = lire_valeur
    
    __len__     = taille
    
    __str__     = h.convertir_en_texte
In [15]:
T = Tableau(5)

for i in range(T.__len__()):
    T.__setitem__(i,i*(i+1)//2)
    
print(T.__getitem__(2)) 
print(T.__len__()) 
print(T.__str__())
3
5
taille: 5, data: [0, 1, 3, 6, 10]
In [16]:
T = Tableau(5)

for i in range(len(T)):
    T[i] = i*(i+1)//2
    
print(T[2])
print(len(T)) 
print(T)
3
5
taille: 5, data: [0, 1, 3, 6, 10]

ASD1 Notebooks on GitHub.io

© Olivier Cuisenaire, 2018