:: Enseignements :: ESIPE :: E3INFO :: 2008-2009 :: Programmation C ::
![[LOGO]](http://igm.univ-mlv.fr/ens/resources/mlv.png) | Fonctions avancées |
Le but de ce TP est de manipuler les pointeurs de fonction et les fonctions à nombre variable d'arguments.
Exercice 1 - Affichage de la courbe d'un cosinus
Cet exercice consiste à compiler et exécuter un programme affichant la courbe du cosinus (abscisses et ordonnées positives).
Il prend comme paramètre le nombre de pas (nb_pas) pour une unité sur les deux axes.
Il remplit un tableau de N (fixé à 100) valeurs à l'aide de la fonction cos.
Chaque valeur correspond à un pas de l'axe.
Exemple: si nb_pas = 5, la case i du tableau correspondra à la valeur du cosinus à i/5.
Ces échantillons sont alors placés dans une matrice de caractères représentant la courbe sur un plan.
Cette matrice est ensuite affichée.
-
Télécharger les fichiers affichage.c, affichage.h et exemple.c.
Faire un Makefile qui compile le programme exemple.
Exécuter le programme.
- Faire varier le nombre de pas. Qu'observez-vous?
L'exécution du programme doit donner le résultat suivante:
Exercice 2 - Pointeurs de fonction
Nous souhaitons maintenant pouvoir remplir le tableau avec n'importe quelle fonction qui prend un double en argument et renvoie un double.
Que faut-il faire? Implémenter votre solution.
Tester avec la fonction sin puis une fonction maison.
Indication : utiliser un pointeur de fonction.
Exercice 3 - Arguments et Pointeurs de fonction
On souhaite maintenant passer au programme le nom de la fonction à utiliser.
Pour cela, vous utiliserez un tableau d'élements qui ont dans leur structure un nom de fonction et d'un pointeur sur la fonction associée.
Ce tableau sera rempli en dur dans le programme.
Indication : penser à écrire une fonction qui retourne le pointeur de fonction associé à un nom.
Exercice 4 - Fonctions à nombre variable d'arguments
Implémenter une fonction compose qui prend un double x et un nombre variable de pointeurs sur fonction.
Elle retournera la valeur de la composition des fonctions pour la valeur x.
Par exemple, compose(x,&f,&g) retournera g(f(x)).
© Université de Marne-la-Vallée