Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
CHAPITRE 5: TABLEAUX
2
INTRODUCTION
Définition
• Un tableau est un ensemble fini d’éléments, de
même type, stockés en mémoire à des adresses
contiguës.
• Les éléments du tableaux peuvent être de type
simple (int, char, double..) ou de type composé
(structure).
10 20 30 40 50 60 70
3
INTRODUCTION
Chaîne de caractères
• Une chaîne de caractères est un tableau (mono-
dimenstionnel) de caractères.
• Une chaîne de caractères se termine toujours
par le caractère '\0' (NUL, code ASCII 0), appelé
caractère de fin de chaîne.
• Une chaîne composée de n caractères,
nécessite un tableau de n+1 éléments (case
supplémentaire pour le caractère '\0'). L’espace
réservé en mémoire sera de n+1 octets.
MESSAGE
MESSAGE [2]
char MESSAGE [8] = "Bonjour "; … 'B' 'o' 'n' 'j' 'o' 'u' 'r' '\0' …
Adresses : … 1E04 1E05 1E06 1E07 1E08 1E09 1E0A 1E0B 1E0C
4
TABLEAUX UNIDMENSIONNELS
DÉCLARATION
Syntaxe
• Type nom_tableau [dimension];
o Type : Désigne le type des éléments du tableau et
définit la taille d’une case du tableau en mémoire.
Tous les éléments doivent être de même type.
o Nom_tableau : Nom de variable (Identificateur)
pour nommer le tableau. Le nom du tableau est
l’adresse de son premier élément (pointeur sur le
premier élément).
o Dimension : Expression constante entière
positive correspondant au nombre maximal
d’éléments dans le tableau.
o Taille du tableau (octets) = dimension*taille(type)
6
DÉCLARATION
Exemples
int tab [10]; // Déclaration d’un tab. de 10 entiers
char chaine [7]; // Déclaration d’un tab. de 7
// caractères
float notes [5]; // Déclaration d’un tableau de 5 réels
Quelques Règles
• Les éléments d’un tableau peuvent être de tous
types (types primitifs, tableaux ou structures).
• La taille d’un tableau doit être connue
statiquement par le compilateur (une constante).
• Le premier élément du tableau a pour indice
0. Les indices allant de 0 à dimension – 1.
7
INITIALISATION
Synatxe
• Type nom_tableau [N] = {val1, val2, .. valN}};
o N désigne la taille réelle du tableau.
o La taille réservée pour ce tableau est
N*sizeof(Type).
o Le tableau peut contenir des cases remplies
et des cases vides.
Le nombre de case remplies désigne la
taille effective du tableau.
En langage C, on peut initialiser le tableau
au moment de sa déclaration.
8
INITIALISATION
Exemples
int tab [10] = {0, 10, 20, 30, 40, 50, 60, 70};
char chaine [8] = {’B’, ’o’, ’n’, ’j’, ’o’, ’u’, ’r’};
float notes [5] = {10.25, 17.5, 14.0, 12.75, 16.0};
int vecteur [] = {0, 1, 2, 3, 4, 5}; // La taille réservée
// sera 6 * sizeof(int)
Remarques importantes
• Si le nombre d’éléments du tableaux
dépassent la taille indiquée, une erreur sera
générée.
• Si le tableau est de taille n, les instruction
tab[n], tab[n+1] génèrent une erreur.
9
ACCÈS AUX ÉLÉMENTS
Syntaxe
• nom_tableau [num_case]
o On accède à un élément du tableau en lui
appliquant l’opérateur [ ].
Exemple
• Soit un tableau T de dimension N :
T[0] : Accès au premier élément du tableau.
T[N-1] : Accès au dernier élément du tableau.
T[i] : Accès à l’élément à la position i du tableau
Avec: i = 0..N-1
10
AFFECTATION D’UNE VALEUR À
UNE CASE DU TABLEAU
Syntaxe
• nom_tableau [num_case] = valeur;
Exemple
• Soit un tableau T de dimension N :
tab[0] = 10; // Initialisation du premier élément du
// tableau
• tab[3] = 0; // Initialisation du 4ième élément du
// tableau
• tab[N-1] = 0; // Initialisation du dernier élément du
// tableau 11
RÉSUMÉ
12
RÉSUMÉ
Remplissage du tableau
#define MAX 5
int tab [MAX];
.....
// Méthode-1
int tab [MAX] = {10, 10, 10, 10, 10};
// Méthode-2
tab[0] = tab[1] = tab[2] = tab[3] = tab[4] = 10;
// Méthode-3
for (i = 0; i < MAX; i++)
tab[i] = 10; 13
EXERCICES
14
EXERCICES
15
TABLEAUX MULTIDMENSIONNELS
INTRODUCTION
Définition
• Les tableaux multidimensionnels, et en
particuliers ceux à deux dimensions, sont des
extensions des tableaux monodimensionnels.
Ils servent à représenter des objets
mathématiques plus complexes comme les
matrices.
• Les tableaux multidimensionnels sont des
tableaux qui contiennent des tableaux. Ils sont
stockés en mémoire comme des tableaux
unidimensionnels (ligne par ligne).
17
DÉCLARATION
Syntaxe
• Type nom_tableau [L] [C];
o Type: Désigne le type des éléments du
tableau à deux dimensions.
o nom_tableau est un identificateur qui sert à
nommer le tableau. Il représente l’adresse du
premier élément du tableau.
o Les éléments d’un tableau à deux dimensions
sont stockés ligne par ligne dans la mémoire.
o L est le nombre de lignes et C est le nombre
de colonnes.
o Taille du tableau (octets) = L*C*taille(type)
18
DÉCLARATION
Exemples
int tab [3] [3];
char chaine [7] [5];
float notes [5] [30];
Quelques Règles
• Les éléments d’un tableau peuvent être de
tous types (types primitifs, tableaux ou
structures).
• La taille d’un tableau doit être connue
statiquement par le compilateur (autrement dit,
L et C doivent être des constantes).
19
INITIALISATION
Syntaxe
• type nom_tableau[N][P] = { {valN1_1, valN1_2,
..., valN1_P}, {valN2_1, valN2_2, ..., valN2_P}
..., {valN_1, valN_2, ..., valN_P}} ;
Exemples
// Allocation et initialisation de 2 tableaux de 4 entiers
int tab [2] [4] = {{10, 10, 10, 10}, {20, 20, 20, 20}};
// Allocation et initialisation de 5 tableaux d
// caractères
char chaine [5] [3] = = {{'a', 'b', 'c'}, {'d', 'e', 'f'}, {'g',
'h', 'i'}, {'j', 'k', 'l'}, {'m', 'n', 'o'}};
// Allocation et initialisation de 3 tableaux de 3 entiers
int A[ ][3] = {{1, 2, 3}, {10, 20, 30}, {100, 200, 300}}
Syntaxe
• nom_tableau[indice_1][indice_2]
o On accède à un élément du tableau en lui
appliquant l’opérateur [] [].
o indice_1 indique le numéro de la ligne et
indice_2 indique le numéro de colonne.
o Exemples
- compteur[2][4] = 5;
- nombre[i][j] = 6.789;
- printf("%d",compteur[i][j]);
- scanf("%f",&nombre[i][j]);
22
RÉSUMÉ
Remplissage du tableau
#define L 3
#define C 2
int notes[L] [C];
……
// Méthode-1
int notes [L] [C] = {{10.25, 14.0}, {16.75, 12.5},
{11.5, 13.75}};
// Méthode-2
tab [0] [0] = tab [0] [1] = tab [1] [0] = tab [1] [1] =
tab [2] [0] = tab [2] [1] = 10;
24
RÉSUMÉ
Remplissage du tableau
#define L 3
#define C 2
int notes[L] [C];
……
// Méthode-3
for (i = 0; i < L; i++)
for (j = 0; j < C; j++)
tab[i] [j] = 10;
25
EXERCICES
Applications
1. Écrire un programme C qui permet de remplir
un tableau de taille maximale 50*50.
2. Écrire un programme C qui permet de
sommer les lignes et les colonnes d’un
tableau à deux dimensions.
3. Écrire un programme C qui permet de rendre
un tableau à deux dimensions en un tableau
à une dimension.
26
Merci!
Questions ?
27