Ce cours, vous montre comment fonctionne un tableau de variables et les pièges à éviter.
Tableau à une dimension :
Donc reprenons, l'histoire de nos bouteilles, un tableau ç'est comme un panier comportant plusieurs bouteilles de n'importe quel type (liquide, solide..).
La seule différence c'est que l'on a un nom pour le panier, mais pas pour les bouteilles, elles sont dans le panier, dans un ordre stricte qui ne bougera pas, donc pas besoin de connaitre leur nom, si on connait le nom du panier et de la position de la bouteille dans ce panier, c'est amplement suffisant.
On peut avoir autant de bouteilles que l'on veut dans ce panier.
Exemple, je prend mon panier de bouteille vide qui contiennent des liquides, on va les remplir.
En Algorythme :
Code |
Fonction : RemplirMesBouteilles Variables : monPannier est un pannier de bouteille liquide monVerre contient du liquide Début : | monPannier[0] <- Jux d'orange | monPannier[1] <- Eau | monPannier[2] <- Bierre | monPannier[3] <- Vin Rouge | monVerre <- monPannier[0] + monPannier[1] | | Boire monVerre Fin |
J'obtiens un verre de jus d'orange dilué avec de l'eau.
Vous constatez une chose flagrante, c'est que la première bouteille du panier est considérée comme la bouteille 0... Pourquoi pas la bouteille 1.
Je vais tenter de vous expliquer cette bizarerie, Attention, c'est des notions de programmation bas niveau (fonctionnement interne) :
Quelque soit la variable, cela reste un endroit sur votre disque dur, où est inscrit une information, dont le type permet de connaitre la place que l'information prend en terme d'octet. Un tableau dans la mémoire, se sont donc, plusieurs informations de même type qui sont écrites à la suite, le nom du tableau défini la position de la première information stocké, ensuite il faut se décalé pour atteindre les autres informations.
Dans mon exemple de panier, c'est comme si on me disait, va prendre une bouteille, hop, j'attrape directement la première, si je veux la deuxième, je décale 1 fois le nombre que l'on met entre crochet pour un tableau correspond au décalage à effectué.
Ce qu'il faut retenir c'est que le premier élément du tableau a l'index 0 et que son nom est son adresse mémoire
Petit exemple d'addition en ruby, avec des tableaux :
(Ruby) | |
1 2 3 4 5 6 |
def additionner
tabReel = [12, 34, -24, 0.25, -3.75] # là, le tableau est typé Reel monResultat = tabReel[1] + tabReel[4] end |
monResultat est égale à 30.25
Je le répète encore une fois, faites très attention à l'index du tableau, ne pas savoir ce repérer dedans, c'est une grande source d'erreur.
Cela marche de la même façon, pour tous les types de variable.
Tableau à dimension Multiple :
Comme je vous l'ai expliqué un tableau peut être représentant pas un panier, contenant des bouteilles. Mais maintenant supposez, que dans un coffre, j'ai plusieurs paniers de même dimension (contenant le même nombre de bouteille), ce qui en algorithmer aurait cette tête là :
Code |
Fonction : RemplirMonCoffre Variables : monPannier1 est un pannier de bouteille monPannier2 est un pannier de bouteille monPannier3 est un pannier de bouteille monPannier4 est un pannier de bouteille monCoffre est un coffre de pannier Début : | monPannier1[0] <- une bouteille d'eau | monPannier2[0] <- une bouteille de jus d'orange | monCoffre[0] <- monPannier1 | monCoffre[1] <- monPannier2 | monCoffre[2] <- monPannier3 | monCoffre[3] <- monPannier4 | | mon Fin |
Dans l'exemple ci dessus, j'ai mis dans le coffre 4 paniers, dont le premier comprend une bouteille d'eau, et le second, une bouteille de jus d'orange. Jusque là, vous me suivez?? ^^
Donc si on suit ce que l'on a vu au cours précédent :
monPannier1[0] = la bouteille d'eau
et
monCoffre[0] = monPannier1
on peut donc remplacer dans la première ligne monPannier1 par monCoffre[0], et nous obtenons :
monCoffre[0][0] = la bouteille d'eau
Vous venez de voir comment fonctionne un tableau à plusieurs dimensions. Cependant attention, j'ai déjà fait la remarque d'être rigoureux avec les index pour une dimension, je vous conseille de l'être encore plus pour les tableaux à multiple dimension.
Et oui, imaginez que dans un bâtiment, j'ai plusieurs caves, contenant plusieurs coffres, contenant plusieurs paniers, contenant plusieurs bouteilles... fiou, le casse tête
Hop, ça nous donnes :
monBatiment[0] = uneCave
uneCave[0] = unCoffre
unCoffre[0] = unPannier
unPannier[0] = uneBouteille de jus de citron vert
en réduisant cela, nous obtenons :
monBatiment[0][0][0][0] = une bouteille de jus de citron vert
en récapitulant les index :
le premier identifie une cave
le deuxième identifie un coffre
le troisième identifie un panier
le quatrième identifie une bouteille
Cependant rassurez vous, dans un programme, on a rarement plus de 3 Dimensions