www.facultedegenie.net
SITE INDEPENDANT (non-officiel)
Koliet al-Handassah
FACULTE DE GENIE (LIBAN)
Faculty of Engineering (Lebanon)

SPECIAL... Cliquer ici... Click here...
(Ad/info)

Zone PROF - Zone INGENIEUR - Zone ETUDIANT - Zone VISITEUR

Next Page N.119

* Guest-Book *
* News-Group *
Suggest update

f
a
c
u
l
t
e
d
e
g
e
n
i
e
.
n
e
t

=

w
w
w
.
f
a
c
u
l
t
e
d
e
g
e
n
i
e
.
n
e
t

Dr.M.Z.

Informatique : PASCAL (Chapitre IX)

POINTEURS
(c) Dr Mustapha ZIADE'

Dr.M.Z.

This text copyright = www.ziade.net
Ce texte vient de ©
www.ziade.net

(IX.1) Variables statiques, Variables dynamiques

(IX.1.a) Variables statiques

Une variable est statique quand sa taille totale (maximale) est fixée à la compilation. En particulier, les tableaux sont des variables statiques en Pascal.

(IX.1.b) Variables dynamiques

Une variable est dynamique quand sa taille totale (maximale) n'est pas fixée à la compilation. D'une certaine façon un fichier ressemble à une variable dynamique. Il est possible en Pascal de créer des variables (de type pointeurs) dynamiquement (c.-à-d. pendant l'exécution, donc après la compilation). Dans toute la suite de ce chapitre nous allons volontairement nous limiter aux listes chaînées simples.

© Dr Mustapha Ziade'

Dr.M.Z.

(IX.2) Déclaration d'une Liste chaînée simple

Voici un exemple typique qui crée un type pointeur T_PTR, et qui déclare une variable pointeur PTR.

TYPE T_PTR = ^T_REC ;

T_REC = RECORD

NOM, PRENOM : STRING[25] ;

{… : … ; } MOYENNE : REAL ;

SUIVANT : T_PTR ;

END ; {fin du record}

VAR PTR : T_PTR ;

Attention: La variable pointeur PTR contient seulement une adresse mémoire (c.-à-d. un nombre).
A cette adresse mémoire se trouvent les données (NOM, PRENOM, …, MOYENNE, SUIVANT).
Donc la variable pointeur PTR ne contient pas directement les données.

De même le pointeur SUIVANT contient seulement l'adresse du pointeur qui est le suivant de PTR.
C'est le programmeur qui choisit les enchaînements, par exemple:

PTR1^.SUIVANT := PTR2 ; PTR2^.SUIVANT := PTR3 ; { … ; }

Mais le programmeur ne choisit pas les adresses mémoires (qui dépendent de la disponibilité).
Attention: Le premier pointeur PTR1 est très important car il permet d'avoir tous les autres (suivants).

© Dr Mustapha Ziade'

Dr.M.Z.

(IX.3) Création d'une Liste chaînée simple

Les pointeurs sont créés de façon dynamique pendant l'exécution. L'instruction NEW(PTR) crée un nouveau pointeur c.-à-d. réserve un nouvel espace mémoire (qui était initialement libre). Exemple:

NEW(PTR1TETE) ;

Le mot réservé NIL indique que le pointeur ne contient pas d'adresse, donc le pointeur pointe sur rien. Par exemple pour dire que la liste PTR1TETE est vide il faut écrire:

PTR1TETE := NIL ;

© Dr Mustapha Ziade'

Dr.M.Z.

(IX.4) Parcours d'une Liste chaînée simple

(IX.4.a) Exemple typique de parcours itératif:

PROCEDURE PARCOURS( PTR1TETE : T_PTR ) ;

VAR PTR :T_PTR ;

BEGIN

PTR := PTR1TETE ;

WHILE PTR<>NIL DO

BEGIN

WRITELN( PTR^.NOM, '_' , PTR^.PRENOM, '_' , PTR^.MOYENNE ) ;

PTR := PTR^.SUIVANT ;

END ; {du WHILE}

END ;

(IX.4.b) Exemple typique de parcours récursif:

PROCEDURE PARCOURS_RECURSIF( VAR PTR : T_PTR ) ;

BEGIN {* Cette procédure doit être utilisée en écrivant: PARCOURS_RECURSIF(PTR1TETE); … *}

IF PTR<>NIL THEN

BEGIN

WRITELN( PTR^.NOM, '_' , PTR^.PRENOM, '_' , PTR^.MOYENNE ) ;

PARCOURS_RECURSIF( PTR^.SUIVANT ) ;

END ; {du IF}

END ;

© Dr Mustapha Ziade'

Dr.M.Z.

(IX.5) Ajouter un élément à une Liste chaînée simple

(IX.5.a) Insertion du nouvel élément au début de la Liste chaînée:

PROCEDURE INSERE_DEBUT( VAR PTR1TETE : T_PTR ) ;

VAR PTR :T_PTR ;

BEGIN

NEW(PTR) ;

PTR^.NOM := '…' ; PTR^.PRENOM := '…' ; PTR^.MOYENNE := 50 ; {* exemple *}

PTR^.SUIVANT := PTR1TETE ;

PTR1TETE := PTR ;

END ;

(IX.5.b) Insertion d'un nouvel élément à la fin de la Liste chaînée:

PROCEDURE INSERE_FIN( VAR PTR : T_PTR ) ;

BEGIN {* Cette procédure doit être utilisée en écrivant: INSERE_FIN(PTR1TETE); … *}

IF PTR1TETE=NIL THEN INSERE_DEBUT( PTR )

ELSE INSERE_FIN( PTR^.SUIVANT ) ;

END ;

(IX.5.c) Exemple d'insertion d'un nouvel élément à l'intérieur de la Liste chaînée:

PROCEDURE INSERE_INTERIEUR( VAR PTR : T_PTR ) ;

VAR PTR2NOUVEAU :T_PTR ;

BEGIN {* Cette procédure doit être utilisée en écrivant: INSERE_INTERIEUR(PTR1TETE); … *}

IF PTR^.NOM > 'TOTO' THEN {* insertion de PTR2NOUVEAU après celui de 'TOTO' *}

BEGIN

NEW(PTR2NOUVEAU) ;

PTR2NOUVEAU ^.NOM := '…' ; {* etc. *}

PTR2NOUVEAU ^.SUIVANT := PTR ;

PTR := PTR2NOUVEAU ;

END

ELSE INSERE_INTERIEUR( PTR^.SUIVANT ) ;

END ;

© Dr Mustapha Ziade'

Dr.M.Z.

(IX.6) Enlever un élément à une Liste chaînée simple

...

[Sorry la suite n'est pas disponible sur internet.]

© Dr Mustapha Ziade'

Dr.M.Z.

(I) Introduction Générale

(II) Erreurs ou Limites des Calculs Numériques et informatiques *****

(III) Types, Opérateurs, Fonctions et Procédures prédéfinis

(IV) Partie Déclarative d'un programme

(V) Structure d'un programme

(VI) Affectations, Tests, Boucles

(VII) Fonctions, Procédures, Récursivité

(VIII) Fichiers Textes, Fichiers Binaires

(IX) Pointeurs

© Dr Mustapha Ziade'

Dr.M.Z.

(i) FACULTE DE GENIE, Liban. Faculty of Engineering, Lebanon. Faculté de Génie, Université (i) Faculté de Génie, Liban

Zone VISITEUR -
Zone ETUDIANT -

- Zone INGENIEUR
-
Zone PROF...

News, FACULTE DE GENIE, Liban. Faculty of Engineering, Lebanon. Faculté de Génie, Université
Faculté de Génie NEWS


ßáíÉ ÇáåäÏÓÉ - áÈäÇä


Faculty of Engineering
Leban
on

FACULTE DE GENIE
(Génie) LIBAN

Arabic...

1995-2010 (c) Dr M. ZIADE'

SITE INDEPENDANT (non-officiel)
www.facultedegenie.net

E-mail:_webmaster©facultedegenie.net

liste index (liste)
Home (p.1)
Admissions
Examen d'entrée

Départements
Tronc Commun
Génie Civil
Génie Electricité &...
Génie Mécanique

Equipements
Laboratoires
Bibliothèques
Centres informatiques
Photos

Divers
Autres Liens/Links
Histoire des Sciences
Liban / Lebanon
fumer=non, smoke=no

Contacts
Les C.V.
Branche 1
Branche 2 , Branche 3
Organigrammes

Arabic Ar.
English
Francais

Débouchés
Masters (DEA)
News-Group

PC-GENIE
Langage Pascal
Design ZIADEM

Logos+Sites Etudiants
Blog ...
Guest-Book

Suggest update (10a)

>> Next Page N.119 >>

Dr.M.Z.

SPECIAL... Cliquer ici... Click here... (net sponsor)