Cours d'Algorithmique 1
LES TABLEAUX EN ALGORITHMIQUE ET EN LANGAGE C
Introduction
Un tableau est une variable structurée composée d’un nombre de
variables de même type.
Ces variables simples sont appelées éléments ou composantes du tableau, elles sont stockées en
mémoire à des emplacements contigus (l’un après l’autre) → Adresses mémoires successives.
Toutes les variables d’un tableau sont du même type.
2 Cours d'Algorithmique 1
Introduction
En Algorithmique, les indices des cases d’un tableau commencent à partir
de un (1).
1 2 3 4 5 6 7
1 1 345 4 81 34 41 52
2 -6 .. … … … … …
3 4
4 3 … … … … … …
3 Cours d'Algorithmique 1
Introduction
En langage C, les indices des cases d’un tableau commencent à partir de zéro (0).
4 Cours d'Algorithmique 1
Introduction
On peut définir des tableaux à une dimension (tableau unidimensionnel ou
vecteur) : Tableau T 1 2 4 -3 7 2 -1 6
Indices 1 2 3 4 5 6 7 8
Indices en C 0 1 2 3 4 5 6 7
Ou des tableaux à plusieurs dimensions (tableau multidimensionnel) :
Colonnes
0 1 2 3 4 5 6 Indices en C
Indices en algo 1 2 3 4 5 6 7
1 1 345 4 81 34 41 52 0
Lignes 2 -6 12 7 90 23 24 76 1
3 4 9 0 89 73 21 -234 2
4 3 2 -67 13 87 94 567 3
5 Cours d'Algorithmique 1
Tableaux à une dimension > Déclaration
La déclaration d'un tableau à une dimension s'effectue en précisant le type de
ses éléments et sa dimension (le nombre de ses éléments) :
Syntaxe : Tableau NomTableau(TailleMaximale);
Constante entière positive!
Syntaxe en C : Type identificateur[dimension];
Exemples :
Tableau Notes(40) : réel float Notes[40]; // Notes
Tableau Numero(30) : entier int Numero[30];
Tableau Voyelles(7) : caractère char Voyelles[7]; // Voyelles
6 Cours d'Algorithmique 1
Tableaux à une dimension > Initialisation
Pour initialiser les éléments d’un tableau lors de la déclaration, on indique la
liste des valeurs respectives entre accolades.
Exemples :
int Numero[30] = {1, 10, 32, 24, 7 } ;
0 1 2 3 4 … 28 29
1 10 32 24 7 …
float Notes[40] = {11.4, 13.67, 19.5, 17.1} ;
0 1 2 3 … 38 39
11.4 13.67 19.5 17.1 …
7 Cours d'Algorithmique 1
Tableaux à une dimension > Initialisation
char Nom[6] = { ‘A’, ‘h’, ‘m’, ‘e’, ‘d’, ‘\0’ } ;
0 1 2 3 4 5
‘A’ ‘h’ ‘m’ ‘e’ ‘d’ ‘\0’
la liste ne doit pas contenir plus de valeurs que la dimension du tableau.
short T[3] = {1, 2, 3, 4, 5} ; → Erreur !
On peut ne pas indiquer la taille explicitement lors de l'initialisation. Dans ce
cas elle est égale au nombre de valeurs de la liste.
short T[ ] = { 1, 2, 3, 4, 5 } ; → Tableau de 5 éléments
8 Cours d'Algorithmique 1
Tableaux à une dimension > Accès aux éléments
Les éléments d’un tableau sont accessibles par leurs indices. Ces indices
varient entre 1 et la Taille Maximale du tableau.
Ainsi, si on suppose qu’on dispose du tableau T suivant :
1 -7 3 4 5 6
Tableau T T(1) T(2) T(3) T(4) T(5) T(6)
T(1): élément de la première case du tableau T (ici vaut :1)
T(2) 10 // affecter 10 à la 2ème case du tableau T 1 10 3 4 5 6
T(1) T(2) T(3) T(4) T(5) T(6)
A T(3) + T(6) // A vaut 9
T( i ) : élément de la ième case du tableau T (avec i entre 1 et Taille Maximale)
9 Cours d'Algorithmique 1
Tableaux à une dimension > Accès aux éléments
Les éléments d’un tableau sont accessibles par leurs indices. En C ces indices
varient entre 0 et la Taille Maximale -1 du tableau.
int T[6] = { 1, 2, 3, 4, 5, 6 } , A ;
Ainsi nous avons :
T[0] : élément de la première case du tableau T (ici vaut :1)
T[1] =10 ; // affecter 10 à la 2ème case du tableau T
A = T[2] + T[5] ; // A vaut 9 1 10 3 4 5 6
T[0] T[1] T[2] T[3] T[4] T[5]
T[ i ] : élément de la ième case du tableau T (avec i entre 0 et 5)
10 Cours d'Algorithmique 1
Tableaux à une dimension > Lecture (Remplissage)
Pour lire les éléments d’un tableau, on utilise une boucle (vu que les indices
des cases sont successifs). Par Exemple :
Tableau T(10) : entier Tableau Notes(100) : réel
Variables Variables
i : entier i, n : entier
Début Début
Pour i allant de 1 à 10 faire Ecrire("Donner le nombre de
Ecrire("Donner l’entier ", i) notes à saisir")
Lire(T(i)) Lire(n)
FinPour Pour i allant de 1 à n faire
Fin Ecrire("Donner la note", i)
Lire(Notes(i))
FinPour
Fin
11 Cours d'Algorithmique 1
Tableaux à une dimension > Lecture
Pour lire les éléments d’un tableau en langage C, Par Exemple :
int T[100], n, i ; char ch[30], n, i ;
printf("Donner le nombre d’entiers à printf("Donner le nombre de caractères à saisir\n");
saisir\n"); scanf("%d", &n);
scanf("%d", &n); for(i=0 ; i<n ; i++){
for(i=0 ; i<n ; i++){ printf("Donner le caractère %d\n", i+1);
printf("Donner l’entier %d\n", i+1); scanf(" %c", &ch[ i ]);
scanf("%d", &T[ i ]); }
}
12 Cours d'Algorithmique 1
Tableaux à une dimension > Ecriture (Affichage)
De même, pour afficher un tableau, on utilise une boucle. Par exemple :
Tableau T(10) : entier Tableau Notes(100) : réel
Variables Variables
i : entier i, n : entier
Début Début
Ecrire("Donner le nombre de notes à saisir")
Pour i allant de 1 à 10 faire
Lire(n)
Ecrire("Donner l’entier ", i) Pour i allant de 1 à n faire
Lire(T(i)) Ecrire("Donner la note", i)
FinPour Lire(Notes(i))
//Affichage FinPour
Pour i allant de 1 à 10 faire //Affichage
Ecrire(T(i)) Pour i allant de 1 à n faire
FinPour Ecrire(Notes(i))
FinPour
Fin Fin
13 Cours d'Algorithmique 1
Tableaux à une dimension > Exemple Complet
Tableau Notes(100) : réel S S+ Notes(i)
Variables FinPour
NS, NI, i, n : entier Moy S/n
moy, S : réel Ecrire("La moyenne est :", Moy)
Début //Nombre de notes >= et < à la Moyenne calculée
Ecrire("Donner le nombre de notes à saisir") NS 0;
Lire(n) NI 0
Pour i allant de 1 à n faire Pour i allant de 1 à n faire
Ecrire("Donner la note", i) Si Notes(i) >= Moy alors
Lire(Notes(i)) NS NS +1
FinPour Sinon
//Affichage NI NI+1
Pour i allant de 1 à n faire FinSi
Ecrire(Notes(i)) FinPour
FinPour Ecrire("Nombre de notes >= Moy :", NS)
//Moyenne Ecrire("Nombre de notes < Moy :", NI)
S0 Fin
Pour i allant de 1 à n faire
14 Cours d'Algorithmique 1
Tableaux à une dimension > Ecriture
Pour écrire les éléments d’un tableau, on utilise une boucle.
Exemple : Pour l’affichage des 2 tableaux supposés déjà remplis :
int T[100], n, i ; char ch[30], n, i ;
printf("Donner le nombre d’entiers à saisir\n"); printf("Donner le nombre de caractères à saisir\n");
scanf("%d", &n); scanf("%d", &n);
for(i=0 ; i<n ; i++){ for(i=0 ; i<n ; i++){
printf("L’entier %d est : %d\n", i+1, T[ i ]); printf("Le caractère %d est : %d\n", i+1, ch[ i ]);
} }
15 Cours d'Algorithmique 1
Tableaux à une dimension > Exemple
Lecture d’un tableau d’entiers et affichage de la moyenne des ses éléments :
main( ){
int T[100], n, i , s=0;
printf("Donner le nombre d’entiers à saisir\n");
scanf("%d", &n);
for(i=0 ; i<n ; i++){
printf("Donner l’entier %d\n", i+1);
scanf("%d", &T[ i ]); }
for(i=0 ; i<n ; i++){
s = s + T[ i ] ; }
printf("Moyenne des éléments du tableau : %f\n", (float) s/n);
}
16 Cours d'Algorithmique 1
Tableaux à deux dimensions > Déclaration
La déclaration d'un tableau à une dimension s'effectue en précisant le type de
ses éléments et sa dimension (le nombre de ses éléments) :
Syntaxe : Tableau NomTableau(nombre_lignes, nombre_colonnes);
Constante entière positive!
Syntaxe en C :Type identificateur [nombre_de_lignes][nombre_de_colonnes];
Exemples :
Tableau Notes(40, 3) : réel float Notes[40][3]; // Notes
Tableau Numero(30, 2) : entier int Numero[30][2];
17 Cours d'Algorithmique 1
Tableaux à une dimension > Initialisation
Pour initialiser les éléments d’un tableau lors de la déclaration, on indique la
liste des valeurs respectives entre accolades.
Exemples :
float Notes[2] [4] = {{11.4, 13.67, 19.5, 17.1} , {12.5, 14.75, 13.5, 12.1} };
0 1 2 3
0 11.4 13.67 19.5 17.1
1 12.5 14.75 13.5 12.1
18 Cours d'Algorithmique 1
Tableaux à une dimension > Accès aux éléments
Les éléments d’un tableau sont accessibles par leurs indices.
float Notes[2] [4] = {{11.4, 13.67, 19.5, 17.1} , {12.5, 14.75, 13.5, 12.1} }, A;
Ainsi nous avons :
Notes[0][0] : élément de la première case (première ligne et première colonne) du tableau
Notes(ici vaut :11.4)
0 1 2 3
T[1][1] =10 ; // affecter 10 à la 2ème case du tableau T 0 11.4 13.67 19.5 17.1
1 12.5 10 13.5 12.1
A = T[0][3] + T[1][3] ; // A vaut 29.2
T[ i ][ j ] : élément avec la ligne i et la colonne j du tableau T (avec i entre 0 et 1 et j entre 0 et 3)
19 Cours d'Algorithmique 1
Tableaux à une dimension > Lecture (Remplissage)
Pour lire les éléments d’un tableau à deux dimensions, on utilise deux boucles (une boucle pour
parcourir les lignes et une boucle pour parcourir les colonnes). Par Exemple :
Tableau Notes(100, 10) : réel float notes[100][10];
Variables int i, j, n, m;
i, j, n, m : entier printf("Donner le nombre d’étudiants à saisir\n");
Début
Ecrire("Donner le nombre d’étudiants à saisir") scanf("%d", &n);
Lire(n) printf("Donner le nombre de notes à saisir \n");
Ecrire("Donner le nombre de notes à saisir") scanf("%d", &m);
Lire(m) for( i=0; i<n ; i++){
Pour i allant de 1 à n faire for( j=0;j<m; j++){
Pour j allant de 1 à m faire printf("Donner la note %d \n", j);
Ecrire("Donner la note", j)
scanf("%f", ¬es[i][j]);
Lire(Notes(i, j))
FinPour }
FinPour }
Fin
20 Cours d'Algorithmique 1
Tableaux à une dimension > Ecriture (Affichage)
De même, pour afficher un tableau, on utilise deux boucles. Par exemple :
Tableau Notes(100, 10) : réel float notes[100][10];
Variables int i, j, n, m;
i, j, n, m : entier for( i=0; i<n ; i++){
Début for( j=0;j<m; j++){
Pour i allant de 1 à n faire printf("%f", notes[i][j]);
Pour j allant de 1 à m faire }
Ecrire(Notes(i, j))
}
FinPour
FinPour
Fin
21 Cours d'Algorithmique 1