Académique Documents
Professionnel Documents
Culture Documents
Les fonctions
1
16/02/2021
Les fonctions
La structure d’une fonction est la suivante
type liste de
nom paramètre(s)
retourné
void maFonction () {
{ corps:
// déclaration(s) déclarations
... … et / ou …
instructions
// instruction(s) }
...
}
Les fonctions
Cette fonction ne retourne rien « void » et ne prend aucun
paramètre
#include <iostream>
#include <cstdlib>
using namespace std;
void presenterPgm ()
Dans d’autre langage, {
ce serait une procédure. cout << "ce pgm …";
}
int main ()
{
presenterPgm();
return EXIT_SUCCESS;
}
4
2
16/02/2021
3
16/02/2021
prototypages
4
16/02/2021
Prototypage
La mise en œuvre d’une fonction se fait en 2 étapes:
La syntaxe d’un prototypage est:
Prototypage
10
5
16/02/2021
paramètres
11
void afficherSurface ()
{
// déclarations
int longueur = 12;
int largeur = 21;
// calcul de la surface
cout << "la surface = "
<< longueur * largeur;
}
6
16/02/2021
13
14
7
16/02/2021
15
afficherSurface(1,
1 22);
8
16/02/2021
Fonctions – paramètres
Que valent les paramètres ?
const char CAR = 'A';
int nbre = 12;
void sp (int p1,
char p2 )
{
...
}
Appels à sp
sp(…)
(…) p1 p2
sp (1, 'a'); 1 car 'a'
sp (1, 65); 1 65 => 'A'
sp ('A', 67); 'A' => 65 67 => 'C'
sp (1, CAR); 1 A => 'A'
sp (nbre, CAR+1); nbre => 12 A+1 => 'B'
17
12 'A'
const char CAR = 'A';
int nbre = 12;
void sp (int p1,
p1 p2
char p2 )
{ 12
1 'A'
'd'
...
}
sp (1, 'd');
...
sp (nbre, CAR);
18
9
16/02/2021
19
void sp (int );
void sp (int nbre)
{
cout << "----------\n";
cout << "nbre=" << nbre;
cout << endl;
nbre = nbre + 2; nbre=3
cout << "nbre=" << nbre; ----------
cout << "----------\n"; nbre=3
} nbre=5
Void main() ----------
{int nbre = 3; nbre=3
cout << "nbre=" << nbre;
cout << endl;
sp (nbre);
cout << "nbre=" << nbre;}
20
10
16/02/2021
21
22
11
16/02/2021
23
24
12
16/02/2021
25
26
13
16/02/2021
27
28
14
16/02/2021
30
15
16/02/2021
31
32
16
16/02/2021
33
34
17
16/02/2021
35
36
18
16/02/2021
37
38
19
16/02/2021
int nbre = 3;
sp (&nbre);
39
*nbre = *nbre + 2;
40
20
16/02/2021
41
42
21
16/02/2021
valeur de retour
43
44
22
16/02/2021
45
Conversion implicite
bool estImpair (int valeur)
{
return valeur % 2;
} Conversion explicite
bool estImpair (int valeur)
{
return bool(valeur % 2);
}
46
23
16/02/2021
47
48
24
16/02/2021
50
25
16/02/2021
inline
51
Fonctions – inline
Pour rendre un code plus rapide, il est possible de proposer au
compilateur de remplacer les appels de Fonctionss par les
instructions effectives.
26
16/02/2021
Fonctions – inline
53
surcharge
54
27
16/02/2021
Fonctions – surcharge
Plusieurs fonctions peuvent porter le même nom si
leurs signatures diffèrent.
diffèrent
Fonctions – surcharge
Les éléments suivants ne permettent pas de
différencier 2 surcharges
28
16/02/2021
Fonctions – surcharge
57
Fonctions – surcharge
// no 1
int plus (int gauche, double droite)
{
return gauche + (int)droite;
}
// no 2
int plus (double gauche, int droite)
{
return (int)gauche + droite;
}
int monEntier = 3;
double monDouble = 3.14;
29
16/02/2021
Fonctions – surcharge
59
Fonctions – surcharge
Le compilateur choisit toujours la meilleure fonction
possible selon les règles suivantes
• Une fonction correspond exactement à la signature de l'appel
• Une conversion simple est possible:
possible tableau ou fonction transformé
en pointeur ou inversement; une variable transformée en constante (pas
l'inverse!)
• Une promotion automatique est possible
short ou char vers int; float vers double
• Une conversion du genre int vers float est possible.
60
30
16/02/2021
61
62
31
16/02/2021
63
64
32
16/02/2021
65
66
33
16/02/2021
MANIPULATIONS:
7. Ecrire un programme c++qui calcule le périmètre, la section ainsi que
le volume d’une sphère de rayon R en utilisant des fonctions.
34