9.5. Quelques exemples de fonctions simples

Icône de l'outil pédagogique Quelques exemples de fonctions simples

 

Exemple 49 : Fonction sans paramètres qui ne renvoie rien

On voit apparaître dans cet exemple la définition d'une fonction appelée afficher_accueil. L'en‐tête précise le nom de la fonction, l'absence de paramètres (second void) et de void afficher_accueil(void) valeur retournée (premier void). Après cet en‐tête vient le corps de la fonction constitué d'un bloc entouré d'accolades { et }.

Remarquons que le programme principal apparaît sous la forme d'une fonction de nom main imposé. Par convention, l'exécution d'un programme en C commence toujours par cette fonction main.
Plusieurs en‐têtes existent pour main : certains IDE (C++), qui fournissent un squelette pour main, proposent en général un en‐tête qui commence par int main(…), ce qui oblige à terminer par return 0; ou équivalent.

Exemple 50 : Fonction sans paramètres qui renvoie une valeur

L'en‐tête short int saisir_un_entier(void) précise cette fois que la fonction sans paramètres d'entrée saisir_un_entier fournit un résultat de type short int. L'instruction return entier ; indique quelle valeur est à renvoyer à la fonction appelante.

Attention : quel que soit l'endroit où est placée l'instruction return, son exécution termine toujours la fonction et provoque le retour à la fonction appelante.

Exemple 51 : Fonction avec paramètres qui renvoie une valeur


La fonction appelante (ici, main) fournit la valeur des deux variables mes1 et mes2 dont elle veut la moyenne. mes1 et mes2 sont des arguments d'appel, alors que les variables a et b qui apparaissent dans l’en‐tête de la définition de la fonction calculer_moyenne sont appelées paramètres formels ou paramètres tout court, par opposition aux arguments d'appel.

Lors de l'appel de calculer_moyenne, les arguments mes1 et mes2 sont copiés dans les paramètres formels a et b. La fonction calculer_moyenne manipule ensuite exclusivement ses paramètres a et b, sans que les arguments mes1 et mes2 n'en soient affectés.

Les paramètres sont définis sur la ligne d’en‐tête de fonction. Ils sont alloués au début de l'exécution de la fonction calculer_moyenne dans une zone de mémoire spéciale appelée la pile. Ils disparaissent dès que la fonction prend fin avec return.

Les arguments d'appel peuvent être des contenus de variables, mais aussi des expressions ou des constantes numériques, ou un mélange des trois :

Les variables, expressions ou valeurs numériques n, p/3.+5.0, 6.3 et ‐23.1 sont alors les arguments d'appel (ou paramètres effectifs). Pour d'autres exemples d'appel, voir le chapitre « Utilisation de fonctions ».

Ce mode de transmission des paramètres est appelé passage en paramètre par valeur. La fonction appelée n'utilise que des copies (paramètres, ici nommés a et b) des arguments d’appel, si ceux‐ci sont des variables : il n'est pas possible de modifier dans la fonction appelée une variable de la fonction appelante.

Le nombre d'arguments d'appel fournis par la fonction appelante doit évidemment correspondre au nombre des paramètres dont la liste figure dans l'en‐tête de la définition de la fonction. Cependant, le type des arguments peut différer : si c'est possible, le compilateur force la conversion des valeurs transmises pour qu'elles correspondent aux types figurant dans l'en‐tête de la fonction.

Remarquons que les variables mes1 et mes2 sont définies à l'intérieur du bloc de la fonction main. Elles sont dites variables locales à main et sont inconnues pour toute autre fonction que main. Si la fonction calculer_moyenne décide d’appeler ses paramètres mes1 et mes2 au lieu de a et b, ce seront des variables différentes de celles de main.

 


Aussi appelés « paramètres effectifs »