Vous êtes sur la page 1sur 23

Algorithmique et Programmation :

Les tableaux

Aicha Ben Jrad


Section : 1ère année EEA

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.

❑ Pour mémoriser et manipuler de nombreuses données (10, 100,


1000, etc.), des variables distinctes seraient beaucoup trop lourdes à
gérer.

❑ Pour résoudre ce problème, il existe un type de données qui permet


de définir plusieurs variables de même type : Tableau

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 ?

❑ Élément d'un tableau : désigne l'une des valeurs contenues dans le


tableau ;

❑ Taille d'un tableau : nombre d'éléments que le tableau peut contenir


au plus ;

❑ Le type des éléments du tableau peut être :


o Simple => Tableau unidimensionnel ou vecteur
o Tableau => Tableau multidimensionnel

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 : ALGORITHME RemplirTableau


VAR tab : tableau[1..100] d'entiers
N, i : entiers
DEBUT
Répéter
Lire(N)
Jusqu'à N ≤ 100
Pour i de 1 à N Faire
Lire(tab[ i ])
FinPour
Fin
8
Tableau à une dimension

Solution :
#include <stdio.h>
int main() {
int tab[100], n, i ;

do
scanf("%d", &n) ;
while (n > 100 || n < 0 ) ;

for (i=0; i< n; i++)


scanf("%d", &tab[i]);

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]) ;

for (i=0; i<(N/2); i++){


temp = tab[i] ;
tab[i] = tab[N – i + 1] ;
tab[N – i + 1] = temp ;
}
return 0 ;
}
12
Tableau multi-dimensions
Déclaration :
✓ En algorithmique :
<nom_tableau> : tableau [min1 .. max1,… , minN..maxN] de <type>
Ou
<nom_tableau> : tableau [td1, …, tdN] de <type>
Exemple : Variable monTableau : tableau [1 .. 8, 1 .. 5] de entiers
✓ En langage C :
<type> <nom_tableau> [taille_dim1]...[taille_dimN] ;
Avec initialisation (deux dimensions) :
<type> <nom_tableau> [tailleL][tailleC] = { {<val11>,..,<val1P>}, … } ;
13
Exemple : int monTableau[8][5] ;
Tableau multi-dimensions
Manipulation :
❑ L'accès à un élement d'un tableau :
<nom_tableau> [<indice_dim1>]…[<indice_dimN>]
Exemple : monTableau [3][4] contient la valeur 14

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

Solution : ALGORITHME SommeMatrices


CONST N = 4
P=3
VAR A : tableau[1..N][1..P] d'entiers
j, i : entiers
DEBUT
Pour i de 1 à N Faire
Pour j de 1 à P Faire
Ecrire(A [ i ][ j ])
FinPour
FinPour
16 Fin
Tableau multi-dimensions
Solution :
#include <stdio.h>

int main() {
int n = 4, p = 3, i, j ;
int A[n][p] = {{1,0,3},…};

for (i=0; i < n; i++){


for (j=0; j < p ; j++)
printf("%d\t", A[i][j]) ;
printf("\n") ;
}
return 0 ;
}
17
Chaîne de caractères

❑ Une chaîne de caractères est une suite de caractères et dont le


nombre et fini, elle peut être représenté par un tableau de
caractères de dimension n, où n est la longueur de la chaîne ;

❑ Les tableaux utilisés en C pour représenter des chaînes sont


toujours de type char . Le dernier élément de ces tableaux
contient un caractère spécial qui indique la fin de la chaîne ;

❑ Caractère de fin de chaîne : noté '\0', ce caractère non-imprimable


indique que la chaîne se termine au caractère précédent.

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

Vous aimerez peut-être aussi