Vous êtes sur la page 1sur 9

Université Djillali Liabès de Sidi Bel Abbès

Faculté de génie électrique - Département d'électrotechnique


Parcours : master à cursus intégré licence
Module : info2

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

TPN2 C++ présentée par Mme NOUAR Page 1


2) Appel de fonction  :
Pour utiliser une fonction en C++, on doit appeler cette fonction dans le programme
principal, le contrôle du programme est transféré à la fonction appelée. Une fonction appelée
exécute une tâche définie et quand son énoncé de retour est exécuté ou lorsque la fin de
fonction est atteinte, il renvoie le contrôle du programme au programme principal. Pour
appeler une fonction, on doit simplement passer les paramètres requis avec le nom de
fonction, et si la fonction renvoie une valeur, alors on peut stocker la valeur retournée.

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 :

TPN3 C++ présentée par Mme NOUAR Page 2


Exercice N2  :
1) Réécrire le programme qui permet de calculer le factoriel avec une fonction
récursive
2) Réécrire le programme qui permet de calculer la puissance avec une fonction
récursive
3) Réécrire le programme qui permet de calculer l’exponentiel avec les deux
fonctions récursives précédentes

Solution de l’exercice N2:

TPN3 C++ présentée par Mme NOUAR Page 3


Exercice N3  :
Ecrire un programme qui permet de faire une permutation de deux valeurs en utilisant un e
foction, l’appel de variables doit se faire
1) Passage par valeur
2) Passage par pointeur
3) Passage par reference

Solution de l’exercice N3:

TPN3 C++ présentée par Mme NOUAR Page 4


Solution du TP 3
1) Solution de l’exercice N1-1 :
#include <iostream>
#include <math.h>
using namespace std;
int i,n;
float x,r,p,f,s;
main()
{
cout<<"donner n entier positive ";
cin>>x;
while(n<0)
{

cout<<"donner un entier positive";


cin>>x;//pour assurer que le x est positive
}
f=1;s=1;i=1;p=1;r=1;
while (r>1e-4)
{
p=p*i;
f=f*x;
r=f/p;
s=s+r;
i++;
}
cout<<" l'exponentielle de "<<x<<" de est "<<s;
}

TPN3 C++ présentée par Mme NOUAR Page 5


1) Solution de l’exercice N1-2 :

# #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;}

TPN3 C++ présentée par Mme NOUAR Page 6


2) Solution de l’exercice N2 :

a. Solution de l’exercice N2-1 :


# 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");
}

b. Solution de l’exercice N2-2 :

# 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");
}

TPN3 C++ présentée par Mme NOUAR Page 7


c. Solution de l’exercice N2-3 :

#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;
}

TPN3 C++ présentée par Mme NOUAR Page 8


Solution de l’exercice N3 :

# 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;
}

TPN3 C++ présentée par Mme NOUAR Page 9

Vous aimerez peut-être aussi