Dans chaque cas, indiquer quelle structure de données vous semble la plus adaptée, et donner une exemple de création et d'interaction avec la structure de données.
Tableau
Créer une classe Tableau
qui implémente les quatre méthodes
ci-dessous en stockant les données du tableau dans un attribut
appelé data
de type list
e.
tableau.ajout(index, élément)
;tableau.suppr(index)
;tableau.est_vide()
tableau.longueur()
On donne ci-dessous une séquence d'instructions d'initialisation et
d'utilisation d'un tableau
.
# instanciation
tab = Tableau()
# utilisation
tab.longueur() # renvoie 0
tab.est_vide() # renvoie True
tab.ajout(0, "pomme")
tab.data # renvoie ['pomme']
tab.ajout(1, "poire")
tab.ajout(0, "pêche")
tab.data # ['pêche', 'pomme', 'poire']
tab.est_vide() # renvoie False
tab.suppr(2)
tab.suppr(0)
tab.data # renvoie ['pomme']
Ajoutez ensuite la possibilité d'initialiser (méthode
__init__()
)les données du tableau en fournissant un paramètre de
type list
e lors de l'instanciation. Et ajoutez également une
méthode d'affichage du tableau (méthode __repr__()
) pour afficher
les tableaux sous la forme: "Tableau([e1, e2, ..., en])"
.
On donne ci-dessous une séquence d'instructions d'initialisation et
d'utilisation d'un tableau
.
# instanciation
tab1 = Tableau([2, 6, 5])
# utilisation
tab1.longueur() # renvoie 3
tab1.est_vide() # renvoie False
tab1.ajout(0, 12)
tab1.suppr(2)
print(tab1) # renvoie "Tableau([12, 2, 5])"
Pour aller plus loin: Cacher la structure de liste de
l'attribut data
en autorisant l'initialisation sans les crochets:
tab2 = Tableau(2, 6, 5)
, et en modifiant la méthode d'affichage
pour que: print(tab2)
renvoie: "Tableau(2, 6, 5)"
.
Pour cela on utilisera le paramètre spécial *args
, et la méthode
join
des str
en Python.
Pour aller encore plus loin: Rendre l'utilisation des tableaux
plus aisée en permettant le chaînage des méthodes
tableau.méthode1().méthode2().méthode1()...
On donne ci-dessous une séquence d'instructions d'initialisation et
d'utilisation d'un tableau
.
# instanciation
tab3 = Tableau()
# utilisation
tab3.ajout(0, 12).ajout(1, 13).ajout(0, 9)
print(tab3) # renvoie "Tableau(9, 12, 13)"
tab3.suppr(2).suppr(0)
print(tab3) # renvoie "Tableau(12)"
tab3.suppr(0).est_vide() # renvoie True