L’algorithmique autorise bien entendu l’utilisation des pointeurs. Vous déclarez un pointeur comme n’importe quelle
variable et au même endroit, sous le motclé VAR.
nom : pointeur sur type pointé
Par convention, les pointeurs commencent par la lettre p. Ce n’est pas une obligation mais vous vous y retrouverez
beaucoup mieux si vous suivez cette recommandation. Comme vu précédemment, le type pointé doit être du même
type que la variable pointée. Si vous créez un pointeur sur un entier, le pointeur sera de type entier : il pointe sur un
entier.
Var
txt :chaîne
ptxt :pointeur sur chaîne
cpt :entier
pInt :pointeur sur entier
Le pointeur peut recevoir une adresse statique, c’estàdire une adresse en hexadécimal que vous rentrez vousmême. C’est une affectation directe. En pratique cette méthode n’est que très rarement utilisée, sauf cas spécifiques
(si on sait qu’à telle ou telle adresse se trouve toujours la même donnée en toute circonstance) et vous préférerez
passer l’adresse d’une variable connue.
pointeur←adresse de variable
Avec les variables du petit exemple, cela donne :
Début
txt←"Hello World"
ptxt←adresse de txt
cpt←10
pInt←adresse de cpt
Tout comme en C, vous utiliserez l’étoile pour accéder au contenu de la variable pointée, tant en lecture qu’en
affectation. Suite du programme :
Afficher *ptxt
*ptxt←"Salut tout le monde"
Afficher txt
*pInt←20
cpt←cpt+1
Afficher cpt
À la fin, que contiennent txt et cpt ? Respectivement "Salut tout le monde" et 21.
Il se peut qu’un pointeur n’ait pas encore reçu d’adresse et donc pointe sur nulle part. C’est embêtant car c’est le
plantage assuré si vous tentez de l’utiliser. Pour éviter ce problème, vous lui affecterez une valeur générique, qui ne
représente rien, mais qui pourra cependant être testée. C’est la valeur NIL (Not Identified Link). En C, c’est NULL, et
en Java null. NIL est une sorte d’équivalent de zéro, mais qui est reconnue telle quelle (si vous comparez NIL et zéro,
vous aurez un retour faux).
pInt←NIL
Fin
Attention : c’est à vous de tester si un pointeur est positionné sur NIL avant de l’utiliser ! Un accès à un
pointeur contenant NIL provoquera une erreur.
Dernier point, mais ceci devrait vous sembler évident, vous avez le droit de créer des pointeurs sur n’importe quel
type de variable, y compris des enregistrements. C’est même l’un des piliers de l’utilisation des pointeurs. La suite du
chapitre y fera fortement appel.
Type
Structure tarticle
ref:chaîne
libelle:chaine
prix:réel
FinStruct
Var
- 6 -
© ENI Editions - All rigths reserved - Jonifar lina
168
variable et au même endroit, sous le motclé VAR.
nom : pointeur sur type pointé
Par convention, les pointeurs commencent par la lettre p. Ce n’est pas une obligation mais vous vous y retrouverez
beaucoup mieux si vous suivez cette recommandation. Comme vu précédemment, le type pointé doit être du même
type que la variable pointée. Si vous créez un pointeur sur un entier, le pointeur sera de type entier : il pointe sur un
entier.
Var
txt :chaîne
ptxt :pointeur sur chaîne
cpt :entier
pInt :pointeur sur entier
Le pointeur peut recevoir une adresse statique, c’estàdire une adresse en hexadécimal que vous rentrez vousmême. C’est une affectation directe. En pratique cette méthode n’est que très rarement utilisée, sauf cas spécifiques
(si on sait qu’à telle ou telle adresse se trouve toujours la même donnée en toute circonstance) et vous préférerez
passer l’adresse d’une variable connue.
pointeur←adresse de variable
Avec les variables du petit exemple, cela donne :
Début
txt←"Hello World"
ptxt←adresse de txt
cpt←10
pInt←adresse de cpt
Tout comme en C, vous utiliserez l’étoile pour accéder au contenu de la variable pointée, tant en lecture qu’en
affectation. Suite du programme :
Afficher *ptxt
*ptxt←"Salut tout le monde"
Afficher txt
*pInt←20
cpt←cpt+1
Afficher cpt
À la fin, que contiennent txt et cpt ? Respectivement "Salut tout le monde" et 21.
Il se peut qu’un pointeur n’ait pas encore reçu d’adresse et donc pointe sur nulle part. C’est embêtant car c’est le
plantage assuré si vous tentez de l’utiliser. Pour éviter ce problème, vous lui affecterez une valeur générique, qui ne
représente rien, mais qui pourra cependant être testée. C’est la valeur NIL (Not Identified Link). En C, c’est NULL, et
en Java null. NIL est une sorte d’équivalent de zéro, mais qui est reconnue telle quelle (si vous comparez NIL et zéro,
vous aurez un retour faux).
pInt←NIL
Fin
Attention : c’est à vous de tester si un pointeur est positionné sur NIL avant de l’utiliser ! Un accès à un
pointeur contenant NIL provoquera une erreur.
Dernier point, mais ceci devrait vous sembler évident, vous avez le droit de créer des pointeurs sur n’importe quel
type de variable, y compris des enregistrements. C’est même l’un des piliers de l’utilisation des pointeurs. La suite du
chapitre y fera fortement appel.
Type
Structure tarticle
ref:chaîne
libelle:chaine
prix:réel
FinStruct
Var
- 6 -
© ENI Editions - All rigths reserved - Jonifar lina
168
