Académique Documents
Professionnel Documents
Culture Documents
Les tableaux
A.U 2021/2022
Introduction
❑ Les variables, telles que nous les avons vues jusqu'à présent, ne
permettent de stocker qu'une seule donnée à la fois.
2
Qu'est-ce q'un tableau ?
❑ Un tableau est une suite fini d'éléments de même type, stockés en
mémoire à des adresses contiguës ;
❑ L'intérêt des tableaux : permettre d'utiliser une seule variable pour
répresenter un ensemble de valeurs ;
10eme élément
2eme élément
1er élément
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
3
Tableau de 10 éléments de type short
Qu'est-ce q'un tableau ?
4
Tableau à une dimension
Déclaration :
✓ En algorithmique :
<nom_tableau> : tableau [indice_min .. indice_max] de <type>
Ou
<nom_tableau> : tableau [taille_tableau] de <type>
Exemple : Variable monTableau : tableau [1 .. 100] de entiers
✓ En langage C :
<type> <nom_tableau> [taille] ;
Avec initialisation :
<type> <nom_tableau> [ ] = { <val1>, <val2>, … } ;
5
Exemple : int monTableau[100] ;
Tableau à une dimension
Manipulation :
❑ Les éléments d'un tableau sont des variables indicées qui
s'utilisent exactement comme n'importe quelles autres variables
classiques ;
❑ L'accès à un élement d'un tableau :
<nom_tableau> [<indice_élément>]
Exemple : Accès au 4ème élément :
monTableau[4] si l'indice de 1er élément = 1
monTableau[3] si l'indice de 1er élément = 0
❑ Indice d'un élément : numéro (position) de l'élément dans la
6 séquence constituant le tableau.
Tableau à une dimension
Exemple 1 :
Ecrire un algorithme/programme qui permet de lire N (≤ 100 ) entiers et
les stocker dans un tableau.
7
Tableau à une dimension
Solution :
#include <stdio.h>
int main() {
int tab[100], n, i ;
do
scanf("%d", &n) ;
while (n > 100 || n < 0 ) ;
return 0 ;
}
9
Tableau à une dimension
Exemple 2 :
Ecrire un algorithme/programme qui permet de:
1. remplir un tableau par N entiers;
2. permuter ces éléments tel que le premier élément sera le dernier,
le dernier sera le premier et de manière générale l'élément de
position k sera permuté avec celui de la position (N – k +1)
10
Tableau à une dimension
Solution : ALGORITHME Permutation
CONST N = 30
VAR tab : tableau[1..N] d'entiers
temp, i , P: entiers
DEBUT
Pour i de 1 à N Faire
Lire(tab[ i ])
FinPour
P <- N DIV 2
Pour i de 1 à P faire
temp <- tab [ i ]
tab [ i ] <- tab [ N – i + 1 ]
tab [ N – i + 1 ] <- temp
FinPour
11 Fin
Tableau à une dimension
Solution : #include <stdio.h>
# define N 30
int main() {
int tab[N], temp, i ;
for (i=0 ; i < N ; i++ )
scanf("%d", &tab[i]) ;
14
Tableau multi-dimensions
Exemple 3 :
Ecrire un algorithme/programme qui affiche le contenu d'un tableau à
deux dimensions 𝑁 × 𝑃. On suppose que le tableau est initialisé d'une
façon ou d'une autre.
15
Tableau multi-dimensions
int main() {
int n = 4, p = 3, i, j ;
int A[n][p] = {{1,0,3},…};
18
Chaîne de caractères
Déclaration :
✓ En algorithmique :
<nom_chaîne> : Chaîne
Exemple : Variable maChaîne : Chaîne
Optionnel
✓ En langage C :
char <nom_chaîne> [taille_max] ;
Avec initialisation :
char <nom_chaîne> [taille_max] = { 'B', 'o', 'n', …, '\0' } ;
char <nom_chaîne> [taille_max] = "<chaine>" ;
Exemple : char maChaine[10] = "Bonjour" ;
19
'B' 'o' 'n' 'j' 'o' 'u' 'r' '\0'
Chaîne de caractères
Algorithmique Langage C
- longueur (ch) : le nombre de o Fonctions de stdio.h :
caractères d'une chaîne ch ; - puts(ch) : écrit la chaîne de caractère ch.
- concat(ch1, ch2) : la Equivalent à printf("%s\n", ch) ;
concaténation de chaînes, c.à.d, - gets(ch) : lit une phrase et la copie à l'adresse indiquée par ch.
ch1 + ch2 ; - scanf("%s", ch) : lit une chaîne de caractères. Le nom de la chaîne est
- copie(ch1, pos, n) : copie une le représentant de l'adresse du premier caractère, il est donc inutile de
partie de la chaîne ch1 à partir mettre & ;
de la position pos. La sous- - sprintf(ch, "<format>", <exp1>, …, <expn>) : envoie la chaîne
chaîne est de taille n ; formatée à ch ;
- comp(ch1, ch2) : comparaison - sscanf(ch, "<format">, <arg1>, …, <argn>) : le contraire de sprintf ;
de chaînes o Fonctions de string.h :
- strlen(ch) : fournit la longueur de la chaîne sans compter le '\0'.
- strcpy(s, t) : copie t vers s (ou strncpy(s, t, n) copie n caractères de t)
- strcat(s, t) : ajoute t à la fin de s (ou strncat(s, t, n) ajoute n
caractères de t à la fin de s)
- strcmp(s, t) : compare s et t lexicographiquement
20
Chaîne de caractères
Exemple 4 :
Ecrire un algorithme/programme qui lit une chaîne de caractère, et
vérifie si elle est palindrome ou non. Une chaîne de caractères est dite
palindrome si elle est identique à son image miroir (c’est-à-dire qu'on
peut la lire indifféremment de droite à gauche ou de gauche à droite).
Exemples : radar, laval, sos , …
21
Chaîne de caractères
Solution :
ALGORITHME Palindrome
VAR mot : Chaîne
i : entiers
DEBUT
Ecrire ("Saisir un mot :")
Lire (mot)
I <- 1
TantQue i ≤ (longueur(mot) DIV 2) ET mot[i] = mot[longueur(mot) - (i-1)] Faire
i <- i + 1
FinTantQue
Si i ≤ (longueur(mot) DIV 2) alors Ecrire("Le mot n'est pas un palindrome")
Sinon Ecrire ("Le mot est un palindrome")
FinSi
16 Fin
Chaîne de caractères
Solution :
#include <stdio.h>
#include <string.h>
int main() {
char mot[50] ;
int i = 0 ;
printf("Saisir un mot :");
scanf("%s", mot);
while (i<(strlen(mot)/2) && mot[i] == mot[strlen(mot)-1-i])
i++ ;
if (i< (strlen(mot)/2))
printf ("Le mot n'est pas un palindrome\n") ;
else printf ("Le mot est un palindrome\n") ;
return 0 ;
}
17