Vous êtes sur la page 1sur 27

ATELIER DE PROGRAMMATION 1

CHAPITRE 5: TABLEAUX

Préparé par: Dr. L. Ketari

Année Académique 2019 / 2020


Semestre I
PLAN
Introduction
Tableaux Unidimensionnels
Tableaux à Plusieurs Dimensions

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

10.25 14.75 18.5 8.75

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É

Déclaration et manipulation d’un tableau


de 5 entiers
• int tab [5] = {100, 200, 300, 400, 500};
• int taille_Tab = sizeof(int) * 5; // Tab occupe 10
// octets en mémoire

Tab ~ &Tab[0] Tab


Tab[0] Tab[1] Tab[2] Tab[3] Tab[4]
… 100 200 300 400 500 …

Adresses : … 1E06 1E08 1E0A 1E0C 1E0E 1E10 …

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

Application-1 : Écrire un programme C qui


permet à l’utilisateur de:
• Déclarer et saisir à partir du clavier un tableau
de 10 entiers (en utilisant la boucle for).
• Afficher tous les éléments du tableau.
• Calculer et afficher la somme de tous les
éléments du tableau.

14
EXERCICES

Application-2 : Écrire un programme C qui


permet à l’utilisateur de:
• Déclarer et saisir à partir du clavier un tableau
de 10 entiers (en utilisant la boucle for).
• Inverser les éléments du tableau, puis les
afficher.

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}} ;

• N désigne le nombre de ligne du tableau et P


désigne le numéro de colonnes du tableau.
• ValN1_1: Indice du premier élément du
tableau.
• ValN_P: Indice du dernier élément du tableau.
• ValN1_1, ValN1_2, … ValN1_P: indices
utilisés pour remplir la première ligne du
tableau.
20
INITIALISATION

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}}

Soit: int C [4][2] = {{1,2}}


C [4][2] = {{1,2,3}} → erreur!!
21
ACCÈS AUX ÉLÉMENTS

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É

Déclaration et manipulation d’un tableau


bidimensionnels de 3 lignes et deux colonnes
float NOTES [3] [2] = = {{10.25, 14.0}, {16.75, 12.5},
{11.5, 13.75}};
int taille_Notes = sizeof(float) * 3 * 2; // NOTES occupe
// 24 octets en
// mémoire
NOTES [0] [0]
#define L 3
10.25 14.0 NOTES [0] [1]
#define C 2
NOTES [1] [0] 16.75 12.5 NOTES [1] [1]
NOTES [2] [0] 11.5 13.75 NOTES [2] [1] int MATRICE [L] [C];
// Initialisation
NOTES for (i = 0; i < L; i++)
STOKAGE EN MÉMOIRE for (j = 0; j < C; j++)
tab[i] [j] = 10;
… 10.25 14.0 16.75 12.5 11.5 13.75 …
23
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

Vous aimerez peut-être aussi