Les tableaux en programmation
Les tableaux sont conçus pour stocker plusieurs valeurs ensemble.
Qu'est-ce qu'un tableau ?
Un tableau est une collection de valeurs.
L'image ci-dessous montre comment nous pouvons penser à un tableau nommé myFruits, avec les valeurs 'banana', 'apple' et 'orange' stockées à l'intérieur.
Chaque valeur dans un tableau a une position, appelée index, qui commence à 0.
Vous trouverez ci-dessous comment le tableau myFruits est créé, à l'aide du code Python :
La première valeur 'banana' est positionnée à l'index 0 dans le tableau.
Que puis-je faire avec un tableau ?
Les tableaux facilitent le travail avec des groupes de valeurs par rapport à l'utilisation d'une variable distincte pour chaque valeur.
Donc au lieu de créer 3 variables :
fruit1 = 'banana'
fruit2 = 'apple'
fruit3 = 'orange'
Nous pouvons simplement créer un tableau :
myFruits = ['banana','apple','orange']
Avec un tableau, vous pouvez :
- Stocker une collection de nombres, de mots ou d'objets.
- Accéder à n'importe quelle valeur grâce à son index (position).
- Lire, mettre à jour, insérer ou supprimer n'importe quelle valeur du tableau.
Découvrez comment un tableau peut être créé et utilisé dans les sections ci-dessous.
Création d'un tableau
Lors de la création d'un tableau, nous devons spécifier le nom du tableau et les valeurs qu'il contient.
Voici comment le tableau myFruits peut être créé à l'aide de différents langages de programmation :
Python:
myFruits = ['banana','apple','orange']
JavaScript:
const myFruits = ['banana','apple','orange'];
Java:
String[] myFruits = {"banana","apple","orange"};
C++:
string myFruits[] = {"banana","apple","orange"};
Run Example »
Dans le code Python ci-dessus :
myFruitsest le nom du tableau.- Le signe égal
=stocke les valeurs du côté droit du tableau. - Les crochets
[ ]signifient que nous créons un tableau. 'banane','pomme','orange'sont les valeurs du tableau, séparées par une virgule.
Remarque : lors de la création d'un tableau dans des langages de programmation tels que C/C++ et Java, le type de données des valeurs à l'intérieur du tableau doit être indiqué.
Opérations sur les tableaux
Les tableaux peuvent être lus et manipulés de différentes manières. Voici quelques opérations courantes que vous pouvez effectuer avec un tableau :
| Opération | Description |
|---|---|
| read | Lire une valeur à partir d'un index dans le tableau. |
| update | Met à jour la valeur existante à une position d'index de tableau. |
| insert | Insérer une nouvelle valeur dans le tableau, en plus des valeurs existantes. |
| remove | Supprime une valeur du tableau à une position d'index donnée. |
| length | Indique le nombre de valeurs du tableau. Ce nombre correspond à la longueur du tableau. |
| loop | Visitez chaque valeur du tableau, en utilisant une boucle. |
Accédez aux sections ci-dessous pour voir à quoi ressemble le code de ces opérations de tableau dans différents langages de programmation.
Lecture d'une valeur de tableau
Pour lire une valeur de tableau, nous utilisons le nom du tableau avec l'index de la valeur que nous voulons lire entre parenthèses, comme ceci myFruits[0].
Result: '{{ result }}'
Nous devons également utiliser une commande pour écrire myFruits[0] dans la console/terminal, afin que nous puissions réellement voir le résultat, et cela se fait un peu différemment selon le langage de programmation.
Python:
myFruits = ['banana','apple','orange']
print(myFruits[0])
JavaScript:
const myFruits = ['banana','apple','orange'];
console.log(myFruits[0]);
Java:
String[] myFruits = {"banana","apple","orange"};
System.out.println(myFruits[0]);
C++:
string myFruits[] = {"banana","apple","orange"};
cout << myFruits[0];
Run Example »
Mise à jour d'une valeur de tableau
Pour mettre à jour une valeur dans un tableau, nous utilisons le nom du tableau avec la position d'index de la valeur que nous voulons mettre à jour, comme ceci myFruits[0], puis nous utilisons le signe égal = pour y stocker une nouvelle valeur.
Voici comment la mise à jour d'une valeur de tableau à l'index 0 peut être effectuée dans différents langages de programmation :
Python:
myFruits = ['banana','apple','orange']
myFruits[0] = 'kiwi'
JavaScript:
const myFruits = ['banana','apple','orange'];
myFruits[0] = 'kiwi';
Java:
String[] myFruits = {"banana","apple","orange"};
myFruits[0] = "kiwi";
C++:
string myFruits[] = {"banana","apple","orange"};
myFruits[0] = "kiwi";
Run Example »
Insertion d'une valeur de tableau
Pour insérer une valeur dans un tableau, en plus des valeurs existantes, nous avons besoin de :
- le nom du tableau
- une commande pour effectuer l'opération d'insertion
- la valeur à insérer
Lorsque nous insérons de cette manière, la nouvelle valeur est insérée à la fin du tableau.
La commande permettant d'insérer une valeur dans un tableau varie légèrement selon les langages de programmation.
Python:
myFruits = ['banana','apple','orange']
myFruits.append('kiwi')
JavaScript:
const myFruits = ['banana','apple','orange'];
myFruits.push('kiwi');
Java:
ArrayList<String> myFruits = new ArrayList<String>();
myFruits.add("banana");
myFruits.add("apple");
myFruits.add("orange");
myFruits.add("kiwi");
C++:
vector<string> myFruits = {"banana", "apple", "orange"};
myFruits.push_back("kiwi");
Run Example »
Un tableau dynamique est un tableau dont la taille peut varier, comme c'est le cas pour les opérations d'insertion et de suppression. Dans ce cas, nous utilisons ArrayList en Java et vector en C++.
Une valeur peut également être ajoutée à une position spécifique dans un tableau, en utilisant l'index, comme ceci :
Python:
myFruits = ['banana','apple','orange']
myFruits.insert(1,'kiwi')
JavaScript:
const myFruits = ['banana','apple','orange'];
myFruits.splice(1,0,'kiwi');
Java:
ArrayList<String> myFruits = new ArrayList<String>();
myFruits.add("banana");
myFruits.add("apple");
myFruits.add("orange");
myFruits.add(1,"kiwi");
C++:
vector<string> myFruits = {"banana", "apple", "orange"};
myFruits.insert(myFruits.begin() + 1, "kiwi");
Run Example »
Suppression d'une valeur de tableau
Une valeur de tableau est supprimée en spécifiant l'index à partir duquel la valeur doit être supprimée.
Voici comment une valeur de tableau placée à l'index 1 peut être supprimée dans différents langages de programmation :
Python:
myFruits = ['banana','apple','orange']
myFruits.pop(1)
JavaScript:
const myFruits = ['banana','apple','orange'];
myFruits.splice(1,1);
Java:
ArrayList<String> myFruits = new ArrayList<String>();
myFruits.add("banana");
myFruits.add("apple");
myFruits.add("orange");
myFruits.remove(1);
C++:
vector<string> myFruits = {"banana", "apple", "orange"};
myFruits.erase(myFruits.begin() + 1);
Run Example »
Une valeur peut également être supprimée de la fin d'un tableau, sans utiliser l'index (sauf pour Java), comme ceci :
Python:
myFruits = ['banana','apple','orange']
myFruits.pop()
JavaScript:
const myFruits = ['banana','apple','orange'];
myFruits.pop();
Java:
ArrayList<String> myFruits = new ArrayList<String>();
myFruits.add("banana");
myFruits.add("apple");
myFruits.add("orange");
myFruits.remove(myFruits.size()-1);
C++:
vector<string> myFruits = {"banana", "apple", "orange"};
myFruits.pop_back();
Run Example »
Trouver la longueur d'un tableau
Vous pouvez toujours vérifier la longueur d'un tableau :
Result: {{ result }}
Voici comment la longueur d'un tableau est trouvée dans différents langages de programmation :
Python:
myFruits = ['banana','apple','orange']
print(len(myFruits))
JavaScript:
const myFruits = ['banana','apple','orange'];
console.log(myFruits.length);
Java:
ArrayList<String> myFruits = new ArrayList<String>();
myFruits.add("banana");
myFruits.add("apple");
myFruits.add("orange");
System.out.println(myFruits.size());
C++:
vector<string> myFruits = {"banana", "apple", "orange"};
cout << myFruits.size();
Run Example »
Boucle à travers un tableau
Voir cette page pour une explication de ce qu'est une boucle.
Parcourir un tableau signifie examiner chaque valeur du tableau.
Voici comment nous pouvons parcourir le tableau myFruits en utilisant une boucle for, en imprimant chaque valeur :
Result:
Il existe plusieurs façons de parcourir un tableau, mais l'utilisation d'une boucle for est peut-être la méthode la plus simple et également prise en charge dans tous les langages de programmation, comme ceci :
Python:
myFruits = ['banana','apple','orange']
for fruit in myFruits:
print(fruit)
JavaScript:
const myFruits = ['banana','apple','orange'];
for (let fruit of myFruits) {
console.log(fruit);
}
Java:
String[] myFruits = {"banana", "apple", "orange"};
for (String fruit : myFruits) {
System.out.println(fruit);
}
C++:
string myFruits[] = {"banana", "apple", "orange"};
for (auto fruit : myFruits) {
cout << fruit + "\n";
}
Run Example »
Une autre façon de parcourir un tableau est d'utiliser une boucle for avec une variable de comptage pour les index, comme ceci :
Python:
myFruits = ['banana','apple','orange']
for i in range(len(myFruits)):
print(myFruits[i])
JavaScript:
const myFruits = ['banana','apple','orange'];
for (let i = 0; i < myFruits.length; i++) {
console.log(myFruits[i]);
}
Java:
String[] myFruits = {"banana", "apple", "orange"};
for (int i = 0; i < myFruits.length; i++) {
System.out.println(myFruits[i]);
}
C++:
string myFruits[] = {"banana", "apple", "orange"};
int size = sizeof(myFruits) / sizeof(myFruits[0]);
for (int i = 0; i < size; i++) {
cout << myFruits[i] + "\n";
}
Run Example »
Nous pouvons également effectuer une boucle sur des tableaux pour déterminer si « Bob » apparaît dans un tableau de noms, ou parcourir un tableau de courses, par exemple, pour trouver le montant total à payer.
Voici un exemple de boucle sur un tableau de noms à la recherche de « Bob ».
Python:
listOfNames = ['Jones','Jill','Lisa','Stan','Bob','Alice']
for i in range(len(listOfNames)):
print(listOfNames[i])
if listOfNames[i] == 'Bob':
print('Found Bob!')
break
JavaScript:
let listOfNames = ['Jones','Jill','Lisa','Stan','Bob','Alice'];
for (let i = 0; i < listOfNames.length; i++) {
console.log(listOfNames[i]);
if (listOfNames[i] === 'Bob') {
console.log('Found Bob!');
break;
}
}
Java:
String[] listOfNames = {"Jones", "Jill", "Lisa", "Stan", "Bob", "Alice"};
for (int i = 0; i < listOfNames.length; i++) {
System.out.println(listOfNames[i]);
if (listOfNames[i] == "Bob") {
System.out.println("Found Bob!");
break;
}
}
C++:
string listOfNames[] = {"Jones", "Jill", "Lisa", "Stan", "Bob", "Alice"};
int size = sizeof(listOfNames) / sizeof(listOfNames[0]);
for (int i = 0; i < size; i++) {
cout << listOfNames[i] + "\n";
if (listOfNames[i] == "Bob") {
cout << "Found Bob!\n";
break;
}
}
Run Example »
Dans le code ci-dessus, l'instruction break arrête la boucle une fois « Bob » trouvé. C'est pourquoi « Alice » n'est pas affiché.
Définition stricte d'un tableau
Les tableaux utilisés dans les langages modernes comme Python ou JavaScript sont flexibles : ils peuvent s'agrandir, se réduire et contenir différents types de valeurs. D'autres langages de programmation, comme C et Java, exigent une définition plus stricte des tableaux.
Une définition plus stricte d'un tableau signifie qu'en plus d'être une collection de valeurs, un tableau est également :
- longueur fixe
- même type de données pour toutes les valeurs
- stockées de manière contiguë en mémoire
Longueur fixe signifie que la longueur du tableau (le nombre de valeurs à l'intérieur du tableau) ne peut pas être modifiée.
En programmation C, par exemple, si vous créez un tableau de quatre valeurs, sa longueur (4) est fixe et ne peut être modifiée. Ainsi, si vous souhaitez insérer une cinquième valeur à la fin de votre tableau, vous devez créer un nouveau tableau de cinq valeurs, y insérer les quatre valeurs d'origine et placer la cinquième valeur à la dernière place du nouveau tableau, là où il y a désormais de la place.
Même type de données signifie que toutes les valeurs du tableau doivent être du même type, elles doivent donc toutes être des nombres entiers, par exemple, ou des nombres décimaux, ou des caractères, ou des chaînes, ou un autre type de données.
Le fait que le tableau soit stocké de manière contiguë en mémoire signifie que les valeurs sont stockées les unes à la suite des autres dans un bloc de mémoire, comme un groupe d'amis vivant côte à côte dans la même rue. Pour en savoir plus sur le stockage des tableaux en mémoire, cliquez ici.
L'utilisation de tableaux sous leur forme stricte donne à l'utilisateur un contrôle total sur la façon dont le programme s'exécute réellement, mais cela rend également difficile de faire certaines choses et est plus sujet aux erreurs.
Lorsqu'ils ont besoin de fonctionnalités de tableau plus flexibles/dynamiques dans des langages tels que C ou Java, les développeurs utilisent souvent des bibliothèques pour les aider à obtenir la fonctionnalité de tableau dynamique étendue qu'ils recherchent.
Dans les exemples de code de cette page, pour obtenir une longueur de tableau dynamique afin que nous puissions insérer et supprimer des valeurs, nous avons utilisé des listes Python, des tableaux JavaScript, des Java ArrayList et des vecteurs C++.
