1
Représentation des données
Définition:
Une structure de données (SDD) est une
organisation des données pour en faciliter l’accès
et la modification vis-à-vis d’un problème donné.
Elle est définie par le type de base des composants
ainsi que les opérations que l’on peut leur
appliquer.
2
Représentation des données
Exemple
 les structures séquentielles: listes, piles, files
 les structures arborescentes: arbres
 les structures relationnelles: graphes
 les structures à accès par clé: tables
3
Choix de la structure de données
La manière de représenter les données en
mémoire doit respecter deux contraintes:
1. Utiliser un minimum d’espace mémoire
2. Exécuter un nombre minimal d’instructions
pour réaliser une opération
Remarque:
Le choix de bonnes (SDD) et de bons algorithmes
peut faire la différence entre un programme
s’exécutant en quelques secondes ou en quelques
jours.
4
Représentation contiguë
Un tableau est une SDD :
 Un ensemble d'éléments accessibles par leur
indice
 On le retrouve dans tous les langages de
programmation
 Tous les éléments d'un tableau doivent être du
même type
 L'accès à un élément par son indice est direct :
les éléments d'un tableau sont contigus dans
l’espace mémoire
5
Représentation contiguë
Exemple : Soit E={3, 21, 6, 13, 68, -4, 29}
Cet ensemble peut être représenté par un tableau
T schématisé comme suit :
Tel que :1, 2, …,7 représentent les indices.
On calcul l’adresse du ième
élément par :
@T[i]= @T[1] + (i-1)* Taille_du_type
T[3]= @T[1] + 2* 4 (entier représenté sur 4 octets )
T[3]= 300+ 2* 4 = 308 (exp: @ de T[1] = 300)
3 21 6 13 68 -4 29
T
1 2 3 4 5 6 7
6
Inconvénients de la représentation contiguë
 Taille : doit être connu au moment de l'écriture
de l’algorithme: le nombre de données que devra
recevoir le tableau
 Cellules contiguës : les opérations d'insertion et
de suppression d'éléments nécessitent de faire
des décalages
 L’insertion peut être impossible si le tableau est
plein
7
Représentation Chaînée
Une liste chaînée est une (SDD) qui permet de
stocker une suite d’éléments de même type.
Chaque élément est stocké dans une cellule
représentée par un enregistrement qui contient,
en plus d’un élément (entier, réel, caractère,…),
l’adresse de la cellule suivante (successeur), ce qui
permet de chainer les cellules entre elles.
50 - 5 12
nil
tete
300
8
Représentation Chaînée
Avantages:
 Agrandir la liste revient à créer un nouvel
élément en mémoire et à le lier à la liste chaînée
par une référence (adresse) vers son emplacement
mémoire.
 On peut insérer ou supprimer une valeur
n'importe où dans la liste, sans algorithme de
décalage .
50 - 5 12
nil
tete
300
15
9
Représentation Chaînée
Inconvénient :
 L’accès aux éléments d’une liste se fait de
manière séquentielle d’où, un algorithme de
parcours.
 La représentation chainée consomme toujours
plus d’octers par rapport à la représentation avec
un tableau.
50 - 5 12
nil
tete
300
300 200 100
10
Allocation de la mémoire
Chaque variable dans un programme a besoin
d’un certain nombre d’octets en mémoire.
Avec la déclaration des variables:
 simple (entier, réels, cara,…)
 structuré (tableau, enregistrement)
la réservation de la mémoire se fait de façon
automatique par l’emploi des déclarations des
variables.
Dans tous ces cas, le nombre d’octets à réserver
était déjà connu pendant la compilation.
On parle alors d’allocation statique des variables.
11
Allocation de la mémoire
Souvent, nous devons travailler avec des données
dont nous ne pouvons pas prévoir le nombre et la
grandeur lors de la programmation.
Ce serait alors un gaspillage de réserver toujours
l'espace maximal prévisible.
Il nous faut donc un moyen de gérer
manuellement la mémoire lors de l'exécution du
programme :
réserver des espaces en mémoire, et les
rendre lorsqu'ils ne sont plus utilisés.
On parle alors d’allocation dynamique (contrôlée).
On accède à une variable dynamique grâce à un
pointeur.
12
Les pointeurs
Les pointeurs sont des variables qui contiennent
l'adresse d’autres variables d’un type donné.
Si un pointeur P contient l'adresse d'une variable
A, on dit que 'P pointe sur A'.
Déclaration:
<Nom du Pointeur>: ^<typeObjet>;
pte : ^ entier;
ptr : ^ reel;
ptc : ^ cara;
ptr : ^ date_de_naissance;
………..
………..
13
Les pointeurs
Création d'une variable dynamique
ptr : ^reel;
allouer(ptr);
L’action allouer(ptr) permet de:
 réserver un emplacement mémoire de la taille
