Vous êtes sur la page 1sur 20

Structures des données

1
1

Dans ce cours…

LES TABLEAUX (COMPLÉMENT)

LES LISTES CHAÎNÉES

LES ARBRES LES GRAPHES

Math Info (F.S.D.M.)

Cherkaoui M.M. Ouçamah

Ce qu’on fera dans ce cours…

2
2

Découvrir les différentes structures de données Apprendre à les utiliser :

Comment les définir ?

Comment les manipuler ? (leur ajouter des éléments, les diminuer,…)

Déterminer le domaine d’applications de chaque structure Apprendre à choisir la version de structure appropriée au cas traité

Math Info (F.S.D.M.)

Cherkaoui M.M. Ouçamah

Ce qu’on doit Apprendre dans ce cours…

3
3

Programmer au sein d’un groupeCe qu’on doit Apprendre dans ce cours… 3 Apprendre à décomposer un problème Apprendre séparer méthode

Apprendre à décomposer un problèmedans ce cours… 3 Programmer au sein d’un groupe Apprendre séparer méthode et besogne Apprendre à

Apprendre séparer méthode et besogneau sein d’un groupe Apprendre à décomposer un problème Apprendre à exprimer la méthode choisie Apprendre

Apprendre à exprimer la méthode choisieun problème Apprendre séparer méthode et besogne Apprendre à présenter son travail Math Info (F.S.D.M.)

Apprendre à présenter son travailséparer méthode et besogne Apprendre à exprimer la méthode choisie Math Info (F.S.D.M.) Cherkaoui M.M. Ouçamah

Math Info (F.S.D.M.)

Cherkaoui M.M. Ouçamah

Structure statique et structure dynamique

4
4
Structure statique et structure dynamique 4 Définition: Variable associée à une Structure statique C’est une

Définition: Variable associée à une Structure statique

C’est une variable dont le temps d’existence est égale ≈ à celui du programme qui la contient.

Une variable statique est mise à la disposition du programme qui la contient dès le commencement, Le programme conserve son droit d’accès à cette variable jusqu’à la fin de son exécution.

dès le commencement, Le programme conserve son droit d’accès à cette variable jusqu’à la fin de

Math Info (F.S.D.M.)

Cherkaoui M.M. Ouçamah

Variable statiques, Exemple

5
5

Début déclaration de A et de B Utilisation de A autres travaux Utilisation de A et B Utilisation de B

fin

Math Info (F.S.D.M.)

Cherkaoui M.M. Ouçamah

Structure statique et structure dynamique

6
6

Variable associée à une Structure dynamique

C’est une variable dont le temps d’existence peut être inférieur à celui du programme qui la contient.

Une variable dynamique est mise à la disposition du programme qui la contient à la demande de ce dernier; Il conserve ses privilèges d’accès à cette variable

mais peut décider de la restituer à tout moment

!

Math Info (F.S.D.M.)

Cherkaoui M.M. Ouçamah

structures dynamique Exemple

7
7

Début

Réservation de A

Utilisation de A Réservation de B Utilisation de A et B Restitution de A Utilisation de B

fin

Math Info (F.S.D.M.)

Cherkaoui M.M. Ouçamah

Structure dynamique : Internet

8
8

Optimisation de l’utilisation de la mémoire du

système.

Amélioration, à mémoires égales, de la précision de calcul.

Nouvelle possibilité en Programmation:

Augmentation (ajout d’éléments) et diminution des structures plus souple.

Minimisation des coûts des opérations (insertion suppression) au milieu de la structure.

Math Info (F.S.D.M.)

Cherkaoui M.M. Ouçamah

Inconvénients et Contraintes associées aux

variables dynamiques

9
9

On perd l’accès direct à la variable

Le programmeur doit prendre à sa charge la gestion des allocations et restitutions de la mémoire qu’il veut utiliser

Le programmeur doit faire le gestion des exceptions.

( Plus de liberté

donc Plus de responsabilité! )

Math Info (F.S.D.M.)

Cherkaoui M.M. Ouçamah

Exemple optimisation mémoire: 10  Début déclaration de A et de B Utilisation de A
Exemple optimisation mémoire:
10
 Début
déclaration de A et de B
Utilisation de A
Utilisation de B
 fin
 Début
Réservation de A
Utilisation de A puis libération de A
Réservation de B
Utilisation de B puis libération de B
 fin

Math Info (F.S.D.M.)

Cherkaoui M.M. Ouçamah

Exemple: optimisation mémoire:

11

Exemple: optimisation mémoire: 11 Espace utilisé par les autres A B Espace Libre Mémoire système

Espace utilisé par les autres

A

B

Espace Libre

Mémoire système

Espace utilisé par les autres

A

Espace Libre

Mémoire système

Espace utilisé par les autres

B

Espace Libre

Mémoire système

A Espace Libre Mémoire système Espace utilisé par les autres B Espace Libre Mémoire système

Math Info (F.S.D.M.)

Cherkaoui M.M. Ouçamah

Attribution de mémoire pour la variable

dynamique

12
12

