0% ont trouvé ce document utile (0 vote)
29 vues21 pages

(AP1) Chap9

Le chapitre 9 traite des fonctions en langage C, expliquant leur définition, leur structure, et leur utilisation dans la programmation modulaire. Il aborde également le passage des paramètres par valeur et par adresse, ainsi que la déclaration et l'appel de fonctions. Enfin, des exemples illustrent la création et l'utilisation de fonctions pour diverses opérations.

Transféré par

ahm3d.hamrouni
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
29 vues21 pages

(AP1) Chap9

Le chapitre 9 traite des fonctions en langage C, expliquant leur définition, leur structure, et leur utilisation dans la programmation modulaire. Il aborde également le passage des paramètres par valeur et par adresse, ainsi que la déclaration et l'appel de fonctions. Enfin, des exemples illustrent la création et l'utilisation de fonctions pour diverses opérations.

Transféré par

ahm3d.hamrouni
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Chapitre 9

Les fonctions

Sahar TRIGUI 219 2024-2025


Introduction

Un programme en C peut être découper en plusieurs parties.


Ces parties sont appelées des modules (programmation
modulaire).
Les modules en langage C sont appelés des fonctions.

Une fonction est une suite d’instructions regroupées sous un


même nom.
La fonction principale en C est appelée main. Elle peut
appeler une ou plusieurs autres fonctions appelées fonctions
secondaires.
Toute fonction secondaire peut appeler d’autres fonctions
secondaires.

Sahar TRIGUI 220 2024-2025


Définition d’une fonction

La définition d’une fonction est donnée par une structure


identique à celle du fonction main (entête et corps).
entête

type nom_fonction(type1 arg1, type2 arg2,…)


{ … //déclaration des variables locales
corps … //liste d’instructions
}

type : c’est le type de la valeur retournée par la fonction .


Les arguments de la fonction sont appelés paramètres
formels

Sahar TRIGUI 221 2024-2025


Définition d’une fonction
Les paramètres formels peuvent être de différents types.
Le corps de la fonction commence par la déclaration des variables
locales. Il se termine par l’instruction: return(expression);
La valeur de retour de la fonction est la valeur de l’expression .
Le type de la valeur retournée est le même que le type spécifié dans
l’entête de la fonction.
Remarques:
Le nom d’une fonction doit respecter les mêmes règles pour le choix
des noms des variables.
Si la fonction n’a pas de valeur à retourner, son type est void. Dans ce
cas l’instruction de retour est: return; (on peut omettre cette
instruction)
Si la fonction n’a pas d’arguments, on remplace la liste des
paramètres par le mots clé void ou tout simplement on met ().

Sahar TRIGUI 222 2024-2025


Définition d’une fonction

Exemple:
int somme(int a, int b) void affiche_tabl(int *tab, int n) int puissance(int a, int n)
{ { {
return (a+b); int i; if(n==0)
} for (i=0;i<n;i++) return 1;
{ else
Ou bien printf("%d\n",tab[i]); return
int somme(int a, int b) } (a*puissance(a,n-1));
{ return; }
int res; }
res=a+b;
return (res);
}

Sahar TRIGUI 223 2024-2025


Définition d’une fonction

Pas de retour et pas d’arguments Pas de retour et avec arguments

void nom_fonction (){ void nom_fonction (type1 arg1,…){


Instructions ; Instructions ;
} }

Avec retour et pas d’arguments Avec retour et avec arguments

type_retour nom_fonction (){ type_retour nom_fonction (type1 arg1,…){


Instructions ; Instructions ;
return resultat ; return resultat ;
} }

Sahar TRIGUI 224 2024-2025


Définition d’une fonction

Pas de retour et avec arguments

Avec retour et avec arguments

Sahar TRIGUI 225 2024-2025


Appel d’une fonction

L’appel d’une fonction se fait selon le syntaxe suivant:


nom_fonction(paramètre1, paramètre2,…)
Les paramètres utilisés lors de l’appel d’une fonction sont
appelés paramètres effectifs. Leurs valeurs seront utilisés pour
le traitement.
Remarque:
Lors de l’appel d’une fonction, l’ordre et le type des paramètres
doivent coïncider avec ceux données dans l’entête de la
fonction.
exemple

Sahar TRIGUI 226 2024-2025


Appel d’une fonction

Pas de retour et pas d’arguments Pas de retour et avec arguments

nom_fonction () ; nom_fonction (arg1, arg2,…) ;

Avec retour et pas d’arguments Avec retour et avec arguments

X= nom_fonction () ; X= nom_fonction (arg1, arg2,…) ;


X=Y/ nom_fonction () ; X=Y/ nom_fonction (arg1, arg2,…) ;
printf (nom_fonction () ); printf (nom_fonction (arg1, arg2,…) );

Sahar TRIGUI 227 2024-2025


Déclaration d’une fonction

Une fonction secondaire est déclarée avant la fonction


principale main par son prototype qui retourne le type de la
fonction et celui de ses paramètres.
type nom_fonction(type1, type2,…);

La déclaration d’une fonction peut ce faire aussi de la


manière suivante:
type nom_fonction(type1 arg1, type2 arg2,…);

La définition d’une fonction secondaire se fait soit avant soit


après la fonction principale main.

Sahar TRIGUI 228 2024-2025


Déclaration d’une fonction

