# Tableaux Les tableaux sont une structure de données fondamentale en programmation, permettant de stocker et de manipuler des collections d'éléments de manière organisée. Ils constituent un pilier de l'algorithmique et sont omniprésents dans la résolution de problèmes complexes. Ce chapitre introduit les concepts de base des tableaux, leur manipulation et leurs propriétés essentielles. > [!video] Vidéo explicative > <iframe width="560" height="315" src="https://www.youtube.com/embed/oDIacnXhpvg?si=0-XdQB2vGrE-Eu-8" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe> ## 1. Introduction aux Tableaux En programmation, une variable permet de stocker une seule valeur. Cependant, il est souvent nécessaire de manipuler un ensemble de valeurs du même type (par exemple, une liste de notes d'étudiants, les pixels d'une image, ou les éléments d'un vecteur). C'est là qu'interviennent les tableaux. > [!definition] Définition > Un **tableau** (ou *array*) est une collection ordonnée d'éléments de *même type*, stockés dans des emplacements mémoire contigus et accessibles via un *indice* (ou *index*). Les tableaux sont une extension directe du concept de variable, permettant de regrouper logiquement plusieurs données sous un même nom. Leur structure contiguë permet un accès très efficace aux éléments. ## 2. Tableaux à Une Dimension Un tableau à une dimension, souvent appelé *vecteur*, est la forme la plus simple de tableau. Il s'apparente à une liste linéaire d'éléments. ### 2.1 Déclaration et Initialisation La déclaration d'un tableau spécifie son nom, le type de ses éléments et sa taille (le nombre maximal d'éléments qu'il peut contenir). > [!example] Exemple de déclaration (pseudo-code) > ``` > tableau_entiers[10] DE type ENTIER // Un tableau de 10 entiers > noms[5] DE type CHAINE // Un tableau de 5 chaînes de caractères > ``` > > L'initialisation peut se faire lors de la déclaration ou après. > ``` > notes[3] DE type REEL = {15.5, 12.0, 18.0} > ``` ### 2.2 Accès aux Éléments Chaque élément d'un tableau est identifié par son *indice*. En général, l'indexation commence à 0 (convention courante dans de nombreux langages comme C, Java, Python). Pour un tableau de taille $N$, les indices vont de $0$ à $N-1$. > [!note] Remarque sur l'indexation > Si un tableau `T` a $N$ éléments, ses indices valides sont $0, 1, \dots, N-1$. Accéder à `T[N]` ou `T[-1]` (si non supporté) est une erreur d'accès hors bornes (*out-of-bounds access*) et peut provoquer un comportement indéfini. > [!example] Exemple d'accès (pseudo-code) > ``` > tab[5] DE type ENTIER = {10, 20, 30, 40, 50} > > AFFICHER tab[0] // Affiche 10 (le premier élément) > AFFICHER tab[2] // Affiche 30 (le troisième élément) > > tab[1] = 25 // Modifie le deuxième élément (20 devient 25) > ``` ## 3. Tableaux et Python En Python, la structure de données la plus proche d'un tableau dynamique est la **liste (`list`)**. Les listes Python sont très flexibles, peuvent contenir des éléments de types différents (bien que ce ne soit pas la meilleure pratique pour des raisons de performance) et leur taille est dynamique. Pour des tableaux numériques optimisés et de grande taille, la bibliothèque **NumPy** offre le type `ndarray`, qui se rapproche davantage des tableaux statiques contigus en mémoire et est très utilisé en calcul scientifique. ## 4. Résumé Les tableaux sont des structures de données essentielles pour stocker des collections ordonnées d'éléments de même type. Ils sont caractérisés par : * Un nom unique. * Un type d'éléments homogène. * Une taille (fixe pour les tableaux statiques). * Un accès aux éléments via un indice (généralement à partir de 0). ## 🗓️ Historique > **Dernière mise à jour :** `26 octobre 2025` > **Rédigé par :** [[Julien DUQUENNOY]]