Langage C
Langage C
Langage C
Il arrive en C qu'on est besoin, un moment ou un autre, de stocker des valeurs dans ce qu'on
appelle une table de donne (ou encore plus simplement : tableau). Le langage C permet cela
voyons
maintenant
comment
dclarer
un
tableau.
Il existe deux types de tableaux :
Les tableaux Statiques : ce sont des tableaux dont la taille est connue la compilation
Les tableaux Dynamiques : ce sont des tableaux dont la taille n'est connue qu' l'excution.
Pour le moment nous ne verrons que les tableaux statiques, nous aborderons les tableaux
dynamiques lorsque nous parlerons de la gestion de la mmoire ou encore d'allocation dynamique.
Type nomDuTableau[nombreDElements];
Exemple :
Code c:
int tableau[4];
On dclare ici un tableau de type int contenant 4 valeurs de type int. "[4]" reprsente le nombre de
cases du tableau, on aura donc ici un tableau de type int de 4 cases, ces cases tant remplies de
donnes
de
type
int uniquement .
De plus la taille du tableau doit tre connue la compilation, et on vitera par dessus tout de
dfinir sa taille partir d'une variable. Ainsi :
Code c:
int variable = 4;
int tableau[variable];
N'est
valable
qu'en
C99.
Utiliser un tableau
Maintenant que notre tableau est cr, il va falloir le remplir de valeurs. Pour initialiser toutes les
cases du tableau 0 on peut utiliser la mthode qui suit :
Code c:
On
initialise
ici
toutes
les
cases
du
tableau
zro.
Code c:
Chaque case du tableau (ici 4) est donc initialise une valeur de type int donne. Ici tableau[0]
vaudra 2; tableau[1] vaudra 23; etc.
Il faut savoir que si on indique pas toutes les valeurs du tableau, alors les valeurs non dfinies
prendrons
la
valeur
0.
Par exemple :
Code c:
Vous voyez ici qu'on indique plus le nombre de cases du tableau, en fait le compilateur se chargera
pour
nous
de
calculer
la
taille
du
tableau.
Maintenant que notre tableau est rempli, il peut tre intressant d'exploiter les valeurs qui lui sont
rattaches.
il faut savoir que la premire valeur se situe dans la case 0 du tableau et non dans la case 1. Ce qui
peut porter confusion car on serait tent de rcuprer la valeur situer dans tableau[4] mais si on
fait cela, on essaye de d'accder une case en mmoire qui n'est pas accorde au tableau et trs
certainement pas non plus notre programme (ce qui le dont d'nerver particulirement votre OS
qui vous le signalera par sa belle fentre d'erreur prvue cet effet
), soyez vigilant donc et
n'oubliez pas que la dernire valeur de votre tableau se situe dans la case tailleTableau - 1 donc
Ce
qui
nous
donne
aprs
compilation
Code console:
Valeur de tableau[0] = 2
Valeur de tableau[1] = 23
Valeur de tableau[2] = 25
Valeur de tableau[3] = 92
Pour rsumer ce paragraphe je vous propose de concevoir ensemble un programme qui calcul la
moyenne de toutes les valeurs de notre tableau.
Code c:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i = 0;
double tableau[4] = {2.0, 16.5, 58.56, 19.92};
/* On initialise notre tableau avec 4 valeurs de type double
*/
double moyenne = 0.0;
double sommeTotale = 0.0;
for (i = 0; i < 4; i++) {
printf("Valeur de tableau[%d] = %lf\n", i, tableau[i]);
sommeTotale += tableau[i]; // Revient crire
sommeTotale = sommeTotale + tableau[i]
/* On affiche les valeurs contenues dans le tableau et on
les additionne la variable sommeTotale */
}
moyenne = sommeTotale / 4;
return 0;
Ce
qui
nous
donne
Code console:
#include <stdio.h>
#include <stdlib.h>
void afficherTableau(int tableau[]);
int main(void)
{
int tableau[4] = {2, 23, 25, 92};
afficherTableau(tableau);
}
return 0;
Ce
qui
nous
donne
Code console:
Tableau[0] = 2
Tableau[1] = 23
Tableau[2] = 25
Tableau[3] = 92
On suppose ici qu'on connait la taille du tableau car sinon il vous faudra aussi envoyer la taille de
celui
ci
pour
viter
les
erreurs
Faites attention donc ce que la lecture et l'criture des donnes d'un tableau soit dans les limites
de
celui-ci
!
Il est aussi possible d'envoyer un tableau une fonction de cette manire :
Code c:
return 0;
Vous voyez ici qu'on a simplement remplacer les crochet par une toile symbolisant un pointeur, c'est
autoris car un tableau est considr comme un pointeur. Vous pouvez accder aux lments du
tableau
de
la
mme
manire
en
respectant
les
limites
de
celui-ci.
Entrainez vous raliser de petits programmes envoyant des tableaux des fonctions, c'est le
meilleur
moyen
de
progresser
Deux dimensions signifient qu'on a deux entres dans notre tableau. Ainsi voil quoi ressemblerait
un
tableau
de
2
cases
sur
2
:
Ainsi la valeur 10 se trouve dans la colonne 1 la ligne 1 et la valeur 15 dans la colonne 2 la ligne
1.
En C, on commence d'abord par la colonne puis par la ligne, de plus la premires colonnes se situ
aussi la case 0 et non 1, ainsi on dira la valeur 10 est dans la colonne 0 la ligne 0.
Voici donc comment dclarer notre tableau de 2 colonnes sur 2 lignes en C :
Code c:
int tableau[2][2];
Maintenant nous allons initialise notre tableau avec les valeurs ci-dessus, en commenant donc par
remplir chaque colonne une par une.
Code c:
On dlimite ici chaque colonne par des accolades, ce n'est pas obligatoire mais a permet de
clairement voir ce que l'on fait sans tre embrouill avec les diffrentes valeurs. On commence donc
par la colonne 0 et on rempli chaque ligne de cette colonne, dans l'ordre jusqu' ce qu'elle soit
pleine,
ensuite
on
passe
la
colonne
suivante.
Voyons
comment
utiliser
nos
tableaux
dans
des
fonctions.
#include <stdio.h>
#include <stdlib.h>
void afficherTableau(int tableau[2][2]);
int main(void)
{
Maintenant si on souhaite rcuprer les valeurs du tableau (pour les afficher par exemple, deux
boucles for suffisent :
Code c:
#include <stdio.h>
#include <stdlib.h>
void afficherTableau(int tableau[2][2]);
int main(void)
{
int tableau[2][2] = {{10, 20} , {15, 35}};
afficherTableau(tableau);
return EXIT_SUCCESS; /* Equivalent return 0 sous Windows,
permet un code portable */
}
void afficherTableau(int tableau[2][2])
{
int i = 0;
int j = 0;
for (i = 0; i < 2; i++) {
for(j = 0; j < 2; j++) {
printf("Tableau[%d][%d] = %d\n", i, j, tableau[i][j]);
}
}
}
En oubliant pas qu'on lis les valeurs colonnes par colonnes et non pas lignes par lignes ! Ici ce code
nous
affiche
donc
:
Code console:
Tableau[0][0] = 10
Tableau[0][1] = 20
Tableau[1][0] = 15
Tableau[1][1] = 35
Voil vous savez l'essentiel savoir sur les tableaux. Si vous avez la moindre question n'hsitez pas
la poser sur le forum. Dans le prochain tutoriel nous verrons les types avances du langage C :
structures, typedef, unions et numrations.
Nettoyage P