next up previous
Next: Fonction main Up: Structure et syntaxe d'un Previous: Initialisation et affectation

Les fonctions

Une fonction est un bloc d'instructions séparé du reste du programme, identifié par un nom qui lui est propre (comme les variables), pouvant prendre des variables comme arguments (= paramètres) et pouvant éventuellement en retourner une.

Pour déclarer une fonction nommée pourcent, prenant en argument une variable de type int et renvoyant une autre de type double, la syntaxe est:
double pourcent(int x);
Il faut en effet donner un nom au paramètre afin de pouvoir l'utiliser ultérieurement dans la fonction.

Pour définir la fonction, c-à-d préciser quel bloc d'instructions est exécuté quand la fonction est appelée:

double pourcent(int x){
  double y;
  y = x / 100.;
  return y;
}

L'instruction return y; précise que quand la fonction sera appelée il faudra retourner la valeur de y. Evidemment le type de la variable derrière return doit être le même type que celui annoncé au dans la déclaration devant le nom de la fonction (ici double).

Pour être plus précis: supposons que la fonction ci-dessus soit appelée à un certain moment dans le programme, dans le bloc:

double b;
int a = 36;
b = pourcent(a);

Cette dernière ligne est équivalente au bloc suivant:

{
  int x = a;
  double y;
  y = x / 100.;
  b = y;
}

Les variables x et y sont donc propres au bloc correspondant à la fonction pourcent et n'existent plus à la sortie de ce bloc. Comme ces variables sont locales à ce bloc, il se peut qu'elles portent le même nom que d'autres variables définies précédemment dans le programme; il n'y aura pas d'interactions entre ces variables synonymes considérées comme différentes. Une autre chose à savoir est que l'on sort de la fonction quand on rencontre le mot-clé return, c-à-d que s'il y a des instructions dans la fonction après le retour de la valeur par return, elles ne seront pas exécutées.

Une fonction peut prendre plusieurs arguments, mais ne peut retourner qu'une seule variable. Exemple:

double moyenne(int a, int b){
  double c = 0.5 * (a + b);
  return c;
}

Le bout de code suivant:

int x = 0;
double m;
m = moyenne(x, 1);

est équivalent à:

int x = 0;
double m;
{
  int a = x;
  int b = 1;
  double c = 0.5 * (a + b);
  m = c;
}

Une fonction peut aussi ne rien retourner du tout. La convention est que le type de ``rien'' est void. Une fonction peut aussi ne prendre aucun argument. Exemple:

void riendutout(){
  int a = 12;
}

Cette dernière fonction est équivalente à:

void riendutout(){
  int a = 12;
  return;
}


next up previous
Next: Fonction main Up: Structure et syntaxe d'un Previous: Initialisation et affectation
Guillaume Charpiat 2006-12-07