Académique Documents
Professionnel Documents
Culture Documents
LANGAGE C
Cours C10
Informatique pour les Réseaux et Systèmes Techniques
1 Introduction
Nous avons jusqu'à maintenant réalisé des programmes ou tout était contenu dans la fonction main.
Cela fonctionne assez bien avec de petits programmes, mais dès que nous aurons plusieurs tâches à
réaliser les choses vont se compliquer. Ainsi, pour faciliter la mise en place du programme et éviter les
erreurs, il est préférable de scinder le programmes en plusieurs petites applications appelées fonctions.
Nous appellerons ces fonctions quand nous aurons besoin d'elles.
On entre 2, il ressort 4 ! On appelle argument les éléments en entrée et en sortie de la fonction. Les
arguments sont des variables locales à la fonction. Les valeurs fournies à l'appel de la fonction
(arguments réels) y sont recopiés à l'entrée dans la fonction. Les instructions de la fonction s'exécutent
du début du bloc { jusqu'à return(valeur) ou la sortie du bloc }. La valeur retournée par la fonction
est indiquée en argument de return.
3 Exemples :
1) fonction ne recevant aucun argument, et ne retournant rien. Ce n'est pas parce qu'elle ne retourne
rien qu'elle ne fait rien, ici elle affiche un message à l'écran. Elle ne reçoit aucun argument, ici parce
qu'elle n'en a pas besoin, quelquefois c'est parce qu'elle n'utilise que des variables globales. Il est à
noter que cette fonction n'a pas de return : normal, elle ne renvoie rien !
void message(void)
{
int i;
for(i=0;i<10;i++)printf("Hej Världen!\n");
}
Une fonction possède ses propres variables locales (ici i), mais n'a pas accès aux variables locales des
autres fonctions, pas même celles de main (mais aux variables globales, que je déconseille fortement).
On appelle cette fonction dans une autre par exemple à partir du main :
int main()
{
message();
return 0;
}
Cela produira l'affichage de 10 Hej Världen!
2) fonction recevant un (ou plusieurs) argument(s), et ne retournant rien. Une telle fonction a besoin
d'informations pour effectuer sa tâche, ce qui est le cas le plus courant.
On utilisera les opérateurs unaires : & (adresse de) et * (contenu de).
void insiste(int combien_de_fois, char *compliment)
{
int i;
printf("Oh que c'est ");
for(i=0;i<combien_de_fois;i++)printf("%s ",compliment);
printf("les fonctions !!!!! \n);
}
Tout ce qui importe à l'appel est qu'on donne en premier argument une valeur entière et en second une
chaîne de caractères. Leurs noms n'ont aucun rapport avec ceux utilisés dans la fonction.
3) fonction recevant un (ou plusieurs, ou aucun) argument(s), et retournant une valeur. Une telle
fonction a besoin (ou non) d'informations pour effectuer sa tâche, mais quand la tâche est terminée (en
général c'était un calcul), elle rend (retourne) le résultat (une et une seule valeur). Je vous rappelle que
les variables locales de la fonction ne sont visibles qu'à l'intérieur de la fonction, sans cela les calculs
auraient été inutiles.
4) que fait-on pour retourner plusieurs valeurs ? C'est impossible directement. Nous verrons plus tard !