Académique Documents
Professionnel Documents
Culture Documents
1) Notions de base
Une fonction est un sous programme qui contient une ou plusieurs instructions, et qui
plusieurs fonctions.
Le programme principal
//corps de la fonction
Le type retourné par une fonction peut être n’importe quel type valide sauf un tableau.
Si une fonction ne retourne aucune valeur alors son type doit être void. Le nom de la
fonction doit être un identificateur légal. Les paramètres sont les variables qui
[Date] 1
Th. K. DAGBA, ENEAM/UAC 2022
accueillent les valeurs des arguments passés à la fonction lors de l’appel. Si la fonction
Ex1 :
#include<iostream>
#include<cmath>
using namespace std;
int pgcd(int x, int y); // prototype de la fonction
int main()
{
int n, m, d;
double z;
cout<< "n=";
cin>> n
cout<<"m=";
cin>> m;
d =pgcd(n,m);
cout<<"le pgcd des nombres"<<n <<" et "<< m <<" est"<< d <<endl;
//z= (m+pgcd(m,n))/sqr(m+n);
return 0;
}
[Date] 2
Th. K. DAGBA, ENEAM/UAC 2022
Rmq :pgcd(n,m)= pgcd(n-m,m)
#include<iostream>
using namespace std;
void pgcd(int x, int y); // prototype de la fonction
int main()
{
int n, m, d;
cout<<"n=";
cin>> n
cout<<"m=";
cin>> m;
cout << "le pgcd des nombres"<<n <<" et "<< m <<" est:"
pgcd(n,m);
cout<<endl;
return 0;
}
[Date] 3
Th. K. DAGBA, ENEAM/UAC 2022
Normalement, un appel de fonction est une rupture de séquence : à l'endroit où un
Une fonction en ligne est le contraire de cela : là où l'appel d'une telle fonction
affectifs à la place des arguments formels. Cela se fait dans un but d'efficacité.Un
tel traitement ne peut convenir qu'à des fonctions fréquemment appelées, de petite
taille et rapides.
En C++ on indique qu'une fonction doit être traitée en ligne en faisant précéder sa
Ex :
#include <iostream>
using namespace std;
inline void incremente(int &x)
{
++x;
}
int main()
{
int z = 0;
incremente(z);
cout<<"z="<< z <<endl;
}
Une fonction peut retourner une référence. Quand une fonction retourne une
existe en C++ beaucoup d’utilisation pour la référence retournée par une fonction.
L’une des applications permet à la fonction d’être utilisée à la partie gauche d’une
affectation :
[Date] 4
Th. K. DAGBA, ENEAM/UAC 2022
Ex : Retour de référence
#include<iostream>
using namespace std;
double &f();//f() retourne une référence de type double
double val = 100.0;
int main()
{
double x;
cout <<f() <<endl; // affiche la valeur de val
x= f() ; // assigne la valeur de val à x
f() = 99.1 ; // change la valeur de val
cout <<f() <<endl ; //affiche la nouvelle valeur de val
return 0 ;
}
double f()
{
return val;
}
Ex :
#include <iostream>
int toto=0;
int &f()
{ return toto;}
int main ()
{
f()=8;
cout<<toto<<"";
f()++;
cout<< f() <<endl;
}
#include <iostream>
using namespace std ;
double &changer(int i);
double vals[] = {1.1, 2.2, 3.3, 4.4, 5.5};
int main()
{
int i;
cout<< "Avant modifications:";
for(i=0; i<5; i++)
[Date] 5
Th. K. DAGBA, ENEAM/UAC 2022
cout<<vals[i] << ‘\t’<<endl;
changer(1) = 5298.23;
changer(3) = -98.8;
return 0 ;
double&changer(int i)
returnvals[i] ;
4) Transmission de paramètres
Ex :
int main()
{
int a = 1, b = 10;
cout<< "a =" << a <<", b =" << b <<endl;
[Date] 6
Th. K. DAGBA, ENEAM/UAC 2022
permute(a,b);
cout<< "a=" << a <<", b =" << b <<endl;
}
En C++ il est possible de définir une fonction qui modifie la valeur de ses
Ex :
5) Récursivité
Une fonction récursive est une fonction qui s’appelle elle-même.
Exemples de fonctions récursives :
[Date] 7
Th. K. DAGBA, ENEAM/UAC 2022
1) n! =n*(n-1)*(n-2)…1 ; 1!= 1 ; 0!=1 ; n! = n*(n-1)!
2) suite de Fibonacci
fibonacci(0) = 0
fibonacci(1) = 1
fibonacci(n) = fibonacci(n-1) + fibonacci(n-2)
// Calcul de n!
#include <iostream>
unsigned fact(unsigned n)
{
if(n == 0)
return 1;
else
return n*fact(n-1);
}
int main()
{
for(int i= 0 ; i <5; i++)
cout<<i<<“!=”<< fact(i) <<endl;
}
6) Surcharge de fonction
La surcharge de fonction est une technique qui permet d'attribuer le même nom à
plusieurs fonctions.
[Date] 8
Th. K. DAGBA, ENEAM/UAC 2022
char minimum(char a, char b)
{ return ((a<b) ? a :b) ;}
générique.
template<class T>
T minimum(T a, T b)
{return ((a<b) ? a : b) ;}
int main()
{
int i = minimum(10,20);
float f = minimum(10.0, 25.0);
char c = minimum(‘a’, ‘W’);
}
Exemple2 :
template<class T1, class T2>
void carre(T1 &x, T2 &y)
{
x *=x ;
y *=y ;
}
EXERCICES DE PROGRAMMATION
[Date] 9
Th. K. DAGBA, ENEAM/UAC 2022