Representation dynamyque                                             

Accueil Sommaire Le cours WEB Outils les examens bts Cycle d'apprentissage


Remonter Exercices Ecriture objet


La représentation dynamique

Nous allons utiliser la notion de pointeur: un pointeur est une variable qui contient comme valeur exclusivement une adresse mémoire qui pointe sur une donnée de type standard ou  structuré.

Types         pointe = ^ entier 

Variables  pointe pteur

Le pointeur contient donc l'adresse de la variable pointée.

Pour faire la différence entre adresse et entier celles-ci seront préfixées par le caractère @.       


ALLOUER(pteur)

Créer un bloc et mettre  l’adresse dans pteur

Ou la commande @ qui permet de récupérer l'adresse d'une variable.

exemple: pteur <- @ calcul               si calcul est de type entier.


  Pteur^ <- 352

Mettre la valeur 352 dans le bloc pointé par pteur.


Libérer le bloc et mettre nul dans pteur 

L'adresse NUL  est l'adresse invalide. NIL ou NULL dans certains langages.

ATTENTION :Seule la commande LIBERER libère la case mémoire. La mémoire peut ne plus être disponible.

BUG IBM sur les imprimantes : à chaque impression de page , une case mémoire est utilisée mais mal libérée ce qui fait qu’au bout de 15 jours en fonction de l’utilisation , il était impossible de monter une impression en mémoire.


Les déclarations :

CONSTANTES maxelt = 100

Définition du type pile

TYPES  pile = ^  bloc

                               bloc = ENREGISTREMENT

                               entier elt

                               pile eltsuivant

                               FIN

Affectation du type pile à des variables

VARIABLES pile alcaline  

On constate que la déclaration se rappelle elle même. 

Ce qui donne le schéma précédent.


Les opérations :

INITIALISER LA PILE  

 PROCÉDURE initpile (variables  pile pil       )

DEBUT

                                               pil<-nul 

FIN

TESTER SI LA PILE EST VIDE

 

 FONCTION pilevide (variables pile p) : BOOLEEN

DEBUT

                                               pilevide<-pil=nul

                                               retourne(pilevide)

FIN

DEPILER UN ELEMENT DE LA PILE

 PROCÉDURE dépiler (variables  pile pil,  Entier valeur )

VARIABLES pile ucar

DEBUT

                               SI  NON pilevide(pil) ALORS                         

                                               etape1 valeur<-pil^.elt

                                               etape2 ucar <- pil

                                               etape3 pil <- pil^.eltsuivant

                                               etape4 LIBERER(ucar)       

                               SINON

                                               ECRIRE ("la pile est vide")          

                                               valeur<-0

                               FINSI

FIN

                ETAPE 1 : on sort le premier élément de la pile dans valeur.

                ETAPE 2 : on garde l’adresse du premier élément  dans ucar.

                 ETAPE 3 : on met dans le pointeur de début de la pile l’adresse du deuxième élément . 

                ETAPE 4 : on libère la case du premier élément grâce à ucar.  


                EMPILER UN ELEMENT DANS LA PILE    

PROCÉDURE  empiler(variables  pile pil,Entier valeur ) 

VARIABLES pile ucar

DEBUT

                               Etape1 ucar <-pil

                               etape2 ALLOUER(pil)

                               etape3 Pil^.elt <-valeur

                               etape4 Pil^.eltsuivant <-ucar

FIN

ETAPE 1 : on garde l’adresse du premier élément dans ucar.

ETAPE 2 : on alloue une nouvelle zone mémoire.

            ETAPE 3 : on met la valeur dans cette nouvelle zone mémoire. 

             ETAPE 4 : on relie la liste précédente grâce à ucar au nouvel élément créé.