chapitre 4

Les fonctions en

Langage c

 

1-      Introduction :

 

On venant de trouvé une solution à un grand problème en tombe dans la grande taille des instructions qui dans la majorité des cas ; soit faux car on ne peut pas vérifier facilement les erreurs quant fait.

Pour cette raison on utilise le découpage du grand problème en sous problèmes moins volumineux et complexes puis on les relient au grand probléme.

 

Donc on utilise des fonctions qui pour chacune d’elles fait une partie du travail demandé puis on les relie à la fonction principale prés définie (main).

 

Syntaxe :

 

Type_résultat non_fonction(liste type des paramétres)

{

Déclaration des variables local

Suite d’instruction(s)

}

 

Exemple :

int  max (int a,int b)

{

int c ;            type de résultat(solution trouvé sera un entier)

if(a>b)

c=a ;

else

c=b ;

return(c) ;

}

                         Comande qui permet le retour du resultat finale

                             Utilisé avec les fonctions qui renvois le résultat (contrairement à la fonction définie                 

                                                   Void).

 

è Toutes fonction doit être déclaré sauf la fonction main.

 

Exemple :

 

#include<stdio.h>

#include<conio.h>

 

int  max(int a,int b) ;

void main()

{

int x,y,z ;

printf(" donner deux entier\n") ;

scanf("%d%d ",&x,&y) ;

z=max(x,y) ;

printf("le max est %d\n",z) ;

}

 

int  max (int a,int b)

{

int c ;

if(a>b)

c=a ;

else

c=b ;

return(c) ;

}

 

Ou on peut écrire plus simplement : (sans la déclaration)

 

#include<stdio.h>

#include<conio.h>

 

int  max (int a,int b)

{

int c ;

if(a>b)

c=a ;

else

c=b ;

return(c) ;

}

 

void main()

{

int x,y,z ;

printf(" donner deux entier\n") ;

scanf("%d%d ",&x,&y) ;

z=max(x,y) ;

printf("le max est %d\n",z) ;

}

 

2-    Type de déclaration :

 

1* déclaration local :

 

Avant la déclaration des variables, la fonction est déclaré localement dans la fonction qui l’appelle, elle disponible uniquement pour cette dernière.

 

Exemple :

 

Void rectangle(int lg,int ht)

{

Void ligne(int lg) ;

int i ;

for(i=0 ;i<ht ;i++)

ligne(ht) ;

}

 

Void ligne(int lg) 

{

int i ;

for(i=0 ;i<lg ;i++)

printf("*") ;

printf("\n") ;

}

 

Ou on peut faire aussi : (sans déclaration)

 

Void ligne(int lg) 

{

int i ;

for(i=0 ;i<lg ;i++)

printf("*") ;

printf("\n") ;

}

 

Void rectangle(int lg,int ht)

{

int i ;

for(i=0 ;i<ht ;i++)

ligne(ht) ;

}

 

è L’ordre des fonctions est très intéressants !

 

Fessons une exécution à la main :

 

(Si vous voulez, prenez un papier est écrire l’algorithme en c on suivant les étapes de l’exécution)

 

Rectangle c’est la procédure qui fait travail (géronte), pour la procédure ligne elle est locale.

 

Void rectangle(int lg,int ht)

{

Void ligne(int lg) ;

int i ;

Suposans que l’utilisateur donne comme valeur : lg=4 et ht =3

 

i=0<3=ht  -> ligne (ht) =ligne(3)

(on se déplace vers la fonction ligne)

Pour j=0<lg=4 -> *

Pour j=1<4 -> * (on aura ** car on n’à pas utilisé \n dans printf(*)

for est exécuté seulement pour la première instruction)

Ainsi de suite j=3<4 -> ****

Enfin j=4 n’est pas inférieur 4 on sort de la boucle for et on fait un saute de ligne.

 

On aurra ;

****

|                   curseur

 

i=1<3=ht  (même travail)

 

enfin ;

 

****                       (i=0)

****                       (i=1)

****                       (i=2)

 

Et 3<3 c’est faut (sortir de la boucle).

for(i=0 ;i<ht ;i++)

 

 

ligne(ht) ;

}

 

Void ligne(int lg) 

{

int j ;  

 /*modifier i par j pour

 ne pas faire la confusion*/

for(j=0 ;j<lg ;j++)

printf("*") ;

printf("\n") ;

}

 

 

è L’entrée à la fonction déclarée localement se fait à l’aide de la fonction appelante.

 

2* déclaration globale :

 

Après les blocs des inclusions (bibliothèque les fonctions sont déclaré globalement au début. C’est fonctions sont utilisable pour tout les fonctions du programme.

 

Exemple :

 

#include<stdio.h>

Void rectangle(int lg,int ht) ;    /*déclaration*/

Void ligne(int lg) ;

Void main()

{

int l,h ;

printf("donner la longeur") ;

scanf("%d",&l) ;

printf("donner la hauteur") ;

scanf("%d",&h);

rectangle(l,h) ;    

/*appelle de la fonction rectangle dans la fonction principale main*/

}

 

Void rectangle(int lg,int ht)

{

Void ligne(int lg) ;

int i ;

for(i=0 ;i<ht ;i++)

ligne(ht) ;

}

 

Void ligne(int lg) 

{

int i ;

for(i=0 ;i<lg ;i++)

printf("*") ;

printf("\n") ;

}

 

Ou on peut faire aussi :

 

#include<stdio.h>

 

Void ligne(int lg)  

   /* on appelle ligne avant rectangle et rectangle avant main ou sait faux */

{

int i ;

for(i=0 ;i<lg ;i++)

printf("*") ;

printf("\n") ;

}

 

Void rectangle(int lg,int ht)

{

Void ligne(int lg) ;

int i ;

for(i=0 ;i<ht ;i++)

ligne(ht) ;

}

 

Void main()

{

int l,h ;

printf("donner la longeur") ;

scanf("%d",&l) ;

printf("donner la hauteur") ;

scanf("%d",&h);

rectangle(l,h) ;    

}

 

 

Pour me contacté : mahfoudhighaieth2007@yahoo.fr

Créer un site gratuit avec e-monsite - Signaler un contenu illicite sur ce site