Académique Documents
Professionnel Documents
Culture Documents
Un tableau (unidimensionnel) A est une variable structurée formée d'un nombre entier N de
variables simples du même type, qui sont appelées les composantes du tableau. Le nombre de
composantes N est alors la dimension du tableau.
1. Déclaration et mémorisation
Déclaration :
Déclaration de tableaux en C :
<TypeSimple> <NomTableau>[<Dimension>];
Exemples :
int notes [8] ; /* déclaration d’un tableau nommé notes, de type int et de dimension 8 */
char tab [100] ; /* déclaration d’un tableaux nommé tab, de type char et de dimension 100 */
float moy[40] ; /* déclaration d’un tableau nommé moy, de type float et de dimention 100 */
Mémorisation :
En C, le nom d'un tableau est le représentant de l'adresse du premier élément du tableau. Les
adresses des autres composantes sont calculées (automatiquement) relativement à cette
adresse.
Exemple:
M. El Kastouri 1
Cours Algorithme et programmation C Chapitre 5 : les tableaux
En supposant qu'une variable du type long occupe 4 octets (c.-à-d: sizeof(long)=4), pour
le tableau T déclaré par: long T[15]; réservera N*M = 15*4 = 60 octets en mémoire.
En déclarant un tableau par int A[5]; nous avons défini un tableau A avec cinq composantes,
auxquelles on peut accéder par: A[0], A[1], ... , A[4]
Exemple :
Remarque :
En C,
- l'accès au premier élément du tableau se fait par T[0]
M. El Kastouri 2
Cours Algorithme et programmation C Chapitre 5 : les tableaux
En langage algorithmique,
- l'accès au premier élément du tableau se fait par T[1]
4. Affichage et affectation
La structure for se prête particulièrement bien au travail avec les tableaux. La plupart des
applications se laissent implémenter par simple modification des exemples-types de
l'affichage et de l'affectation.
Exemples :
1. Affichage du contenu d'un tableau
int A[5];
int I; /* Compteur */
for (I=0; I<5; I++)
printf("%d ", A[I]);
Exercices :
1. Ecrire un programme qui lit la dimension N d'un tableau T du type int (dimension
maximale: 50 composantes), remplit le tableau par des valeurs entrées au clavier et affiche le
tableau. Calculer et afficher ensuite la somme des éléments du tableau.
2. Ecrire un programme qui lit la dimension N d'un tableau T du type int, remplit le tableau
par des valeurs entrées au clavier et affiche le tableau. Ranger ensuite les éléments du tableau
T dans l'ordre inverse sans utiliser de tableau d'aide. Afficher le tableau résultant.
1. Déclaration et mémorisation
déclaration
Déclaration de tableaux à deux dimensions en C
TypeSimple NomTabl[NbreLigne][NbreCol];
Exemples :
double A[2][5] ; /* déclaration d’un tableau à deux dimension nommé A et de type
double */
char B[4][2] ; /*déclaration d’un tableau à deux dimension nommé B et de type char*/
M. El Kastouri 3
Cours Algorithme et programmation C Chapitre 5 : les tableaux
Mémorisation
Comme pour les tableaux à une dimension, le nom d'un tableau est le représentant de
l'adresse du premier élément du tableau (c-à-d l'adresse de la première ligne du tableau).
Les composantes d'un tableau à deux dimensions sont stockées ligne par ligne dans la
mémoire.
Lors de l'initialisation, les valeurs sont affectées ligne par ligne en passant de gauche à droite.
Nous ne devons pas nécessairement indiquer toutes les valeurs: Les valeurs manquantes
seront initialisées par zéro. Il est cependant défendu d'indiquer trop de valeurs pour un
tableau.
Si le nombre de lignes L n'est pas indiqué explicitement lors de l'initialisation, l'ordinateur
réserve automatiquement le nombre d'octets nécessaires.
L’accès à un élément d’un tableau à deux dimensions se fait selon le schéma suivant :
NomTableau[Ligne][Colonne]
Les éléments d'un tableau de dimensions L et C se présentent de la façon suivante:
M. El Kastouri 4
Cours Algorithme et programmation C Chapitre 5 : les tableaux
/ \
| A[0][0] A[0][1] A[0][2] . . . A[0][C-1] |
| A[1][0] A[1][1] A[1][2] . . . A[1][C-1] |
| A[2][0] A[2][1] A[2][2] . . . A[2][C-1] |
| . . . . . . . . . . . . . . . |
| A[L-1][0] A[L-1][1] A[L-1][2] . . . A[L-1][C-1] |
\ /
4. Affichage et affectation
Lors du travail avec les tableaux à deux dimensions, nous utiliserons deux indices (p.ex: I et
J), et la structure for, souvent imbriquée, pour parcourir les lignes et les colonnes des
tableaux.
Exemples :
1. Affichage du contenu d'un tableau à deux dimensions
int A[5][10];
int I,J;
/* Pour chaque ligne ... */
for (I=0; I<5; I++)
{
/* ... considérer chaque composante (colonne) */
for (J=0; J<10; J++)
printf("%7d", A[I][J]);
}
2. Affectation avec des valeurs provenant de l'extérieur
int A[5][10];
int I,J;
/* Pour chaque ligne ... */
for (I=0; I<5; I++)
/* ... considérer chaque composante (colonne) */
for (J=0; J<10; J++)
scanf("%d", &A[I][J]);
M. El Kastouri 5
Cours Algorithme et programmation C Chapitre 5 : les tableaux
Du C au Python :
Il est possible de "stocker" plusieurs grandeurs dans une même structure, ce type de structure
est appelé une séquence. De façon plus précise, nous définirons une séquence comme un
ensemble fini et ordonné d'éléments indicés de 0 à n-1 (si cette séquence comporte n
éléments). Nous allons étudier plus particulièrement 2 types de séquences : les tuples et les
tableaux.
I. Les tuples en Python
Comme déjà dit ci-dessus, un tuple est une séquence. Voici un exemple très simple :
2.
M. El Kastouri 6
Cours Algorithme et programmation C Chapitre 5 : les tableaux
Il n'est pas possible de modifier un tuple après sa création (on parle d'objet "immutable"), si
vous essayez de modifier un tuple existant, l'interpréteur Python vous renverra une erreur.
II. Tableau
Les tableaux sont,comme les tuples, des séquences, mais à la différence des tuples, ils sont
modifiables (on parle d'objets "mutables").
Pour créer un tableau, il existe différentes méthodes : une de ces méthodes ressemble
beaucoup à la création d'un tuple :
Un tableau est une séquence, il est donc possible de "récupérer" un élément d'un tableau à
l'aide de son indice (de la même manière que pour un tuple).
Remarque : Il est possible de saisir directement mon_tab[2] dans la console sans passer par
l'intermédiaire de la variable ma_variable.
La fonction "len" permet de connaitre le nombre d’éléments présents dans une séquence
(tableau et tuple).
Dans la boucle for... in il est possible d’utiliser la fonction prédéfinie range à la place d’un
tableau d’entiers.
"range(0,5)" est, au niveau de la boucle "for..in", équivalent au tableau [0,1,2,3,4].
"range(a,b)", a est la borne inférieure et b a borne supérieure, la borne inférieure est
incluse, mais que la borne supérieure est exclue.
Il est possible d'utiliser la méthode "range" pour "remplir" un tableau :
M. El Kastouri 7
Cours Algorithme et programmation C Chapitre 5 : les tableaux
M. El Kastouri 8