correspondant au type ptr
 mettre dans la variable ptr l'adresse de la zone
mémoire qui a été réservée
 accéder à l'emplacement pointé par ptr en
utilisant ptr^
ptr
ptr
400
14
Les pointeurs
ptr : ^reel;
Allouer(ptr);
ptr^ <- 12.56;
x, y : réel;
x <- 33,6; y <- 10,7;
Ptr <- @x;
Dans ce cas:
y <- x * 10 ; est équivalente à y <- ptr^ * 10 ;
ptr
ptr
400
ptr
400 12.56
y
x
33,6 10,7
ptr
600
x
15
Les pointeurs
Libérer la zone allouée au pointeur
ptr : ^reel; allouer(ptr);
Cas1:
ptr^ <- 12.56; Libérer(ptr);
Dans ce cas le compilateur récupère l’espace
 Cas2:
x, y : réel;
X <- 33,6; y <- 10,7;
Libérer(ptr);
Dans ce cas le compilateur ne récupère pas
l’espace car c’est une variable statique
ptr ptr
400
ptr
400 12.56
y
x
33,6 10,7
ptr
600
16
Les pointeurs
Libérer(ptr);
 On utilise l’adresse spéciale nil (ptr <- nil) pour
dire : aucune adresse mémoire n’est associée à ptr
Il est recommander de faire : ptr <- nil après
l’utilisation de l’action Libérer(ptr) car le pointeur
garde toujours l’adresse de la zone allouée
ptr
400 12.56
17
Les pointeurs
Exemple au tableau

