Vous êtes sur la page 1sur 2

11. Tableaux Algorithmique & Programmation (MPSI & PCSI) Prof.

El Kourchi Khalid

Données individuelles Ensemble de données

Jusqu’à maintenant, on a vu comment on doit représenter des données Souvent, on est face à des problèmes qui nécessitent la manipulation de
individuelles au niveau de la mémoire et aussi en algorithmique suivant plusieurs données à la fois.
leurs types.
Problème

Supposons qu’on veut gérer (trier) les moyennes des élèves d’une classe

Moyennes des élèves de la classe

Organisation de la mémoire centrale (RAM)

La mémoire principale (RAM) peut être vue comme un arrangement très


grand de cases mémoires (octets)

Analyse

Du schéma précèdent, on voit clairement que pour gérer plusieurs


données à la fois (moyennes), on doit réserver plusieurs espaces
mémoires par la déclaration de plusieurs variables, chaque espace
mémoire réside à une adresse différente au niveau de la mémoire.

Plusieurs données ↔ Plusieurs espaces mémoires


↔ plusieurs variables
↔ plusieurs adresses

Donc dans notre algorithme, on doit déclarer plusieurs variables, ici 25


L’unité adressable au niveau de la mémoire est l’octet, cela veut dire que variables
chaque octet à une adresse (un numéro qui est un entier).
Variables m1, m2,…., m25 : Réel
La mémoire principale (RAM) est une mémoire à accès aléatoire (Random
Access Memory). Dans des cas, Ça peut être des milliers voir même des millions de
variables, ce qui va être très lourd à gérer, manipuler.
Le temps d’accès à n’importe quel octet est constant (indépendant de son
adresse (son numéro)) Remarquez que ces espaces mémoires sont dispersés au niveau de la
mémoire (résident à des adresses mémoires variées).
Représentation d’un réel dans la mémoire
Par exemple, « moyenne6 » commence à l’adresse 92 et occupe « 4
octets » donc se termine à l’adresse 95.

En résumé

On veut gérer plusieurs données mais pas avec la déclaration de plusieurs


variables.

Solution

On doit gérer plusieurs espaces mémoires par un nombre limité (très


réduit) de variables (cas idéal par une seule variable).

A partir de l’analyse précèdent, on a vu que :

Plusieurs espaces mémoires ↔ plusieurs adresses

Si tous ces espaces mémoires sont de la même taille (comme dans ce cas,
4 octets pour chaque moyenne) et si on les places d’une façon contiguë
au niveau de la mémoire, ce n’est pas la peine de connaitre toutes les
adresses de ces espaces mémoires.

Le réel « R » occupe un espace mémoire de 4 octets, le premier est à


l’adresse 5, le dernier est à l’adresse 8.

N.B : Pour chaque variable (espace mémoire), il suffit de connaitre


l’adresse du premier octet, le type de la variable détermine là ou l’espace L’adresse du ieme élément peut être obtenue rapidement connaissant
mémoire de la donnée se termine. juste l’adresse du premier élément par la relation suivante :

« Ti = T + 4*i » ou i est l’indice ou bien le numéro de l’élément.


11. Tableaux Algorithmique & Programmation (MPSI & PCSI) Prof. El Kourchi Khalid

Tableaux homogènes Ces adresses sont des numéros donc des entiers, et par la suite on peut
utiliser un tableau homogène d’entiers pour stocker les adresses de début
Un tableau est donc une suite de cases mémoires de même taille placées de l’espace mémoire de chaque donnée.
d’une façon contiguë au niveau de la mémoire.
En résumé
En algorithmique, on déclare un tableau de « N » données homogènes de
la façon suivante : Tableau hétérogène  Tableau d’adresses  Tableau d’entiers

Variable T : Type [N] Exemple Variable T : Réel [25]

Cette déclaration permet de réserver un espace mémoire total de taille


« N*4(=taille du type) octets » composé de N cases contiguës chacune de
taille 4 octets.

La variable « T » contient l’adresse du premier octet de la première case.

Tableaux de tableaux (Tableau à 2 dimensions)

Un tableau multidimensionnel peut être vu comme un tableau


Accès aux éléments d’un tableau homogène
hétérogène dont les cases contiennent des adresses vers d’autres
tableaux.
La notation « T[i] » désigne le (i+1)eme élément du tableau (on a
commencé à partir de 0).

Elle permet d’accéder à tout espace mémoire de l’élément, les 4 octets


d’un seul coup, pour modifier sa valeur ou bien d’utiliser la valeur stockée
dans cet espace mémoire dans le traitement.

Modification des cases d’un tableau homogène (Lecture)

Pour remplir un tableau par des valeurs, il faut lire une valeur pour
chacune de ces cases, ce qui nécessite l’utilisation d’une boucle POUR :

Algorithme Modification_Tableau
Variables T : Réel [N]
A partir du schéma précèdent, L0 est aussi un tableau dont l’adresse est
Début
stockée dans la première case du tableau T : L0 = T[0]
POUR i ALLANT DE 0 à N-1 FAIRE
T[i]  Vi
Donc le premier élément du tableau L0 est accessible L0[0] ou bien T[0][0]
FINPOUR
Fin De la même façon, le keme élément du tableau Li est accessible par Li[k] ou
bien T[i][k]

La lecture d’un tableau (le remplir de valeurs) est cas particulier de la En algorithmique, on déclare un tableau de « N » tableaux dont chacun
modification d’un tableau, il suffit de remplacer : contient « M » éléments comme suit :

T[i]  Vi  Lire (T[i] ) Variable T : Type [N][M] Exemple Variable T : Réel [10][5]

Manipulation des cases d’un tableau homogène (Ecriture) Dans l’exemple ci-dessus, on vient de déclarer un tableau d’entiers qui
contient les adresses de 10 tableaux.
La manipulation des cases d’un tableau homogène se fera facilement par
une boucle POUR comme suit: Manipulation des cases d’un tableau à 2 dimensions

Algorithme Manipulation_Tableau Pour manipuler les cases d’un tableau à 2 dimensions, il faut utiliser deux
Variables T : Réel [N] boucles POUR imbriquées.
Début
POUR i ALLANT DE 0 à N-1 FAIRE Algorithme Manipulation_Tableau
Manipuler (T[i] ) Variables T : Réel [N][M]
FINPOUR Début
Fin POUR i ALLANT DE 0 à N-1 FAIRE
POUR j ALLANT DE 0 à M-1 FAIRE
Manipuler( T[i][j] )
L’écriture d’un tableau (l’afficher) est cas particulier de la manipulation FINPOUR
d’un tableau, il suffit de remplacer : FINPOUR
Fin
Manipuler(T[i]) = Ecrire (T[i] )

Tableau multidimensionnel
Ensemble hétérogène de données (Tableau hétérogène)
On peut répéter les mêmes principes pour pouvoir générer et manipuler
Les données hétérogènes nous obligent de garder toutes les adresses de des tableaux multidimensionnels à n dimensions.
leurs espaces mémoires même si on les place d’une façon contiguë au
niveau de la mémoire. Tout simplement parce qu’ils ne sont pas de la Variable T : Type [D1][D2]…[Dn]
même taille et donc il faut connaitre là où il commence l’espace mémoire
de chaque donnée.