Lorsqu’en un moment donné, on a besoin de mémoire pour « loger » une nouvelle variable dynamique, on s’adresse au système Par conséquent:

Il faut :

- Formuler une demande

- Attendre la réponse

Math Info (F.S.D.M.)

Cherkaoui M.M. Ouçamah

Demande de mémoire dynamique

13
13

Phase 1 : formuler la demande

Préciser ce qu’on veut (Taille et Structuration)

Phase 2 : Connaître la réponse

Convenir d’une zone de communication où :

Le Système écrira sa réponse. Le programme lira cette réponse.

Zone de communication

Obtenir (mémoire structurée)sa réponse.  Le programme lira cette réponse. Zone de communication Math Info (F.S.D.M.) Cherkaoui M.M.

Math Info (F.S.D.M.)

Cherkaoui M.M. Ouçamah

Protocole d’attribution de M. Dyn.

14
14

Définition : Un pointeur est une variable qui contient l’adresse d’une « autre » variable.

Conséquence 1 : la zone de communication est au moins constituée d’un pointeur.

Conséquence 2 : comme le pointeur doit être accessible en

lecture Et/ou en écriture par le programme donc :

Pointeur (de zone de communication) est 1 variable du programme

Remarque: ce pointeur peut être statique ou dynamique.

Math Info (F.S.D.M.)

Cherkaoui M.M. Ouçamah

Protocole de communication

15
15

Deux cas :

« Système » peut attribuer cette mémoire alors :

il écrit, dans la zone de communication, l’adresse de la plage mémoire allouée au programme.

« Système » ne peut pas attribuer la mémoire :

il écrit la valeur NULL dans la zone de communication.

Math Info (F.S.D.M.)

Cherkaoui M.M. Ouçamah

Allocation de mémoire dynamique

16
16

Zone de communication

Obtenir (mémoire structurée) )

Pointeur

Obtenir (mémoire structurée)de communication Obtenir (mémoire structurée ) Pointeur Exemple : Début { Algo_Exp_alloc ptr de type pointeur

Exemple :

Début {

Algo_Exp_alloc

ptr de type pointeur sur Entier Long ;

ptr

si

obtenir (mémoire pour un Entier Long) (ptr # NULL)

obtenir ( mémoire pour un Entier Long ) ( ptr # NULL ) écrire (« système

écrire système a attribué la mémoire située à l’adresse », ptr) sinon écrire le système n’a pas attribué de mémoire ») fin

}

Math Info (F.S.D.M.)

Cherkaoui M.M. Ouçamah

Obtentions consécutives de M.D.

17

Obtentions consécutives de M.D. 17  Exemple : Améliorer la fluidité de la circulation dans un

Exemple : Améliorer la fluidité de la circulation dans un carrefour en modifiant les périodes d’alternance des feux.

À chaque passage de véhicule, on note :

l’heure de son passage

le type du véhicule

HEURE

TYPE

Pour assurer une bonne gestion de la mémoire, on aura

recours à chaque passage de véhicule à de la mémoire

dynamique

assurer une bonne gestion de la mémoire, on aura recours à chaque passage de véhicule à

Math Info (F.S.D.M.)

Cherkaoui M.M. Ouçamah

Obtentions consécutives de M.D.

18

Obtentions consécutives de M.D. 18 Soit Ptr un pointeur qui peut contenir l’adresse d’un nouvel élément

Soit Ptr un pointeur qui peut contenir l’adresse d’un nouvel élément la demande de M.D. s’écrit :

Ptr

nouvel élément la demande de M.D. s’écrit : Ptr obtenir (mémoire pour Heure et type) Ptr

obtenir (mémoire pour Heure et type)

Ptr
Ptr

HEURE

TYPE

Question : Que faire lorsqu’un autre véhicule passe ?

Il faut demander à nouveau de la M.D.

Question : Quel pointeur utiliser pour formuler la demande ?

un pointeur autre que Ptr pour ne pas perdre l’adresse du 1er véhicule.

Question : De combien de pointeurs aura-t-on besoin ?

Autant de pointeurs qu’il passera de voitures !

Question : De combien de pointeurs aura-t-on besoin ? • Autant de pointeurs qu’il passera de

Math Info (F.S.D.M.)

Cherkaoui M.M. Ouçamah

Obtentions Consécutives de M.D.

19
19

Conséquence : les pointeurs qui contiennent les adresses des élément ne peuvent pas être tous des

variables statiques.

Que faire ?

Un Exemple vécu :

Opérations de guichet nécessitant un imprimé:

Les accoutumés gardent toujours sur eux un imprimé en réserve, pour ne pas faire la queue deux fois !

Math Info (F.S.D.M.)

Cherkaoui M.M. Ouçamah

Obtentions consécutives de M.D.

Solution :

20

lors de la demande de mémoire on demandera en même temps:

De la place mémoire pour noter l’heure et le type du véhicule

Un pointeur de réserve pour noter l’adresse de l’élément suivant:

Ptr

Pointeur HEURE TYPE Pointeur
Pointeur
HEURE
TYPE
Pointeur