0_Representationvyijjuu_des_donnees.pptx

  • 1.
    1 Représentation des données Définition: Unestructure de données (SDD) est une organisation des données pour en faciliter l’accès et la modification vis-à-vis d’un problème donné. Elle est définie par le type de base des composants ainsi que les opérations que l’on peut leur appliquer.
  • 2.
    2 Représentation des données Exemple les structures séquentielles: listes, piles, files  les structures arborescentes: arbres  les structures relationnelles: graphes  les structures à accès par clé: tables
  • 3.
    3 Choix de lastructure de données La manière de représenter les données en mémoire doit respecter deux contraintes: 1. Utiliser un minimum d’espace mémoire 2. Exécuter un nombre minimal d’instructions pour réaliser une opération Remarque: Le choix de bonnes (SDD) et de bons algorithmes peut faire la différence entre un programme s’exécutant en quelques secondes ou en quelques jours.
  • 4.
    4 Représentation contiguë Un tableauest une SDD :  Un ensemble d'éléments accessibles par leur indice  On le retrouve dans tous les langages de programmation  Tous les éléments d'un tableau doivent être du même type  L'accès à un élément par son indice est direct : les éléments d'un tableau sont contigus dans l’espace mémoire
  • 5.
    5 Représentation contiguë Exemple :Soit E={3, 21, 6, 13, 68, -4, 29} Cet ensemble peut être représenté par un tableau T schématisé comme suit : Tel que :1, 2, …,7 représentent les indices. On calcul l’adresse du ième élément par : @T[i]= @T[1] + (i-1)* Taille_du_type T[3]= @T[1] + 2* 4 (entier représenté sur 4 octets ) T[3]= 300+ 2* 4 = 308 (exp: @ de T[1] = 300) 3 21 6 13 68 -4 29 T 1 2 3 4 5 6 7
  • 6.
    6 Inconvénients de lareprésentation contiguë  Taille : doit être connu au moment de l'écriture de l’algorithme: le nombre de données que devra recevoir le tableau  Cellules contiguës : les opérations d'insertion et de suppression d'éléments nécessitent de faire des décalages  L’insertion peut être impossible si le tableau est plein
  • 7.
    7 Représentation Chaînée Une listechaînée est une (SDD) qui permet de stocker une suite d’éléments de même type. Chaque élément est stocké dans une cellule représentée par un enregistrement qui contient, en plus d’un élément (entier, réel, caractère,…), l’adresse de la cellule suivante (successeur), ce qui permet de chainer les cellules entre elles. 50 - 5 12 nil tete 300
  • 8.
    8 Représentation Chaînée Avantages:  Agrandirla liste revient à créer un nouvel élément en mémoire et à le lier à la liste chaînée par une référence (adresse) vers son emplacement mémoire.  On peut insérer ou supprimer une valeur n'importe où dans la liste, sans algorithme de décalage . 50 - 5 12 nil tete 300 15
  • 9.
    9 Représentation Chaînée Inconvénient : L’accès aux éléments d’une liste se fait de manière séquentielle d’où, un algorithme de parcours.  La représentation chainée consomme toujours plus d’octers par rapport à la représentation avec un tableau. 50 - 5 12 nil tete 300 300 200 100
  • 10.
    10 Allocation de lamémoire Chaque variable dans un programme a besoin d’un certain nombre d’octets en mémoire. Avec la déclaration des variables:  simple (entier, réels, cara,…)  structuré (tableau, enregistrement) la réservation de la mémoire se fait de façon automatique par l’emploi des déclarations des variables. Dans tous ces cas, le nombre d’octets à réserver était déjà connu pendant la compilation. On parle alors d’allocation statique des variables.
  • 11.
    11 Allocation de lamémoire Souvent, nous devons travailler avec des données dont nous ne pouvons pas prévoir le nombre et la grandeur lors de la programmation. Ce serait alors un gaspillage de réserver toujours l'espace maximal prévisible. Il nous faut donc un moyen de gérer manuellement la mémoire lors de l'exécution du programme : réserver des espaces en mémoire, et les rendre lorsqu'ils ne sont plus utilisés. On parle alors d’allocation dynamique (contrôlée). On accède à une variable dynamique grâce à un pointeur.
  • 12.
    12 Les pointeurs Les pointeurssont des variables qui contiennent l'adresse d’autres variables d’un type donné. Si un pointeur P contient l'adresse d'une variable A, on dit que 'P pointe sur A'. Déclaration: <Nom du Pointeur>: ^<typeObjet>; pte : ^ entier; ptr : ^ reel; ptc : ^ cara; ptr : ^ date_de_naissance; ……….. ………..
  • 13.
    13 Les pointeurs Création d'unevariable dynamique ptr : ^reel; allouer(ptr); L’action allouer(ptr) permet de:  réserver un emplacement mémoire de la taille correspondant au type ptr  mettre dans la variable ptr l'adresse de la zone mémoire qui a été réservée  accéder à l'emplacement pointé par ptr en utilisant ptr^ ptr ptr 400
  • 14.
    14 Les pointeurs ptr :^reel; Allouer(ptr); ptr^ <- 12.56; x, y : réel; x <- 33,6; y <- 10,7; Ptr <- @x; Dans ce cas: y <- x * 10 ; est équivalente à y <- ptr^ * 10 ; ptr ptr 400 ptr 400 12.56 y x 33,6 10,7 ptr 600 x
  • 15.
    15 Les pointeurs Libérer lazone allouée au pointeur ptr : ^reel; allouer(ptr); Cas1: ptr^ <- 12.56; Libérer(ptr); Dans ce cas le compilateur récupère l’espace  Cas2: x, y : réel; X <- 33,6; y <- 10,7; Libérer(ptr); Dans ce cas le compilateur ne récupère pas l’espace car c’est une variable statique ptr ptr 400 ptr 400 12.56 y x 33,6 10,7 ptr 600
  • 16.
    16 Les pointeurs Libérer(ptr);  Onutilise l’adresse spéciale nil (ptr <- nil) pour dire : aucune adresse mémoire n’est associée à ptr Il est recommander de faire : ptr <- nil après l’utilisation de l’action Libérer(ptr) car le pointeur garde toujours l’adresse de la zone allouée ptr 400 12.56
  • 17.