Académique Documents
Professionnel Documents
Culture Documents
Nom :
TP 03 :
Prénom :
Les fonctions et les fonctions
récursifs Groupe :
Date du TP :
Durée du TP : 04 heures.
Organisation : Afin de bien acquérir les savoirs liés au TP, il est conseillé de multiplier les
essais et manipulations avec le logiciel.
But de TP :
Le but de ce TP est de :
1) Utilisation de la syntaxe des fonctions de C++
2) Midrise de utilisation des functions
3) Utilisation des fonctions récursifs
Rappel de cours
1) Définition :
Les fonctions en C++ servent généralement à rendre le programme principal moins
encombrant ce qui va aider par conséquent détecter les erreurs logique et syntaxique plus
rapidement et efficacement.
On peut définir des fonctions qui vont effectuer une certaine tâche. On peut paramétrer
des fonctions qui vont permettre de paramétrer cette tâche et rendre ainsi les fonctions
réutilisables dans d'autres contextes. Une fonction pourra appeler d'autres fonctions et ainsi de
suite. Une fonction peut même s'appeler elle-même : on parle alors de fonctions récursives.
Une définition de fonction C ++ consiste en un en-tête de fonction et un corps de fonction.
Voici toutes les parties d'une fonction
Type de retour - Une fonction peut renvoyer une valeur. type_retour est le type de
données de la valeur renvoyée par la fonction. Certaines fonctions effectuent les
opérations sans renvoyer de valeur. Dans ce cas, type_retour est le mot clé void.
Nom de la fonction - C'est le nom actuel de la fonction. Le nom de la fonction et la
liste des paramètres constituent ensemble, la signature de la fonction.
Paramètres - Un paramètre est comme un espace réservé. Lorsqu'une fonction est
appelée, vous transmettez une valeur au paramètre. Cette valeur est appelée paramètre
ou argument réel. La liste de paramètres fait référence au type, à l'ordre et au nombre
de paramètres d'une fonction. Les paramètres sont facultatifs. c'est-à-dire qu'une
fonction peut ne contenir aucun paramètre.
Corps de la fonction - Le corps de la fonction contient une collection d'instructions
qui définissent ce que fait la fonction.
Exemple
void f (void) : une fonction f sans argument de sortie ni d’entrée
int f1 (void) : une fonction f1 avec un argument de sortie de type entier et sans argument
d’entrée.
void f2 (float) : une fonction f2 sans argument de sortie avec un argument d’entrée de type
réel
Exercice N1 :
1) En se basant sur les deux exercices précédents du TP N2 (calcul de factoriel et de
puissance), écrire un programme qui permet de calculer exp(x) donnée par la formule
suivante :
( ) x x2 x 3 xn
exp x =1+ + + +… … … … … … … …+
1! 2! 3 ! n!
n
x
Le calcul s’arrêtera lorsque ≤ 10− 4
n!
2) Ecrire le programme de calcul d’exponentiel déjà traité en utilisant cette fois ci le
factoriel et la puissance en fonction.
Solution de l’exercice N1 :
# #include <iostream>
#include <math.h>
using namespace std;
int i,n,k;
float x,r,p,m,d,s;
float fact(int);
float puiss(int,int);
float fact(int n)
{ p=1;
for(i=1;i<=n;i++)
{
p=p*i;
}return (p);}
float puiss(int x ,int k)
{
float l;
l=1;
for(i=1;i<=k;i++)
{
l=l*x;
}return (l); }
main()
{
cout<<"donner x entier positive ";
cin>>x;
while(x<0)
{
cout<<"donner un entier positive";
cin>>x;//pour assurer que le n est positive
}
k=1;
s=1;
d=1;
r=puiss(x,k);
m=fact(k);
while(d>=1e-4)
{r=puiss(x,k);
m=fact(k);
d=r/m;
s=s+d;
k++;
}
cout<<"exp("<<x<<")="<<s;}
{
cout<<" donner l";
cin>>l;} while (l<0);
w= fact(l);
cout<<w;
return 0;
system ("pause");
}
# include <iostream>
# include <stdlib.h>
using namespace std ;
int w,l;
int fact(int n)
{
if ((n==0 )||(n==1))
return 1;
else
return n*fact(n-1);
}
int main ()
{
do
{
cout<<" donner l";
cin>>l;} while (l<0);
w= fact(l);
cout<<w;
return 0;
system ("pause");
}
#include <iostream>
#include <math.h>
using namespace std;
int i,j,n,p,k;
float x,r,d,m,s;
float fact(int k)
{
if ((k==0 )||(k==1))
return 1;
else
return k*fact(k-1);
}
float puiss(int h, int n)
{
if ( n<0) n=-n;
if (n==0 )
return 1;
else
return h*puiss(h,n-1);
}
main()
{
cout<<"donner x entier positive ";
cin>>x;
while(x<0)
{
cout<<"donner un entier positive";
cin>>x;//pour assurer que le n est positive
}
j=1;
s=1;
d=1;
r=puiss(x,j);
m=fact(j);
while(d>=1e-4)
{r=puiss(x,j);
m=fact(j);
d=r/m;
s=s+d;
j++;
}
cout<<"exp("<<x<<")="<<s;
}
# include <iostream>
# include <stdlib.h>
using namespace std ;
void permutation1 (int*,int*);
void permutation2 (int,int);
void permutation3 (int&,int&);
main ()
{
int a=5;
int b=7;
cout<<"a="<<a<<" b="<<b<<endl;
permutation2 (a,b);
cout<<"a="<<a<<" b="<<b<<endl;
permutation1(&a,&b);
cout<<"a="<<a<<" b="<<b<<endl;
permutation3(a,b);
cout<<"a="<<a<<" b="<<b<<endl;
system("pause");
}
void permutation1(int *ptr1,int *ptr2)//passage par pointeur
{
int c=*ptr2;
*ptr2=*ptr1;
*ptr1=c;
cout<<"a="<<*ptr1<<" b="<<*ptr2<<endl;
}
void permutation2 (int a, int b)//passage par valeur
{
int c=a;
a=b;
b=c;
cout<<"a="<<a<<" b="<<b<<endl;
}
void permutation3 (int &a,int &b)//passage par reference
{
int c=a;
a=b;
b=c;
cout<<"a="<<a<<" b="<<b<<endl;
}