Vous êtes sur la page 1sur 24

Chapitre 2

Les fonctions

M.Hammouda IBTISSEM 1
Plan
• Introduction.
• Les paramètres formels et les paramètres
réels.
• Les variables globales et locales.
• Passage de paramètres d’une fonction.
• Les fonctions et les tableaux à une
dimension.
• Les macros.
M.Hammouda IBTISSEM 2
Introduction

• La modularité consiste à subdiviser un programme


en sous programmes plus simples en vue d’obtenir
des solutions plus efficaces et plus élégantes.
• Un module ou sous programmes est une entité de
données et d’instructions qui fournit une solution à
un problème.
• Un module peut faire appel à d’autres modules,
leur transmettre des données et en recevoir aussi.
• En langage C :nous ne parlons que des fonctions
Une procédure sera traduite en une fonction.

M.Hammouda IBTISSEM 3
Introduction

Définition:
Une fonction est une sous programme qui permet
de réaliser la même type de traitement plusieurs
fois et/ou sur des variables différentes.
Il existe deux catégories de fonctions:
– Les fonctions prédéfinies qui appartiennent aux
bibliothèques standards(printf et scanf de stdio.h et
strlen de string.h….).
– Les fonctions définies par l’utilisateur.
Une fonction doit être définie ou déclarée avant
d’etre appelée dans le programme principal.

M.Hammouda IBTISSEM 4
Introduction
• Syntaxe:
<type de retour><nom fonct>(<type arg1>
<arg1>,<type arg2> <arg2>…)
{
<déclaration de variables locacles>
<instructions>
}

M.Hammouda IBTISSEM 5
Introduction

• Description d’une fonction:


o une interface ou une en-tête qui comporte:
- La déclaration du type de retour
- Le nom de fonction
- La déclaration des types et des noms des arguments
o Un corps de fonction qui comporte :la déclaration des
variables locales et des instructions
• Remarques:
o Une fonction peut ne pas comporter des
paramètres d’appel.
Exemple 1:
void message()
{printf(« je m’appelle…. »);}

M.Hammouda IBTISSEM 6
Introduction
o Le type de retour peut être :
void :aucun résultat à retourner (la fonction correspond à une
procédure).
un type( int ,float,char*,int*…):dans ce cas,une fonction doit
retourner un résultat dont la syntaxe est la suivante: return exp
Exemple 2:
int somme(int a ,int b)
{int S;
S=a+b;
return S;
}
o Une fonction ne peut pas fournir comme résultat un tableau ou
une chaine de caractères. mais il est possibles de renvoyer u
pointeur sur la premier élément du tableau ou de la chaine.

M.Hammouda IBTISSEM 7
Paramètres formels
et paramètres réels
• Un paramètre formel est une variable choisie comme paramètre à la
définition d’une fonction .
• Un paramètre réel(ou effectif) est une valeur utilisée dans l’appel de
la fonction à la place d’un paramètre formel.
Exemple:
#include<stdio.h>
void fct(int x,int y) //x et y sont des paramètres formels.
{…….}
main()
{ int a,b;//a et b sont des paramètres réels.
…….
fct(a,b);

}
M.Hammouda IBTISSEM 8
Paramètres formels
et paramètres réels
• Exemple:
int Somme(int a, int b)
{ int S; a et b sont des
paramètres formels.
S=a+b; x et y sont des
return(S); paramètres réels.

}
main()
{int x=5,y=7,S;
S=Somme(x,y);
}

M.Hammouda IBTISSEM 9
Paramètres formels et paramètres
réels
Exercice:
Ecrire une fonction qui reçoit un entier et qui retourne son cube.
Ecrire une fonction qui reçoit un entier et qui retourne son factoriel.
Ecrire un programme principal qui calcule selon le choix de l’utilisateur
le cube ou le factoriel d’un entier.
…………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………

M.Hammouda IBTISSEM 10
Les variables globales et locales
Définition:( variable locale)
• Une variable locales est une variable déclarée à l’intérieur d’une fonction du programme.
• En conséquence, cette variable n’est connue que par la fonction ou elle est déclarée.
Exemple:
#include<stdio.h>
void exemple2()
{int n=4;
n++;
printf(« fonction exemple:n=%d\n »,n);
}
main()
{ int n=2;
exemple2();
printf(« prog principal:n=%d\n »,n);
}

n est une variable locale


Résultat:
Fonction exemple: n=5
Prog principal:n=2
M.Hammouda IBTISSEM 11
Les variables globales et locales
Définition:( variable globale)
• Une variable globale est une variable déclarée en dehors de toute fonction ,elle est connue par le
compilateur dans tout le code qui suit sa déclaration.
Exemple:
#include<stdio.h>
Int n;
void exemple2()
{
n++;
printf(« fonction exemple:n=%d\n »,n);
}
main()
{ n=10;
exemple2();
printf(« prog principal:n=%d\n »,n);
}