Remarques:
L’imbrication des fonctions en C est interdite.
Si une fonction est définie après son premier appel, elle doit
être obligatoirement déclarer avant la fonction appelante.
Ainsi, le compilateur connaisse la fonction au moment ou elle
est appelée.

Sahar TRIGUI 229 2024-2025


Déclaration d’une fonction

Exemples:
#include<stdio.h> #include<stdio.h>
int somme(int a, int b) int somme(int a, int b) ;
{ /*int somme(int , int ) ;*/
return (a+b); main()
} {
main() int x=2,y=5;
{
int x=2,y=5; printf("%d+%d=%d",x,y,somme(x,y));
printf("%d+%d=%d",x,y,somme(x,y)); }
} int somme(int a, int b)
{
return (a+b);
}
Sahar TRIGUI 230 2024-2025
Exercice

Ecrire une fonction qui permet de calculer le carré d’un


nombre passé en paramètre. Ecrire la fonction main qui teste
cette fonction.

Sahar TRIGUI 231 2024-2025


Les variables

Variables locales
On appelle variable locale toute variable déclarée à l’intérieur
d’une fonction.
Par défaut, les variables locales sont temporaires. Elles sont
allouées dynamiquement lors de l’exécution.
L’emplacement mémoire d’une variable locale sera libérer a la
fin de l’exécution et la variable sera perdue.
Variables globales
On appelle variable globale toute variable déclarée à l’extérieur
de toutes fonctions.
Toutes les variables globales sont connues au compilateur dans le
programme qui suit sa déclaration et peuvent être utilisées par
toutes les fonctions du programme.
Une variable globale occupe le même espace mémoire, alloué
lors de la compilation, durant toute l’exécution.
Sahar TRIGUI 232 2024-2025
Les variables

Remarques
Si plusieurs variables locales ou globales ont le même nom,
elles ne sont pas confondues. La dernière définition est celle
considérée.
Les variables locales à une fonction ont une durée de vie
limitée à une seule exécution de cette fonction. Leurs valeurs
ne sont pas conservées d’un appel à un autre.
Une variable locale est déclarée statique (static), sa valeur
reste conservée d’un appel à un autre. Elle est initialisée à
zéro lors de la compilation.

Sahar TRIGUI 233 2024-2025


Les variables

Exemples:
int n=0; int n=10; int n=0;
void fonction() void fonction() void fonction()
//définition //définition //définition
{ { {
n++; int n=0; static int n;
printf("n= %d\n",n); n++; n++;
return; printf("n= %d\n",n); printf("n= %d\n",n);
} return; return;
} }
main()
{ main() main()
int i; { {
for(i=0;i<5;i++) int i; int i;
fonction(); //appel for(i=0;i<5;i++) for(i=0;i<5;i++)
} fonction(); //appel fonction(); //appel
} }
Sahar TRIGUI 234 2024-2025
Passage des paramètres d’une
fonction
Passage par valeur
Lors de l’appel d’une fonction, les valeurs des paramètres
effectifs sont copiées et la fonction utilise seulement cette copie.
Si la fonction modifie la valeur de ses paramètres, seulement la
copie sera modifiée et ainsi la valeur des paramètres effectifs est
inchangée.
Dans ce cas, les paramètres de la fonction sont transmis par
valeur.

Sahar TRIGUI 235 2024-2025


Passage des paramètres d’une
fonction
Exemple:
void permuter (int a, int b)
{ int t;
printf(" avant permutation \n a=%d \t b=%d \n ",a,b);
t=a;
a=b;
b=t;
printf(" après permutation \n a=%d \t b=%d \n ",a,b);
}

main()
{ int x=5, y=9;
printf(" avant l’appel de la fonction \n x=%d \t y=%d \n ",x,y);
permuter(x,y);
printf (" après l’appel de la fonction \n x=%d \t y=%d \n ",x,y);
}
Sahar TRIGUI 236 2024-2025
Passage des paramètres d’une
fonction
Passage par adresse
Le passage par adresse permet la modification des valeurs des
paramètres effectifs.
Dans ce cas, il faut utiliser l’adresse des objets comme
paramètres lors de l’appel de la fonction.

Exemple:
void decrementer(int *nombre) main()
{ {
(*nombre)--; int n=10;
printf("nombre= %d\n", *nombre); printf("n= %d\n",n);
} decrementer(&n);
printf("n= %d\n",n);
}
Sahar TRIGUI 237 2024-2025
Passage des paramètres d’une
fonction
Exemple:
void permuter (int *a, int *b)
{ int t;
printf(" avant permutation \n a=%d \t b=%d \n ",*a,*b);
t=*a;
*a=*b;
*b=t;
printf(" après permutation \n a=%d \t b=%d \n ",*a,*b);
}

main()
{ int x=5, y=9;
printf(" avant l’appel de la fonction \n x=%d \t y=%d \n ",x,y);
permuter(&x,&y);
printf (" après l’appel de la fonction \n x=%d \t y=%d \n ",x,y);
}
Sahar TRIGUI 238 2024-2025
Exercice

Ecrire un programme qui permet de saisir 10 nombre réels


stockés dans un tableau T.
Ecrire les fonction qui permet de calculer la somme, le produit
et la moyenne de ces nombres.
Ecrire une fonction qui détermine et affiche les éléments
négatifs et positifs du tableau.
Ecrire une fonction qui permet d’inverser les éléments du
tableau et de le renvoyer.

Sahar TRIGUI 239 2024-2025

Vous aimerez peut-être aussi