« Introduction générale à la programmation/Pointeurs » : différence entre les versions

Contenu supprimé Contenu ajouté
Aucun résumé des modifications
Aucun résumé des modifications
Ligne 53 :
# On peut utiliser directement le nom de la fonction comme argument pour celle ci, en l'utilisant comme un pointeur.
 
== Exemple d'algorithme pour d'utilisation de pointeurs de fonctions ==
 
{{Exemple|titre=Exemple d'utilisation dusans pointeur
| contenu =
 
On écrit une fonction graphique.
 
Cette fonction dessine f. par exemple f est la forme graphique "_/-\_".
//INITIALISATION :
f est une FORME GRAPHIQUE
Ligne 71 ⟶ 72 :
Cela donne le résultat :
_/-\_
Avec la variablefonction f qui est fixe, la fonctiondessine_f() ne sait dessiner que la forme "_/-\_".
 
Si on remplace la valeur intrinsèque de f par un pointeur d'adressede fonction, la fonction dessine_f elle pourra dessiner n'importe quelle forme, qui sera pointée par le pointeur d'adresse f. Il suffit de faire pointer le pointeur sur une autre forme pour que la fonction dessine autre chose.
//INITIALISATION :
f est un POINTEUR
g, h sont des FORMES GRAPHIQUES
g := "/-\/-\"
h := "--\/--"
//.
//DECLARATION DE LA FONCTION dessine_f :
fonction dessine_f()
dessine f
fin de fonction
//.
//APPEL DE LA FONCTION dessine_f en modifiant le pointeur :
//LE POINTEUR f POINTE SUR g
f = g
dessine_f()
//LE POINTEUR f POINTE SUR h
f = h
dessine_f()
 
Cela donne le résultat :
/-\/-\
--\/--
la fonction dessine_f aura successivement dessiné les fonctions g puis h, avec la même fonction et le même appel au pointeur f, mais le pointeur pointait la première fois vers la fonction g, et la deuxième fois vers la fonction h.
}}
 
 
 
{{Exemple|titre=Même exemple en utilisant leun nompointeur de la fonction comme pointeur | contenu =
Si l'on programme en C, le nom d'une fonction est un pointeur. On peut donc l'utiliser comme argument d'une fonction.
cela donne quelque chose du type :
Ligne 110 ⟶ 88 :
//.
//DECLARATION DE LA FONCTION dessine_f :
fonction dessine_f (P_f)
dessine P_f
fin de fonction
//.
dessine_f(g) donnera :"/-\/-\"
dessine_f(h) donnera :"--\/--"
 
[ Explication à revoir Merci ] [[xhungab]]]
 
Dans la déclaration de la fonction, on demande de dessiner dessine_f, c'est à dire de récupérer l'adresse pointée par le pointeur du même nom que la fonction, et de dessiner ce qu'il y a à cette adresse...
 
Voir '''Exemple graphique (avec Gnuplot)''' ci-dessous.
Cette programmation n'est pas forcément très claire à la relecture, car on mélange la fonction (ce qu'elle doit faire : dessiner une forme graphique) avec ses propres arguments (on passe en argument la fonction à dessiner en allant pointer dessus, avec un pointeur ayant le même nom que la fonction).
 
}}