n est une variable gloabale.


Résultat:
Fonction exemple: n=11
Prog principal:n=10

M.Hammouda IBTISSEM 12
Les variables globales et locales
Exercice: En utilisant les variables globales, écrire une fonction qui
permet de calculer la somme de deux entier et un programme
principal qui appelle cette fonction.
……………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………
………………………………………………………………………………………………………

M.Hammouda IBTISSEM 13
Passage de paramètres d’une
fonction
Passage par valeur:
– Pendant l’appel d’une fonction, les valeurs des
paramètres réels sont copiées dans les
paramètres formels, ainsi ,l’exécution des
instruction de la fonction se fait avec les
valeurs des paramètres formels.
– Toute modification des paramètres formels
n’entraine en aucun cas celles des paramètres
réels.

M.Hammouda IBTISSEM 14
Passage de paramètres
d’une fonction
Exemple:
#include<stdio.h>
void passage 1(int n)
{n=n+2;
printf(« fonction exemple :n=%d\n »,n);
}
main()
{ int x=2;
passage1(x);
printf(« prog principalllll:x=%d\n »,x);
}
Résultat:
Fonction exemple :n=4
Prog principal: x=2

M.Hammouda IBTISSEM 15
Passage de paramètres
d’une fonction
Passage de l’adresse d’une variable: (ou
passage par variable)
– Dans ce cas, le paramètre formel utilise
directement l’emplacement mémoire du
paramètre réel.
– Par conséquent ,toute modification du
paramètre formel entraine la même
modification du paramètre réel correspondant.

M.Hammouda IBTISSEM 16
Passage de paramètres d’une
fonction
Exemple:
#include<stdio.h>
void passage 2(int *n)
{*n=*n+2;
printf(« fonction exemple :*n=%d\n »,*n);
}
main()
{ int x=2;
passage2(&x);
printf(« prog principal:x=%d\n »,x);
}
Resultat:
Fonction exemple :*n=4
Prog principal: x=4

M.Hammouda IBTISSEM 17
Les fonctions et les tableaux à une
dimension
• Le passage d’un paramètre de type tableau
consiste à fournir l’adresse d’un élément du
tableau qui est généralement le premier.
• Lors de la définition d’une fonction, on peut
déclarer un tableau par le nom suivi des crochets
ou par un pointeur sur les éléments du tableau.
• En général ,il faut préciser la dimension du tableau
comme paramètre
• Lors de l’appel d’une fonction, l’adresse d’un
tableau peut être donné par le nom du tableau ,
par un pointeur

M.Hammouda IBTISSEM 18
Les fonctions et les tableaux à
une dimension
Exemple: (fonction Saisie d’un tableau)

Première méthode:
void Saisie_Tab1(int Tab[10],int n)
{int i;
for(i=0;i<n;i++)
{
printf(« donner l’ele n %d »,i+1);
scanf(« %d »,&Tab[i]);}
}

M.Hammouda IBTISSEM 19
Les fonctions et les tableaux à une
dimension
Deuxième méthode:
void Saisie_Tab2(int *Tab,int n)
{int i;
for(i=0;i<n;i++)
{
printf(« donner l’ele n %d »,i+1);
scanf(« %d »,Tab+i);}
}

M.Hammouda IBTISSEM 20
Les fonctions et les tableaux à une
dimension
Troisième méthode:
int *Saisie_Tab3(int n)
{int *tab;
tab=(int*)malloc(n*sizeof(int));
int i;
for(i=0;i<n;i++)
{printf(« donner l’ele n %d »,i+1);
scanf(« %d »,tab+i);}
return(tab);
}

M.Hammouda IBTISSEM 21
• Exemple: (fonction affiche d’un tableau)
Première méthode:

void Affiche_Tab1(int Tab[10],int n)


{int i;
for(i=0;i<n;i++)
{
printf(« %d \t»,Tab[i]);
}
}

M.Hammouda IBTISSEM 22
• Exemple: (fonction affiche d’un tableau)
Deuxieme méthode:

void Affiche_Tab1(int *Tab, int n)


{int i;
for(i=0;i<n;i++)
{
printf(« %d \t»,*(Tab+i));
}
}

M.Hammouda IBTISSEM 23
Correction
#include<stdio.h>
#include<conio.h>

int x,y;
#define Somme(x,y)x+y

#define MAX(x,y)(x>y?x:y)
#define MIN(x,y)(x<y?x:y)
main()
{

printf("donnner x:\n");
scanf("%d",&x);
printf("donnner y:\n");
scanf("%d",&y);

printf("la somme de %d et %d est %d\n",x,y,Somme(x,y));


printf("le MAX entre %d et %d est %d\n",x,y,MAX(x,y));
printf("le MIN entre %d et %d est %d\n",x,y,MIN(x,y));

getch();
return 0;

M.Hammouda IBTISSEM 24

Vous aimerez peut-être aussi