Apprendre le Langage C

Fonction

Définition :

Une fonction est une séquence d'instructions identifiée par un nom, appliquée à des paramètres d'un certain type et retournant une valeur d'un type donné.

Déclarer une fonction consiste à spécifier le type du résultat de la fonction, l'identificateur associé à cette fonction, la liste de ses paramètres ainsi que leurs types et, enfin, le corps de la fonction. La liste des paramètres est délimitée par « ( » et « ) », le corps de la fonction par « { » et « } ».

Le principe :

Nous avons vu qu'un sous-programme appelant peut communiquer des valeurs au sous-programme appelé. Mais est-il possible pour un sous-programme appelé de communiquer une valeur au sous-programme appelant ? La réponse est oui. Une fonction est un sous-programme qui communique une valeur au sous-programme appelant. Cette valeur s'appelle valeur de retour, ou valeur retournée.

Syntaxe :

Le code suivant définit une fonction nom_fonction renvoyant une valeur de type type_retour et prenant N arguments, par1 de type type1, par2 de type type2, etc.

type_retour nom_fonction(type1 par1, type2 par2, /* ..., */ typeN parN)
{
	/* Déclarations de variables ... */
	/* Instructions ... */
	return valeur_retounée;
}
			

L'exécution d'une fonction se termine soit lorsque l'accolade fermante est atteinte, soit lorsque le mot clef return est rencontré. La valeur renvoyée par une fonction est donnée comme paramètre à return.

Les passages des arguments aux fonctions se font toujours par valeur. Si on veut modifier la valeur d'un argument passé en paramètre à une fonction, en dehors de cette même fonction, il faut utiliser des pointeurs. Pour le moment nous allons nous intéresser au passage des arguments par valeur.

Exemple :

Nous allons définir une fonction carre qui retourne le carré de la valeur qui lui est passée en paramètre.

#include <stdio.h>
int	carre (int a)
{
	int b ;
	b = a * a ; 
	return b ; 
}

int main ( )
{
	int nb ;
	printf("Donnez un nombre \n") ;
	scanf("%d ", &nb) ;
	printf("Le carré de %d est %d \n ",nb,carre(nb) ) ;
	return 0 ;
}
			

On peut aussi faire le calcul dans le return comme le montre l'exemple suivant :

#include <stdio.h>
int	carre (int a)
{
	return a*a ; 
}

int main ( )
{
	int nb ;
	printf("Donnez un nombre \n") ;
	scanf("%d ", &nb) ;
	printf("Le carré de %d est %d \n ",nb,carre(nb) ) ;
	return 0 ;
}
			

Vous remarquez au passage que main est aussi une fonction. main est exécutée automatiquement au lancement du programme.