C - Tableaux de Structures
Salut les futurs programmeurs ! Aujourd'hui, nous allons entreprendre un voyage passionnant dans le monde de la programmation C, en explorant les Tableaux de Structures. Ne vous inquiétez pas si vous êtes nouveau dans la programmation ; je vais vous guider à chaque étape avec la même patience et enthousiasme que j'utilise dans mes salles de classe depuis des années. Mettons-nous à l'eau !
Quelles sont les Structures et les Tableaux ?
Avant de plonger dans les tableaux de structures, récapitulons rapidement ce que sont les structures et les tableaux individuellement.
Structures
Une structure en C est comme un conteneur qui peut contenir différents types de données. Imaginez un sac à dos où vous pouvez stocker divers articles - c'est votre structure ! Par exemple :
struct Student {
char name[50];
int age;
float gpa;
};
Ici, notre structure Student
peut contenir un nom, un âge et un GPA. Pas mal, n'est-ce pas ?
Tableaux
Un tableau, d'autre part, est une collection d'items du même type. Pensez-y comme une ligne d'armoires identiques, chacune contenant le même type d'item. Par exemple :
int numbers[5] = {1, 2, 3, 4, 5};
Ce tableau nommé numbers
peut contenir 5 entiers.
Maintenant, que se passe-t-il si nous combinons ces deux concepts ? C'est là que la magie opère !
Tableaux de Structures
Un tableau de structures est exactement ce à quoi il ressemble - un tableau où chaque élément est une structure. C'est comme avoir une classe pleine d'étudiants, chacun avec leur propre ensemble de caractéristiques.
Explorons comment travailler avec ces constructions puissantes !
Déclarer un Tableau de Structures
Pour déclarer un tableau de structures, nous définissons d'abord notre structure, puis créons un tableau de ce type de structure. Voici comment cela looks :
struct Student {
char name[50];
int age;
float gpa;
};
struct Student class[30];
Dans cet exemple, nous avons créé un tableau appelé class
qui peut contenir des informations pour 30 étudiants. C'est comme avoir 30 cartes d'étudiant, chacune contenant un nom, un âge et un GPA.
Initialiser un Tableau de Structures
Maintenant que nous avons déclaré notre tableau, occupons-nous de le remplir avec des données. Nous pouvons le faire de deux manières :
- Initialiser lors de la déclaration :
struct Student class[3] = {
{"Alice", 20, 3.8},
{"Bob", 22, 3.5},
{"Charlie", 21, 3.9}
};
- Initialiser après la déclaration :
strcpy(class[0].name, "Alice");
class[0].age = 20;
class[0].gpa = 3.8;
strcpy(class[1].name, "Bob");
class[1].age = 22;
class[1].gpa = 3.5;
// ... et ainsi de suite
Souvenez-vous, lorsque vous travaillez avec des chaînes en C, nous utilisons strcpy
pour assigner des valeurs aux tableaux de char.
Lire un Tableau de Structures
Lecture d'un tableau de structures est simple. Nous pouvons accéder aux éléments individuels en utilisant l'indexage du tableau et la notation pointée pour les membres de la structure :
printf("Nom de l'étudiant : %s\n", class[0].name);
printf("Âge de l'étudiant : %d\n", class[0].age);
printf("GPA de l'étudiant : %.2f\n", class[0].gpa);
Nous pouvons également utiliser des boucles pour lire через tout le tableau :
for (int i = 0; i < 3; i++) {
printf("Étudiant %d :\n", i+1);
printf("Nom : %s\n", class[i].name);
printf("Âge : %d\n", class[i].age);
printf("GPA : %.2f\n\n", class[i].gpa);
}
Ce code affichera les informations pour les trois étudiants de notre tableau class
.
Trier un Tableau de Structures
Trier un tableau de structures est un peu plus complexe, mais ne vous inquiétez pas - nous allons le décomposer étape par étape. Supposons que nous voulons trier nos étudiants par leur GPA en ordre décroissant :
#include <string.h>
void swap(struct Student *a, struct Student *b) {
struct Student temp = *a;
*a = *b;
*b = temp;
}
void sortByGPA(struct Student arr[], int n) {
for (int i = 0; i < n-1; i++) {
for (int j = 0; j < n-i-1; j++) {
if (arr[j].gpa < arr[j+1].gpa) {
swap(&arr[j], &arr[j+1]);
}
}
}
}
// Utilisation :
sortByGPA(class, 3);
Ce code utilise l'algorithme de tri bulle pour organiser nos étudiants en fonction de leurs GPAs. Après avoir appelé sortByGPA
, le tableau class
sera trié avec le GPA le plus élevé en premier.
Déclarer un Pointeur vers un Tableau de Structures
Les pointeurs sont des outils puissants en C, et nous pouvons les utiliser avec nos tableaux de structures également. Voici comment déclarer un pointeur vers notre tableau de structures :
struct Student *classPtr = class;
Maintenant, classPtr
pointe vers le premier élément de notre tableau class
. Nous pouvons utiliser ce pointeur pour accéder aux éléments :
printf("Nom du premier étudiant : %s\n", classPtr->name);
printf("Âge du second étudiant : %d\n", (classPtr+1)->age);
Notez l'utilisation de l'opérateur flèche (->
) lorsque nous travaillons avec des pointeurs vers des structures.
Conclusion
Félicitations ! Vous venez de faire un grand pas dans votre voyage de programmation C. Les tableaux de structures sont incroyablement utiles dans des scénarios de programmation du monde réel. Imaginez gérer une base de données d'école, organiser un catalogue de bibliothèque ou suivre l'inventaire dans un magasin - toutes ces tâches deviennent beaucoup plus faciles avec des tableaux de structures.
Souvenez-vous, la pratique rend parfait. Essayez de créer vos propres tableaux de structures, remplissez-les de données, triez-les et expérimentez avec différentes manières de manipuler les données. Avant de savoir dire, vous serez structurant votre code comme un pro !
Bonne programmation, et puissent vos tableaux toujours être correctement indexés !
Credits: Image by storyset