Chapitre2 Fonctions
Chapitre2 Fonctions
Chapitre2 Fonctions
Appel
Chapitre 2:
Main()
fonction()
Les fonctions
en C
Retour
Cours labor par: Fenineche Khadidja
1- Notion de sous-programme
2- Exemple de fonction
3-Variables locales et variables globales
4- Dclaration et appel dune fonction en C
5- Dclaration et appel de procdure en C
6- Passage par valeur et passage par adresse
7- Exemples dutilisation de fonctions et de
procdures enC
Fenineche Khadidja 2
Objectifs du chapitre
Fenineche Khadidja 3
Notion de sous-programme
Fenineche Khadidja 4
Les fonctions en langage C
Fenineche Khadidja 5
4- Dclaration et appel des fonctions en langage C
Une fonction en C:
possde un nom et
est compose dun bloc dinstructions,
de paramtres (arguments) et
dune valeur retourner au
programme appelant .
Fenineche Khadidja 6
4- Dclaration et appel des fonctions en langage C
Fenineche Khadidja 7
Exemple de fonction C
Exemple dutilisation dune fonction: somme de deux entiers
#include <stdio.h> a,b,c sont appeles :
int somme(int x,int y) variables globales
{ accessibles partout dans
int z; le main().
z=x+y;
Dclaration de return z; z est une variable
la fonction } locale la fonction
somme. Manipule
int main() seulement lintrieur
{ de la fonction et elle sert
int a,b,c; comme valeur de retour.
puts("Introduisez deux entiers");
Appel de la scanf("%d%d",&a,&b); x,y sont appels :
fonction en lui c=somme(a,b); paramtres ou
livrant les arguments de la
valeurs printf("La somme est:%d",c); fonction . (Ils servent
calculer return 0; communiquer avec le
} programme appelant)
Fenineche Khadidja 8
3-Variables locales et variables globales
Fenineche Khadidja 9
Dclaration dune fonction en C
Fenineche Khadidja 11
5- Dclaration et appel dune procdure en C
Fenineche Khadidja 13
5- Dclaration et appel dune procdure en C
Exemple1: afficher le carr dun entier saisi dans le main() laide
dune procdure quon nomme affiche_carre.
#include <stdio.h>
void affiche_carre(int x)
{
int y;
y=x*x;
printf("La valeur introduite est: %d",y);
}
int main()
{
int a;
puts("Introduisez une entier");
scanf("%d",&a);
affiche_carre(a); /* a est pass comme
paramtre*/
return 0;
}
Fenineche Khadidja 14
5- Dclaration et appel dune procdure en C
Exemple 2: Saisir une #include <stdio.h>
int lire(void) /* cest une fonction */
variable laide dune {
fonction nomme lire et int x;
lafficher laide dune puts("Introduisez une entier");
scanf("%d",&x);
procdure quon return x; /* Elle retourne la valeur lue*/
nomme affiche. }
(Une fonction sans void affiche(int x) ) /* cest une procdure */
{
arguments et une printf("La valeur introduite est: %d",x);
procdure) return; /* Elle ne retourne rien*/
Remarques: }
/* programme principal*/
On ne peut utiliser la int main()
fonction lire avec un {
argument pass par int a;
a=lire(); /*appel de la fonction lire */
valeur car le scanf affiche(a); /* appel de la procdure affiche */
modifie la valeur de la return 0;
variable. } Fenineche Khadidja 15
6- Passage par valeur et passage par adresse
Fenineche Khadidja 16
6- Passage par valeur et passage par adresse
#include <stdio.h>
Le passage par void affiche(int x[], int taille)
adresse (cas des { int i;
for(i=0;i<taille;i++) printf("%d ",x[i]);
tableaux): Affichage printf("\n"); }
et tri dun tableau void trier(int x[], int taille)
laide de fonctions { int i,j,c;
for (i=0;i<taille-1;i++)
(affiche et trier) { for (j=i+1;j<taille;j++)
Remarque: un {
tableau t est lui- if (x[j]<x[i]) { c=x[i];x[i]=x[j];x[j]=c;}
}
mme une adresse }
donc la modification }
est possible pour le int main ()
{ int t[]={20,1,12,3,24};
tri. affiche(t,5);
trier(t,5);
affiche(t,5);
return 0;}
Fenineche Khadidja 17
7-Exemples dutilisation de fonctions et de procdures en C
#include <stdio.h>
Exemple 1: Afficher main()
un carr dtoiles {
(mme nombre int i,A;
void ligne(int X);
dtoiles pour printf("Donnez le nombre d'toiles afficher
chaque ct) par cote: ");
scanf("%d",&A);
On utilise dans ce for (i=1;i<=A;i++) {ligne(A);printf("\n");}
cas une procdure return 0;
qui ne retourne pas }
de valeur ******* void ligne(int X)
*******
{
*******
int i;
*******
for (i=1;i<=X;i++) putchar('*');
*******
}
*******
*******
Fenineche Khadidja 18
Exemples dutilisation de fonctions et de procdures enC
#include <stdio.h>
Exemple2: Afficher main()
un carr. Le symbole {
int i,A; char c;
est donn par void carre(int X,char s);
lutilisateur. printf("Choisir un symbole parmi: *,+,0,X: ");
c=getchar();
printf("\n");
La procdure a deux printf("Donnez le nombre de symboles afficher par
arguments en cote: ");
entre: le caractre scanf("%d",&A);
carre(A,c);
afficher et le return 0;
nombre de lignes }
afficher. void carre(int X,char s)
{
int i,j;
for (i=1;i<=X;i++) {
for (j=1;j<=X;j++) putchar(s);
printf("\n"); }
Fenineche Khadidja 19
}
Exemples dutilisation de fonctions et de procdures en C
#include <stdio.h>
Exemple3: Calculer
main()
lexpression pour un
{
x rel
double X;
double f(double x) ; /*prototype*/
f(x)=x2+(x/5)
printf("Donner un reel X: ");
scanf("%lf",&X);
Remarque sur le
printf(" le resultat de la fonction
programme: On
x2+(x/5) est: %.2lf \n",f(X));
peut galement
return 0;
dclarer une
}
variable y qui reoit
double f(double x)
f(X) avant le printf
{
return x*x+(x/5);
}
Fenineche Khadidja 20
Appel de fonctions partir dun autre fichier
#include "apel_extern.c"
#include <stdio.h>
double f(double x)
main()
{
{
return x*x+(x/5);
double X;
}
// double f(double x);
printf("Donner un reel X: ");
double f2(double x)
scanf("%lf",&X);
{
printf(" le resultat de la fonction x
return x*x*x;
puissance 3 est: %.2lf \n",f2(X));
}
printf(" le resultat de la fonction
Fichier apel_extern.c x2+(x/5) est: %.2lf \n",f(X));
return 0;
}
Fenineche Khadidja 21
Manipulation des variables globales dans une fonction
#include <stdio.h> // Exemple 1
int v; // v est ici globale dclare avant le main() pour
// quelle soit reconnue dans la fonction
void calcul()
{
v=v*v-3; // v est utilise sans tre dclare
}
int main()
{puts("saisir une valeur entire");
scanf("%d",&v);
calcul();
printf("la valeur de v devient:%d",v);
// la valeur de v va tre modifie car elle est globale
return 0;
}
Fenineche Khadidja 22
Manipulation des variables globales dans une fonction