33

Les Fonctions


Utilisation d'une fonction

Il est fréquent, dans un programme, que l'on ait à réaliser en plusieurs endroits un travail comparable. Dans ces conditions, il est regrettable d'avoir à introduire, à diverses reprises, des instructions identiques ou presque. Le C, comme la plupart des langages, permet de réaliser des "sous-programmes". Il s'agit d'ensembles d'instructions qu'on écrit une seule fois en leur attribuant un nom. Ces ensembles sont appelés fonction.

Exemple :


return

Le retour au programme appelant la fonction s'effectue grâce à l'instruction return. Cette instruction peut être employée sans paramètre si la fonction n'a pas de valeur de retour, ou avec un unique paramètre (si cela est nécessaire).

La syntaxe est :

Exemples :


void

Quand une fonction ne renvoie pas de résultats, on le précise, à la fois dans l'en-tête et dans sa déclaration, à l'aide du mot clé void. Par exemple, voici l'en-tête d'une fonction recevant un argument de type int et ne fournissant aucune valeur :

Naturellement, la définition d'une telle fonction ne doit contenir aucune instruction return.
Quand une fonction ne reçoit aucun argument, on place le mot clé void (le même que précédemment, mais avec une signification différente), à la place de la liste d'arguments. Voici l'en-tête d'une fonction ne recevant aucun argument et renvoyant une valeur de type float :

Enfin, rien n'empêche de réaliser une fonction ne possédant ni arguments ni valeur de retour. Dans ce cas, son en-tête sera de la forme :

Voici un exemple illustrant deux des situations évoquées. Nous y définissons une fonction affiche_carres qui affiche les carrés des nombres entiers compris entre deux limites fournies en arguments et une fonction erreur qui se contente d'afficher un message d'erreur.

Exemple :


argc, argv

La fonction main est paramétrable !
Supposons que l'exécution d'un programme soit lancée à l'aide d'une commande quelconque : com.
Introduisons dans cette commande des paramètres effectifs :

com  par_ef1  par_ef2  par_ef3
Ces paramètres effectifs qui sont des chaînes de caractères, pourront être transmis à la fonction principale main qui sera alors déclarée avec deux paramètres formels (quel que soit le nombre de paramètres effectifs de la commande d'exécution) :

argc et argv sont les identificateurs conventionnels que l'on utilise habituellement pour désigner ces deux paramètres formels. argc est une variable de type int qui sera égale au nombre de paramètres effectifs+1. Cet argument supplémentaire correspond au nom de la commande elle-même.

Le tableau de pointeurs disposera donc d'un nombre d'éléments égal au nombre de paramètres effectifs+2.

Exemple :

Ecrivons un programme permettant de calculer le produit de deux nombres entiers. Ces deux nombres seront introduits sous forme de paramètres effectifs de la commande.

Si cette commande s'appelle prod, on lancera : prod  17  36 par exemple et le programme renverra le produit de 17 par 36.

Le programme correspondant est :