Académique Documents
Professionnel Documents
Culture Documents
Dr BACHI Katia
Plan du chapitre 5
- Introduction ………………………………….......................................
- Les tableaux…………………………..……………………………….
- Les tableaux multidimensionnels…………………………………….
- Les chaînes de caractères……………….…………………………….
I. Introduction
Solution :
Debut
pour i de 1 à 100 faire
Ecrire (" Donner la moyenne de l'étudiant N°",i) ;
Lire (moyenne) ;
Fin pour
Fin
* Conclusion : On ne peut pas effectuer le classement
Pourquoi ? Parce qu'on ne garde pas les moyennes précédentes et la variable moyenne contient
uniquement la dernière valeur.
Une solution à ce problème consiste à utiliser une structure de données appelée « Tableau »
- Chaque élément d’un tableau est accessible par un indice, qui est un entier.
- Selon les langages de programmation, le premier indice est soit 0 (Le C), soit 1 (Pascal)
- Dans ce cous, on va considérer que le premier indice du tableau est 1.
Un tableau à une dimension ou monodimensionnel est un tableau ayant une seule dimension.
Exemples en langage C :
int a [5];
II.1.2 Représentation physique
Lors de la déclaration d'un tableau, une zone mémoire lui sera réservée. Elle sera utilisée pour
le stockage de ses données. La taille de cette zone en octets est la multiplication de la taille
du tableau par la taille du type de ses éléments (un tableau de trois entiers sera représenté par
six octets : chaque entier est codé sur deux octets). Un tableau T correspond à l'adresse mémoire
de son premier élément (T=&T[0]). Il s'agit de la première cellule de la zone mémoire qui lui est
réservé.
Exemple :
Supposant que T a été mémorisé à l'adresse mémoire 100, un caractère étant codé sur un octet, le
contenu des cellules mémoire sera alors comme suit :
T=&T[0]=100
Un élément du tableau est accessible par sa position (indice) dans le tableau. Soient « T » le nom
d’un tableau de N éléments, et i un entier.
▪ L’élément de T d’indice i est représenté par la notation T[i]
▪ Si (i≤0) ou (i>N), l’écriture T[i] n’a pas de sens (c’est une erreur),
▪ Ainsi :
T[1] est le premier élément de T ;
T[N] est le dernier élément de T.
En particulier, les trois manipulations de base sont :
❖ Ecriture ;
❖ Lecture ;
❖ Affectation.
Lecture et affichage
Les éléments d'un tableau sont à lire et à afficher élément par élément. Comme les variables
simples, il est possible aussi d’assigner des valeurs aux éléments d’un tableau lors de l’exécution
c.-à-d. les valeurs sont saisies par l’utilisateur à la demande du programme.
De façon analogue à la lecture, l’écriture de la valeur d’un élément donné d’un tableau s’écrira
comme suit :
Syntaxe en algorithmique Syntaxe en langage C
Ecrire(T[i]) ; printf("%d",&T[i]);
Affectation
Pour affecter une valeur à un élément i d’un tableau nommé par exemple T, on écrira :
En algorithmique En langage C
T[i] valeur ; t[i] :=valeur ;
Fin pour
Fin
Exercice 2 : (Création, lecture et affichage d’un tableau)
Problème : Ecrire l'algorithme permettant de créer un tableau de dix caractères, de lire ses
éléments à partir du clavier, ensuite de les afficher.
Solution :
Algorithme lire_tab ;
Var T : tableau [1..10] de caractère ;
i : entier ;
Début
Pour i allant de 1 jusqua 10 Faire
Lire (T[i]) ;
Fin pour
Pour i allant de 1 jusqua 10 Faire
Ecrire(T[i]) ;
Fin pour
Fin
Important :
- L'affectation d'un tableau T1 à un autre tableau T2 se fait élément par élément. Une affectation
"brutale" de T1 à T2 n'est pas possible.
- L'affectation élément par élément d'un tableau T1 à un autre tableau T2 réalise une copie de T1
dans T2.
- La comparaison des éléments de deux tableaux doit se faire élément par élément
- La somme et le produit de deux tableaux T1 et T2 doit se faire élément par élément
L’algorithme qui permet de consulter un élément L’algorithme qui permet de chercher toutes les
d’un tableau occurrences d’un élément dans un tableau
Algorithme consultation; Algorithme recherche_toutes_occurences ;
Var T: tableau [1..100] de reels ; Var T : tableau [1..100] de reels ;
N,P : entiers ; N,i: entiers ;
Début X : reel ;
Si (N=0) alors Ecrire(‘le tableau est vide ‘) ; Existe : booleen ;
Sinon Début
Lire(X) ;
Ecrire(‘Position hors limites du tableau ‘)
Existe <-- Faux ;
Sinon
Pour i allant de 1 jusqua à N Faire
Si T[i] = X alors Existe <-- Vrai ;
Ecrire(‘l’’élément à consulter est :’,T[P]) ;
Finsi
Ecrire(‘l’’élément à chercher apparait à la
Finsi position : ‘,i) ;
Fin Finsi
Finpour
Si Existe = Faux alors
Ecrire(‘l’’élément n’’apparait pas dans ce
tableau ‘) ;
Finsi
Finsi
Fin
Algorithme permettant de trier par ordre croissant Algorithme permettant de fusionner les éléments de
les éléments d’un tableau deux tableaux T1 et T2 dans un autre tableau T
Algorithme tri_Croissant; Algorithme fusion_deux_tableaux;
Var T : tableau [1..100] de reels ; Var T1,T2 : tableau [1..100] de reels ;
N ,i,j: entiers ;
T : tableau [1..200] de reels ;
x: réel ;
N ,M,i: entiers ;
Debut
Debut
Si (N=0) alors Ecrire(‘le tableau est vide’) ; Si (N=0)et (M=0) alors
Sinon
Ecrire(‘le tableau est vide’) ;
Pour i allant de 1 jusqua N-1 Faire
Sinon
Pour j allant de i+1 jusqua N Faire
Pour i allant de 1 jusqua N Faire
Si T[i] > T[j] alors Si T[i]< T[j] alors
T[i]<--T1[i] ;
x <-- T[i] ; x <-- T[i] ;
FinPour
T[i] <-- T[j] ; T[i] <-- T[j] ;
T[j] <-- x ; T[j] <-- x ; Pour i allant de 1 jusqua M Faire
Finsi // tri_Décroissant;
T[N+1]<--T2[i] ;
Finpour
FinPour
Finpour
FinSi
Finsi
Fin Fin
Exemple :
Syntaxe en algorithmique Syntaxe en langage C
Var M : Tableau [1.. 4,1..5] de
reels;
Ou float M [4][5] ;
Type Mat =[1.. 4,1..5] de reels ;
Var M :Mat ;
Indice : les lignes d’une matrice sont numérotées par des entiers successifs de même que les
cases de chaque ligne. Ces numéros sont appelés indices de ligne et de colonne. En
programmation, il dépend du langage utilisé que la première case porte le numéro 0 ou 1 (ou
autre) ; la case suivante porte le numéro suivant, etc. Nous respecterons la consigne donnée pour
les tableaux de débuter par "1"
3
4
Exemple : la 5ème Case de la 2ème ligne de la matrice M est désignée par M[2,5].
Donc M[i, j], désigne la case de la ligne i et de la colonne j du tableau à deux dimensions M avec i
(resp. j) une variable ayant des valeurs entre 1 et 4 (resp. entre 1 et 5)
Remarque :
Le traitement d’une matrice se fait en général par des boucles imbriquées.
Lecture et affichage dans un tableau à deux dimensions
Boucle de lecture d’une matrice de dimension NxM Boucle de lecture d’une matrice en langage C
Pour i allant de 1 jusqua N Faire for(j=0 ; j<N ; j++){
Pour j allant de 1 jusqua M Faire for(i=0 ; i<M ; i++) {
Lire(M[i,j]) ; scanf("%d",&Mat[i][j]);
FinPour }
}
FinPour
Boucle d’écriture d’une matrice de dimension NxM Boucle d’écriture d’une matrice en langage C
Pour i allant de 1 jusqua N Faire for(j=0 ; j<N ; j++){
Pour j allant de 1 jusqua M Faire for(i=0 ; i<M ; i++) {
Ecrire(M[i,j]) ; printf("%d",&Mat[i][j]);
FinPour }
}
FinPour
Affectation
L’instruction suivante affecte à la variable ‘x’ la valeur d’un élément de la matrice M,
xM[i,j]
Exercice 3 :
Ecrire un algorithme permettant de saisir les données d’un tableau à deux dimensions (10,4), de
faire leur somme, produit et moyenne et de les afficher avec les résultats de calcul à l’écran.
Algorithme tableau_deux_dimension;
Var T : tableau [1..10,1..4] de réels ;
i,j: entiers ;
S,P,M : réels ;
Debut
//(*saisie des éléments du tableau *)
Pour i allant de 1 jusqua 10 Faire
Pour allant de 1 jusqua 4 Faire
Ecrire(‘entrer les elements de la matrice :’;
Lire(T[i,j]) ;
Finpour;
Finpour ;
P <-- P + T[i,j] ;
Finpour
Finpour
M <-- S/40 ; //(*40 : nombre d’élément du tableau = 10x4 *)
//(* Affichage des éléments du tableau et des résultats *)
Pour i allant de 1 jusqua 10 Faire
Pour j allant de 1 jusqua 4 Faire
Ecrire(‘l’’élément T[‘,i,’,’,j,’] = ‘, T[i,j]);
Finpour
Finpour
Ecrire (‘la somme des éléments du tableau est :’,S) ;
Ecrire (‘le produit des éléments du tableau est :’,P) ;
Ecrire(‘la moyenne des éléments du tableau est :’,M) ;
Fin
Le premier est un tableau à trois dimensions et le deuxième est un tableau à quatre dimensions.
Syntaxe en langage C :
Type name [size1][size2]…[sizeN];
Exemple
La déclaration suivante crée un tableau d’entiers tridimensionnel ( 5x10x4) :
int arr[5][10][4] ;
En algorithmique En langage C
Var identificateur : chaine[longueur] ; Une chaîne de caractères en langage C est un
ou tableau de type char. La déclaration est
var identificateur : chaine ; identique à un tableau normal:
char<nom_chaine> [<dimension>] ;
Exemple (algorithmique)
var nom :chaine ;
var prenom :chaine[8] ;
nom’Peaky’ ;//Initialisation de nom à la chaine ‘peaky’
La variable nom peut contenir jusqu'à 255 caractères alors que prenom peut contenir au
maximum 8.
Exemple (langage C)
char chaine[10] ; // // la longueur maximale = 9.
Char chaine[]=’peaky’ ; //Initialisation de chaine à la chaine ‘peaky’
Lecture et affichage
Une variable de type chaîne de caractères en algorithmique peut être lue et affichée globalement
au moyen de Lire() et écrire(), par contre, en langage C, elle peut être lue et affichée
caractère par caractère au moyen de scanf et printf utilisant le format %c. Elle peut également
être lue (affichée) globalement (d'un seul coup) au moyen de la fonction scanf (printf) utilisant
cette fois-ci le format %s ou au moyen de la fonction gets (puts).
En algorithmique En langage C
Lire(nom) ; scanf("%s", chaine);
printf("%s", chaine);
Ecrire(mom) ;
gets(chaine);
puts(chaine);
En algorithmique
En langage C
Fonction Rôle Exemple