Fonction

Quand un programme devient trop long ou bien qu’il fait plusieurs fois la même chose, on va utiliser ce qu’on appelle « fonctions », ces fonctions vont être des sortes de sous-programmes qui vont être appelées par votre main.

Par exemple si votre programme fait plusieurs fois une opération, vous pouvez la mettre dans votre fonction, et vous n’aurez plus qu’à appeler votre fonction pour réaliser l’opération.

Fonctionnement

Une fonction va recevoir des entrées, et renvoyer des sorties.

type_de_votre_sortie nomFonction(type_entree nom_variable_entree)
{
    // Traitement de la variable entrée
   
    return var_sortie;
}

Par exemple une fonction qui met au carré un nombre de type unsigned short (voir type de variable) :

Entrée : le nombre à mettre au carré de type unsigned short

Sortie : le nombre mis au carré de type unsigned long

unsigned long carre(unsigned short var_entree)
{
    unsigned long var_sortie;
    var_sortie = var_entree * var_entree;

return var_sortie;
}

Et dans votre main par exemple si vous voulez afficher le carré de 5.

printf("%lu", carre(5));

 

Structure

Un type que vous ne connaissez pas mais que vous allez souvent utiliser dans l’utilisation des fonctions est le type void.

C’est le type que vous allez mettre à votre fonction si elle ne renvoie rien.

void heure()
{
printf("Heure : %hu",heure);
}

 

Lorsque vous utilisez des fonctions vous devez les définir, comme quand vous définnissez vos variables. Il faudra donc pour cela mettre le prototype de la fonction avant le main.

type_de_votre_sortie nomFonction(type_entree nom_variable_entree);

Le prototype est la première ligne de votre fonction avec un point virgule à la fin.

 

Exemple

#include <stdio.h>
#include <stdlib.h>

unsigned long carre(unsigned short var_entree);   //prototype

void main()
{
     printf("%lu", carre(5));   //Appel de la fonction

    return 0;
}

//Fonction
unsigned long carre(unsigned short var_entree) 

{ 

     unsigned long var_sortie; 

    var_sortie = var_entree * var_entree;

    return var_sortie;    //Renvoie le nombre mis au carré

}