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