# Les tableaux ## Tableaux indexés ### Principe Il est fréquent d'avoir à stocker plusieurs valeurs dans une même variable. Pour cela, nous pouvons utiliser un [tableau](red). Par exemple, pour avoir tous les jours de la semaine dans une même variable nous pouvons créer un tableau qui se représentera ainsi :
"Lundi" "Mardi" "Mercredi" "Jeudi" "Vendredi" "Samedi" "Dimanche"
Chaque valeur est numérotée par un indice, le premier indice étant toujours 0. Ainsi, dans un tableau de 7 élements, le dernier a l'indice 6 !
Indice 0 1 2 3 4 5 6
Valeur "Lundi" "Mardi" "Mercredi" "Jeudi" "Vendredi" "Samedi" "Dimanche"
### Les tableaux indexés dans différents langages Voyons quelques exemples de définition de notre tableau des jours et la façon de le parcourir et d'afficher chaque jour. Vous remarquerez qu'il y a des points communs et quelques petites différences. #### En Javascript ``` javascript var mon_tableau = new Array('Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi', 'Dimanche'); // première méthode var mon_tableau = ['Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi', 'Dimanche']; // seconde méthode var chn = ''; for (var i = 0; i < mon_tableau.length; i++) { chn = chn + mon_tableau[i] + "\n"; // "\n" sert au retour à la ligne } alert(chn) // affichage dans une fenêtre "pop-up" ```
## Tableaux associatifs ### Principe Plutôt que d'indexer les valeurs, il est possible d'associer des valeurs à d'autres valeurs, en utilisant un [tableau associatif](red). Par exemple, nous pourrions vouloir associer quelques pays à leur capitale. **Méthode 1 : créer deux tableaux indexés**
Tableau pays
Indice 0 1 2 3 4
Valeur "Australie" "Brésil" "Kenya" "Canada" "Malte"
Tableau capitales
Indice 0 1 2 3 4
Valeur "Canberra" "Brasilia" "Nairobi" "Ottawa" "La Valette"
Ainsi, si je veux la capitale du Canada, je regarde l'indice de la chaîne "Canada" dans le tableau *pays*, ici 3, puis je lis la valeur de *capitales[3]*. **Méthode 2 : créer un tableau associatif**
Tableau capitales
Pays "Australie" "Brésil" "Kenya" "Canada" "Malte"
Capitale "Canberra" "Brasilia" "Nairobi" "Ottawa" "La Valette"
ce qui me permet directement de trouver la capitale d'un pays donné. ### Les tableaux associatifs dans différents langages Voyons quelques exemples de définition de notre tableau des capitales (nous n'en gardons que trois), comment afficher une valeur et la façon de le parcourir et d'afficher les pays et leur capitale. #### En Javascript ``` javascript var capitales={ 'Australie' : 'Canberra', 'Brésil' : 'Brasilia', 'Kenya' : 'Nairobi' }; alert("La capitale du Brésil est " + capitales['Brésil']); // affichera : Brasilia var chn = ''; for(var pays in capitales) { var capitale = capitales[pays]; chn = chn + pays + ' a pour capitale ' + capitale + "\n"; } alert(chn); ```
#### En PHP ``` php $mon_tableau = array('Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi', 'Dimanche'); // $mon_tableau[0] vaut 'Lundi' ; $mon_tableau[1] vaut 'Mardi' etc. for($i = 0; $i < 2; $i++) echo $mon_tableau[$i]."\n"; ``` #### En C ``` c char mon_tableau[7][9]= {"lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi", "dimanche"}; for (i = 0 ; i < 7 ; i++) { printf("%d\n", mon_tableau[i]); } ``` (il faut donner le type des données contenues dans le tableau (ici c'est un tableau de 7 tableaux contenant chacun 9 caractères)) #### En Python ``` python mon_tableau = ['Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi', 'Dimanche'] for jour in mon_tableau: print(jour) ``` Ici, la commande `type(mon_tableau)` renverrai `list` : les tableaux en Python sont représentés grâce au type de données `list`. En fait, ce nom de `list` est plutôt mal choisi : une liste est une structure de données différente d'un tableau en informatique (cette différence sera abordée en classe de Terminale). Par exemple, dans certains langages un tableau est considéré comme ayant une taille fixe, ce n'est pas le cas en Python (pensez par exemple à la méthode `append`).
Il est également possible d'utiliser des n-uplets (en Python, le type `tuple`) pour représenter des tableaux. Dans ce cas, il est impossible de modifier les valeurs, ce qui peut être utile...

Voici donc les cours relatifs aux listes sous Python : * [la partie présente également dans la spécialité mathématiques](listes_spe_maths.html) : les différents façons de créer une liste, de la modifier ou de la parcourir ; * [des compléments](listes_complements.html) : slicing, liste de listes, etc. * [liste et mutabilité](mutabilite.html).
#### En PHP ``` php $capitales = array('Australie' => 'Canberra', 'Brésil' => 'Brasilia', 'Kenya' => 'Nairobi'); print $capitales['Brésil']; // affichera : Brasilia // parcours du tableau en boucle foreach($capitales as $pays=>$capitale) print "La capitale de ". $pays." est ".$capitale."."; ``` #### En Python ``` python capitales={ 'Australie' : 'Canberra', 'Brésil' : 'Brasilia', 'Kenya' : 'Nairobi' } print('Capitale du Brésil :', capitales['Brésil']) # affichera : Capitale du Brésil : Brasilia for pays in capitales: # ou "for pays in capitales.keys()" print(pays) # affiche tous les pays for pays, capit in capitales.items(): print("La capitale de", pays, "est", capit) ``` Ici, la commande `type(capitales)` renverrai `dict` : les tableaux associatifs en Python sont représentés grâce au type de données `dict` (pour [dictionnaire](red)). Notez bien ici que ce sont des accolades qui sont utilisées pour définir des dictionnaires, pas des crochets mais qu'il faut utiliser des crochets pour accèder à un élément... Passez maintenant à ce [notebook sur les dictionnaires en Python](https://clogique.fr/notebook/?from=/nsi/premiere/td_tp/dictionnaires.ipynb) qui fera aussi office de cours.