|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Langage C - Les tableauxType de données complexesLes variables, telles que nous les avons vues, ne permettent de stocker qu'une seule donnée à la fois. Or, pour de nombreuses données, comme cela est souvent le cas, des variables distinctes seraient beaucoup trop lourdes à gérer. Heureusement, le langage C propose des structures de données permettant de stocker l'ensemble de ces données dans une « variable commune ». Ainsi, pour accéder à ces valeurs il suffit de parcourir la variable de type complexe composée de « variables » de type simple. Le langage C propose deux types de structures :
La notion de tableauOn appelle tableau une variable composée de données de même type, stockée de manière contiguë en mémoire (les unes à la suite des autres). Un tableau est donc une suite de cases (espace mémoire) de même taille. La taille
de chacune des cases est conditionnée par le type de donnée que le tableau contient.
Voici donc une manière de représenter un tableau :
Les tableaux unidimensionnelsDéclarationUn tableau unidimensionnel est un tableau qui contient des éléments simples
(des éléments qui ne sont pas des tableaux). Un tableau unidimensionnel est
donc une suite de « cases » de même taille contenant des éléments
d'un type donné (de la longueur de la case en quelque sorte).
En langage C, la syntaxe de la définition d'un tableau unidimensionnel est la suivante : type Nom_du_tableau [Nombre d'éléments]
Voici par exemple la définition d'un tableau qui doit contenir 8 éléments de type char : char Tableau [8] Calcul de la taille du tableauEtant donné qu'un tableau est composé d'un nombre fixé d'éléments d'un type donné, la taille d'un tableau est déterminée dès sa définition. Pour connaître la taille d'un tableau, c'est-à-dire déterminer le nombre d'octets que celui-ci occupe en mémoire, il y a deux possibilités :
Voici différents exemples de tableaux, et leurs tailles respectives :
Accéder aux élémentsPour accéder à un élément du tableau, le nom que l'on a donné à celui-ci ne suffit pas car il comporte plusieurs éléments. Ainsi, on définit un nombre appelé indice (en anglais index) qui, combiné avec le nom du tableau, permet de décrire exactement chaque élément. Pour accéder à un élément du tableau, il suffit donc de donner le nom du tableau, suivi de l'indice de l'élément entre crochets : Nom_du_tableau[indice]
Nom_du_tableau[4] Manipuler les élémentsUn élément du tableau (repéré par le nom du tableau et son indice) peut être manipulé exactement comme une variable, on peut donc effectuer des opérations avec (ou sur) des éléments de tableau. Définissons un tableau de 10 entiers : int Toto[10]; Pour affecter la valeur 6 au huitième élément on écrira : Toto[7] = 6; Pour affecter au 10ème élément le résultat de l'addition des éléments 1 et 2, on écrira : Toto[9] = Toto[0] + Toto[1]; Initialiser les élémentsLorsque l'on définit un tableau, les valeurs des éléments qu'il contient
ne sont pas définies, il faut donc les initialiser, c'est-à-dire leur affecter une valeur.
Toto[0] = Toto[1] = Toto[2] = 0; L'intérêt de l'utilisation d'un tableau est alors bien maigre... Une manière plus élégante consiste à utiliser le fait que pour passer d'un élément du tableau à l'élément suivant il suffit d'incrémenter son indice. Il est donc possible d'utiliser une boucle qui va permettre d'initialiser successivement chacun des éléments grâce à un compteur qui servira d'indice : int Toto[10]; int Indice; for (Indice = 0; Indice <= 9; Indice++) { Toto[Indice] = 0; } Cette méthode, aussi utile soit elle, n'a d'intérêt que lorsque les éléments du tableau doivent être initialisés à une valeur unique ou une valeur logique (proportionnelle à l'indice par exemple). Pour initialiser un tableau avec des valeurs spécifiques, il est possible d'initialiser le tableau à la définition en plaçant entre accolades les valeurs, séparées par des virgules : int Toto[10] = {1, 2, 6, 5, 2, 1, 9, 8, 1, 5};
int Toto[10] = {0}; Il est conseillé d'employer le plus possible des constantes dans vos programmes, notamment pour la taille des tableaux. Le code ci-dessus peut s'écrire ainsi : #define NB_ELEMENT_TOTO 10 int Toto[NB_ELEMENT_TOTO]; int Indice; for (Indice = 0; Indice < NB_ELEMENT_TOTO; Indice++) { Toto[Indice] = 0; } Voici les avantages liés à l'utilisation de constantes :
Les tableaux multidimensionnelsLes tableaux multidimensionnels sont des tableaux qui contiennent des tableaux. Par exemple le tableau bidimensionnel (3 lignes, 4 colonnes) suivant, est en fait un tableau comportant 3 éléments, chacun d'entre eux étant un tableau de 4 éléments :
DéfinitionUn tableau multidimensionnel se définit de la manière suivante : type Nom_du_tableau [a1][a2][a3] ... [aN]
Un tableau d'entiers positifs à deux dimensions (3 lignes, 4 colonnes) se définira avec la syntaxe suivante : int Tableau [3][4] On peut représenter un tel tableau de la manière suivante :
Il va de soi que cette représentation est arbitraire, car elle suppose que le premier
indice est l'indice de ligne, et le second est l'indice de colonne.
On utilise toutefois généralement la première représentation, car elle correspond mieux à la façon selon laquelle le tableau est stocké en mémoire. Initialiser les élémentsL'initialisation d'un tableau multidimensionnel se fait à peu près de la même façon que pour les tableaux unidimensionnels. Il y a donc plusieurs façons d'initialiser un tableau multidimensionnel :
Discussions pertinentes trouvées dans le forum
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||