Académique Documents
Professionnel Documents
Culture Documents
Procédure Fonctions
Procédure Fonctions
Fonctions et procédures
• Fonction, déclaration, définition, utilisation
• Type de retour, paramètres
• Procédure
• Paramètres en entrée ou en sortie
• Récursivité et itérations
• Macros
• Exemple complet
fonctions et procédures 2
Fonctions
• Déclaration:
int mafonction(int);
• Définition:
int mafonction(int x) {
int a; ...
return(a);
}
• Utilisation:
int x = 5; int y = mafonction(x);
fonctions et procédures 3
Fonctions
• Type de retour:
int mafonction(int);
• Type du paramètre:
int mafonction(int);
• Nom:
int mafonction(int);
a maFonction(a)
maFonction
fonctions et procédures 5
Exemple 1
• Calcul du carré d'un nombre
int main()
{
int n, x=0;
printf("n ? "); scanf("%d", &n);
x = carre(n); // appel
printf("carre = %d\n", x);
return 0;
} fonctions et procédures 6
Exemple 1
• Exécution: ça marche!
fonctions et procédures 7
Exemple 1
• Comment carre marche ?
– Après le scanf: n 6 x 0
int int
– Appel de la fonction: a 6
int
• Le type vide:
– void
fonctions et procédures 9
Procédures
• Le type vide:
– void
• Une procédure:
void maprocedure(char); // declaration
void maprocedure(char) { // definition
...
}
char c;
maprocedure(c); // appel
fonctions et procédures 10
Procédures
c
maprocedure
fonctions et procédures 11
Procédures
• Pas de paramètre de retour
– Type void
• Structuration du programme
– Un traitement donné est écrit une fois et une
seule dans le programme (comme pour les fonctions)
• Paramètre en entrée
– La fonction ou la procédure en a besoin pour
fonctionner
• Paramètre en sortie
– La fonction ou la procédure a pour objectif de
lui donner une valeur.
– Si le type du retour n'est pas void, une
fonction C possède un paramètre de sortie
obligé: le paramètre de retour.
fonctions et procédures 13
Paramètres en entrée ou sortie
(14/3)
a carre(a)
carre
fonctions et procédures 14
Paramètres en entrée ou sortie
fonctions et procédures 17
Exemple 2
• Comment carre2 marche ?
– Après le scanf: n 6 x 0
int int
– Appel de la fonction: a b
6
a = n; b = &x; int int*
– Exécution: *b = a*a; x 36
int
– Retour dans n x
6 36
l'appelant int int
fonctions et procédures 18
Exemple 2
a b
carre2
fonctions et procédures 19
Exemple 3
• Carré avec passage de paramètres par valeur
void carre3(int a, int b) {
b = a*a;
}
int main()
{
int n, x=0;
printf("n ? ");
scanf("%d", &n);
carre3(n, x);
printf("carre3 = %d\n", x);
return 0;
}
fonctions et procédures 20
Exemple 3
• Exécution: ça marche pas :-(
fonctions et procédures 21
Exemple 3
• Comment carre3 marche pas ?
– Après le scanf: n x 0
6 int
int
– Appel de la fonction: a 6 b 0
a = n; b = x; int int
– Exécution b = a*a; b 36
int
– Retour dans l'appelant n x
int
6
int
0
• Explication:
fonctions et procédures 22
– b a été modifié 3 pas x.
correctement,
Exemple
fonctions et procédures 23
Exemple 3
b carre3
fonctions et procédures 24
Recursivité
• Une fonction qui s'appelle soi-même
int factorielle(int n)
{
if (n==0) return 1;
return (n*factorielle(n-1));
}
int n = 4;
printf("n! = %d\n", factorielle(n));
fonctions et procédures 25
Recursivité
• Factorielle sans récursivité, avec boucle:
int factorielle2(int n)
{
if (n==0) return 1;
int r=1;
int i;
for (i=1; i<=n; i++) r *= i;
return r;
}
int n = 4;
printf("n! = %d\n", factorielle2(n));
fonctions et procédures 26
Exemple complet
fonctions et procédures 27
Exemple complet
do {
printf("x ? (%d<=x<=%d) ", a, b);
scanf("%d", &x);
return x;
}
fonctions et procédures 28
Exemple complet
– affichant la valeur de N !
fonctions et procédures 29
Résumé de la séance 6
#include <stdio.h>
int main() {
int n;
n = deIntervalleANombre(0,12);
return 0;
}
30