Académique Documents
Professionnel Documents
Culture Documents
ELy-Cours-C++ 02 2 2021-2022
ELy-Cours-C++ 02 2 2021-2022
Fonctions
Abderrahmane ELYOUSFI
2 2
1
17/10/2021
Introduction
Comme dans la plupart des langages, on peut en C++ découper
un programme en plusieurs fonctions.
Abderrahmane ELYOUSFI 3
Abderrahmane ELYOUSFI 4
2
17/10/2021
fonction
Une fonction possède trois aspects :
Abderrahmane ELYOUSFI 5
Prototype
prototype de la fonction indique uniquement le type
des données transmises et reçues par la fonction.
type nom-fonction(type-1,...,type-n);
Abderrahmane ELYOUSFI 6
3
17/10/2021
Abderrahmane ELYOUSFI 7
Renvoyer un résultat
Par définition, toutes les fonctions fournissent un
résultat d'un type que nous devons déclarer.
Son type doit être le même que celui qui a été spécifié
dans l'en-tête de la fonction.
Abderrahmane ELYOUSFI 8
4
17/10/2021
Renvoyer un résultat
L’instruction return
return <expression>;
évaluation de l'<expression>
conversion du résultat de l'expression dans le type
de la fonction
terminaison de la fonction
Abderrahmane ELYOUSFI 9
Renvoyer un résultat
L’instruction return
int max(int x, int y)
{
if(x>y)
return x;
else
return y;
printf("fin du prog "); //!!!!!!!!!!!!
}
Abderrahmane ELYOUSFI 10
5
17/10/2021
Renvoyer un résultat
Le type void:
Abderrahmane ELYOUSFI 11
nom-fonction(para-1,para-2,...,para-n)
12
Abderrahmane ELYOUSFI 12
6
17/10/2021
Abderrahmane ELYOUSFI 13
Déclaration
7
17/10/2021
15
Abderrahmane ELYOUSFI 15
// Définition de FB
int FB(int N, int M)
{
...
} Abderrahmane ELYOUSFI 16
8
17/10/2021
/* Définition de main */
main()
{
...
I = FA(2, 3); /* Appel de FA */
...
}
Abderrahmane ELYOUSFI 17
// Définition de main
main()
{
...
I = FA(2, 3); // Appel de FA
...
}
// Définition de FA
int FA(int X, int Y)
{
...
J = FB(20, 30); // Appel de FB
...
}
// Définition de FB
int FB(int N, int M)
{
...
}
Abderrahmane ELYOUSFI 18
9
17/10/2021
La fonction inline
La fonction inline
10
17/10/2021
La fonction inline
La fonction inline
11
17/10/2021
L’utilisation d’un même nom pour des opérations sur des types
différents est nommée surcharge.
12
17/10/2021
L’utilisation d’un même nom pour des opérations sur des types
différents est nommée surcharge.
13
17/10/2021
14
17/10/2021
15
17/10/2021
Cette fois, la distinction entre int & et const int & est
justifiée.
En effet, on peut très bien imaginer que chose I modifie la
valeur de la variable dont elle reçoit la référence, tandis
que chose II n’en fait rien.
Correspondance exacte :
Les différents types de base,
L’attribut de signe(en C++, char est différent de signed char et de unsigned
char);
L’attribut const peut intervenir dans le cas de références (il en
ira de même pour les pointeurs).
16
17/10/2021
Transmission d’arguments
17
17/10/2021
18
17/10/2021
19
17/10/2021
Un appel tel fct1 (exp) sera accepté quel que soit le type de exp. En
effet, dans ce cas, il y a création d’une variable temporaire (de
type int) qui recevra le résultat de la conversion de exp en int.
Pointeur de fonction
20
17/10/2021
Pointeur de fonction
Pointeur de fonction
Syntaxe de la déclaration
type (*identificateur)(paramètres) ;
21
17/10/2021
Pointeur de fonction
Pointeur de fonction
#include <iostream>
using namespace std;
int f(int i, int j) /* Définit une fonction. */
{
return i+j;
}
int (*pf)(int, int); /* Déclare un pointeur de fonction. */
int main()
{
int l=1, m=5; /* Déclare deux entiers. */
pf = &f; /* Initialise pf avec l’adresse de la fonction */
/* Utilise le pointeur pf pour appeler la fonction f et affiche le résultat : */
cout << (*pf)(l,m)<<endl;
return 0;
}
22
17/10/2021
Pointeur de fonction
#include <iostream>
using namespace std;
int somme(int i, int j){ return i+j;}
int multiplication(int i, int j){return i*j;}
int quotient(int i, int j){return i/j;}
typedef int (*fptr)(int, int);
int main(void)
{
int i=3,j=9;
Les variables
23
17/10/2021
24
17/10/2021
25
17/10/2021
Les variables locales ont une durée de vie limitée à celle d’une
exécution de la fonction dans laquelle elles figurent.
26
17/10/2021
27
17/10/2021
28
17/10/2021
29
17/10/2021
Le mécanisme proposé par C++ revient à fixer les valeurs par défaut
dans la déclaration de la fonction et non dans sa définition.
30
17/10/2021
La fonction main
31
17/10/2021
LA FONCTION MAIN
Abderrahmane ELYOUSFI 63
LA FONCTION MAIN
La fonction main peut également posséder des
paramètres formels.
Abderrahmane ELYOUSFI 64
32
17/10/2021
La fonction main
int main(int argc, char* argv[])
argc
variable fourni le nombre de mots composant la ligne de
commande y compris l'exécutable.
argv
tableau de chaînes de caractères correspondant chacune
à un mot de la ligne de commande.
argv[0]: = program name
argv[1]: = first argument
…
argv[argc-1]: last argument
Abderrahmane ELYOUSFI 65
La fonction main
#include <iostream>
Using namespace std;
int main(int argc, char *argv[])
{
int idx;
cout<< "le nombre d’arguments est:"<< argc;
for (idx = 0; idx < argc; idx++)
{
cout<<“argv[”<<idx<<“]=“<< argv[idx]<<endl;
}
return 0;
}
33
17/10/2021
Fin
34