Chapitre 3 - Type Tableau (Vecteurs Matrices)
Chapitre 3 - Type Tableau (Vecteurs Matrices)
Chapitre 3 - Type Tableau (Vecteurs Matrices)
Chapitre III
Type Tableau – Vecteurs & Matrices
Sommaire
Chapitre III : Variables Indicées – Le type Tableau...................................3
III.1. Introduction.............................................................................................................3
1
ING / ALSD-1 Chapitre III : Type Tableau - Vecteurs & Matrices) (2022-2023)
Cours Elearning :
https://elearning.univ-bejaia.dz/course/view.php?id=2749
Page facebook :
https://www.facebook.com/InitiationAlgoProgrammation/
La chaîne Youtube :
https://www.youtube.com/c/AlgoProgrammation1èreAnnéeTechnologie
2
ING / ALSD-1 Chapitre III : Type Tableau - Vecteurs & Matrices) (2022-2023)
III.1. Introduction
Jusque là, nous avons vu que des variables de type simple (entier, réel, caractère, chaîne et
booléen) où chaque variable est associée à un seul espace mémoire, ne pouvant loger (ou bien
contenir) qu'une seule valeur à instant donné. Afin de représenter des données complexes comme
des tableaux de données (Tableaux statiques, vecteurs, matrices, listes, etc.) on utilise un autre type
Exemple
Les positions {1, 2, 3, 4, 5} représentent les indices ou indexes du tableau. Ils donnent la position
d'un élément du tableau. VECT[1], VECT[2], VECT[3], VECT[4], VECT[5] représentent les
Etc.
C'est-à-dire, pour accéder à une composante on a besoin d'un seul indice (valeur entière). Autrement
dit : les cases sont repérées avec un seule indice qui représente une valeur entière (valeur immédiate,
3
ING / ALSD-1 Chapitre III : Type Tableau - Vecteurs & Matrices) (2022-2023)
V1 :
1 2 3 4
V2 :
1 2 3 4 5 6
On a :
V2[1] = 24.00; V2[2] = 38.25; V2[3] = 28.00; V2[4] = 70.25; V2[5] = 63.00 ; V2[6] = 96.25 ;
succession de cellules mémoires (cases mémoires) contiguës (l'une à la suite de l'autre). L'adresse
d'un élément de tableau est obtenue par le système en utilisant l'adresse d'implantation du tableau en
mémoire auquel est ajouté la valeur de la position de l'élément par rapport au début du tableau
(l'offset de l'élément). Pour les deux tableaux V1 et V2, on aura cette représentation en mémoire :
Adresses Mémoire
0000
0001
0002
…....
…....
4
ING / ALSD-1 Chapitre III : Type Tableau - Vecteurs & Matrices) (2022-2023)
…....
V1 0006 12.50
0007 25.75
0008 56.00
0009 60.25
….... ….
….... ….
V2 0014 24.00
0015 38.25
0016 28.00
0017 70.25
0018 63.00
0018 96.25
…....
…....
Remarques :
✗ Ce n’est pas obligatoire d'utiliser une constante pour la taille maximale de tableau ;
élément MAX.
✗ C'est pas obligatoire d'utiliser toutes les composantes du tableaux, pour cela on déclare une
variable entière N qui représente la taille du tableau à utiliser. La valeur de cette variable
5
ING / ALSD-1 Chapitre III : Type Tableau - Vecteurs & Matrices) (2022-2023)
Exemple :
constante const int MAX = 50;
MAX = 50
variable
V:Tableau[1..MAX] de réel; real V[MAX];
Exemple :
V[1] := 24.00; V[2] := 38.25; V[3] := 28.00; V[4] := 70.25; V[5] := 63.00 ; V[6] := 96.25;
b) Par lecture : On utilise pour cela l'opération de lecture : C'est la méthode la plus commode.
précédent :
algorithme LireEcrireTableau ;
variables #include <stdio.h>
v:tableau[1..6] de réel int main()
i:entier {
Début float V[6];
écrire('Introduire V :'); int i;
pour i:=1 à 6 faire
lire(v[i]); printf("Introduire V : \n");
fin-Pour; for (i=0; i<6; i++)
écrire('Affichage de V :'); scanf ("%f", V[i]);
pour i:=1 à 6 faire printf ("Affichage V : \n") ;
écrire(v[i]); for (i=0; i<6; i++)
fin-Pour; printf ("%.2f ",V[i]);
Fin; }
6
ING / ALSD-1 Chapitre III : Type Tableau - Vecteurs & Matrices) (2022-2023)
des structures de données sous forme de tableaux. On peut en citer le domaine du calcul matriciel,
les statistiques, les traitement de gestion, etc. La gestion et l'analyse de données nécessitent
l'organisation des données dans des tableaux pour rendre possible leur traitement informatique.
Exemples : Nous allons voir quelques exemples d'algorithmes pour les tableaux à une seule
dimension (Vecteurs).
7
ING / ALSD-1 Chapitre III : Type Tableau - Vecteurs & Matrices) (2022-2023)
printf("Introduire V2 : \n");
pour i=1 à N faire for (i=0; i<N ; i++)
V[i] ← V1[i] + V2[i]; scanf ("%f", &V2[i]);
FinPour;
for (i=0; i<N ; i++)
V[i] = V1[i] + V2[i];
pour i=1 à N faire
Écrire (V[i]); printf("Affichage du V : \n") ;
FinPour; for (i=0; i<N ; i++)
Fin. printf ("%.2f", V[i]);
}
8
ING / ALSD-1 Chapitre III : Type Tableau - Vecteurs & Matrices) (2022-2023)
9
ING / ALSD-1 Chapitre III : Type Tableau - Vecteurs & Matrices) (2022-2023)
10
ING / ALSD-1 Chapitre III : Type Tableau - Vecteurs & Matrices) (2022-2023)
(composant) est repéré par un couple d'indices (i, j) où i est le numéro de la ligne et j est le numéro
peut être représentée par une tableau bidimensionnels (avec deux dimensions) de trois ligne et
quatre colonnes :
A= 1 2 3 4
1 14.32 14.50 14.25 25.84
2 15.26 15.65 12.23 15.36
3 12.25 16.23 10.20 15.63
1ère Façon :
ALGORITHME LANGAGE C
Variables
A:Tableau[1..3,1..4] de Réel float A[3][4];
Exemples
Une chaîne de 28 magasins, chacun comportant 4 rayons. On veut établir l'état des ventes
hebdomadaires. Ces données sont ensuite entrées dans un ordinateurs en utilisant un tableau à deux
dimensions où le premier indices repère le magasin et le second le rayon. Si VENTES est le nom du
tableau, décrire cette représentation des données.
11
ING / ALSD-1 Chapitre III : Type Tableau - Vecteurs & Matrices) (2022-2023)
VENTES 01 02 03 04
01 2872 805 3211 1560
02 2196 1225 2525 1477
03 3257 1017 3687 1951
…. …. …. …. ….
…. …. …. …. ….
…. …. …. …. ….
…. …. …. …. ….
28 2618 913 2333 982
Variables
VENTES : Tableau[1..28,1..4] de Entier
ligne et m colonnes :
Algorithme LectureAffichageMatrice
Variables
mat:tableau [1..10, 1..10] de réel; #include <stdio.h>
N,M, i,j:entier; int main()
Début {
Lire (N, M); float mat[10][10];
pour i=1 à N faire int i, j, n, m;
Pour j=1 à M faire
Lire (mat[i, j]); scanf("%d %d", &n, &m);
FinPour; for (i=0; i<n; i++)
FinPour; for (j=0; j<n; j++)
scanf("%f", &mat[i][j]);
pour i=1 à N faire
Pour j=1 à M faire for (i=0; i<n; i++)
Écrire (mat[i, j]); for (j=0; j<n; j++)
FinPour; printf("%8.2f", mat[i][j]);
FinPour; }
Fin. }
On doit introduire le nombre de lignes n et le nombre de colonnes m. par la suite on introduit les
12
ING / ALSD-1 Chapitre III : Type Tableau - Vecteurs & Matrices) (2022-2023)
13
ING / ALSD-1 Chapitre III : Type Tableau - Vecteurs & Matrices) (2022-2023)
nbP est le compteur des nombres positifs, nbN est le compteur des nombre négatifs et nbNul est
le compteur des nombre nuls.
14
ING / ALSD-1 Chapitre III : Type Tableau - Vecteurs & Matrices) (2022-2023)
Pour réaliser le produit des deux matrices m1 et m2, il faut que le nombre de colonne de m1 soit
égale au nombre de ligne de m2. Le résultat est une matrice Result dont le nombre de ligne est le
même qui celui de m1 et le nombre de colonne est le même qui celui de m2.
Result(N, L) = m1(N, M) * m2 (M, L)
✗ Result est une matrice de N lignes et L colonnes
✗ m1 est une matrice de N lignes et M colonnes
✗ m2 est une matrice de M lignes et L colonnes
✗ L'élément Result[i, j] est calculé comme suit :
Result[i, j] = m1[i, 1] * m2[1, j] + m1[i, 2] * m2[2, j] + m1[i, 3] * m2[3, j] +
M
…............. + m1[i, M] * m2[M, j] = Σ
k=1 m1[i, k] * m2[k, j]
15