Nous avons 22 invités et aucun membre en ligne

Allez voir ma vidéo Youtube : [7] Programmation PIC en C : Les Fonctions

Les fonctions sont des outils très pratiques et utiles pour l'optimisation de vos programmes. Ils permettent de catégoriser les actions afin de rendre le code plus lisible.

Le «main()», la fonction principale de nos programmes, est une fonction essentielle pour la programmation en C. Vous pouvez créer d'autres fonctions pour regrouper plusieurs actions qui on le même but (objectif). Par exemple, on peut regrouper ensemble toutes les actions reliées à l'affichage et regrouper toutes les actions reliées au contrôle.

Lorsque qu'on veut utiliser les fonctions, il faut les déclarer en en-tête de programme (avant le main()). Par exemple :

void LireClavierMatrix(void);

Le point-virgule est important puisqu'il est considéré comme une action. Ensuite, il faut définir la fonction en bas de page. Ainsi, lorsque le programme commence, il sait qu'il va trouver une fonction du nom de LireClavierMatrix() dans le programme puisqu'il l'a vu dans la déclaration et si on l'utilise dans notre programme principal (main()), il va pouvoir exécuter la fonction en bas de page. Pour la définition de la fonction, on écrit exactement la même ligne d'instruction que dans la définition, mais cette fois-ci, on ne met pas le point-virgule, on met plutôt des accolades suivies des actions à réaliser :

void LireClavierMatrix(void)
{
   // Actions à effectuer
}

Pour communiquer des valeurs entre le programme principal (main()) et les fonctions, il existe des paramètres d'entrée et de sortie. Il faut savoir qu'il peut y avoir plusieurs paramètres d'entrée, mais qu’il n’existe qu'un seul paramètre de sortie.

Les paramètres d'entrée

Les paramètres d'entrée se trouvent dans les parenthèses de la fonction. C'est nous qui choisissons la grosseur de la ou des variables qu'on veut en entrée. Cela peut être des variables de 8-bits, de 16-bits ou plus. Donc, lorsqu'on fait la déclaration et la définition, il faut le préciser dans les parenthèses. Par exemple :

// Déclaration de fonctions
void Delais_ms(int seconde);     // Initialise une variable appelé "seconde" de valeur 16-bit.

// Programme Principal
void main(void)
{
  while(1)
  {
    Delais_ms(4000);    // Appel de fonction.
  }
}

// Définition de fonctions
void Delais_ms(int seconde)
{
   // Actions ici.
}

La variable de 16-bit appelée "seconde" est alors initialisée lorsque le programme appelle la fonction et c'est une variable locale. Ça veut dire que la variable est uniquement disponible dans cette fonction particulière. Si vous tentez d'utiliser cette variable locale dans le main(), elle ne sera pas reconnue par le programme.

Pour appeler une fonction avec un paramètre d'entrée, il suffit d'écrire une valeur ou une variable entre les parenthèses :

Delais_ms(6000);

Dans le cas où nous avons plusieurs paramètres d'entrée, on peut écrire l'action sous cette forme :

Affichage(variable1, variable2, variable3);

Le paramètre de sortie

Comme je l'ai mentionné plus haut, pour une fonction donnée, il n’y a qu’un paramètre de sortie possible. Comme pour les paramètres d'entrée, on peut retourner n'importe quelle nombre ou valeur de variable.

Dans la déclaration de la fonction et dans sa définition, on doit mentionner le paramètre de sortie du côté gauche de la fonction. Par exemple :

// Déclaration de fonction
int CalculMathematique(void);

// Définition de fonction
int CalculMathematique(void)
{
   unsigned int Resultat;
   // Calcul Mathématique ici

   return Resultat;     // Resultat étant la variable à retourner au main.
}

Lorsque nous voulons retourner une valeur dans le programme principal, il suffit d'utiliser l'expression return.

return Resultat;     // Resultat étant la valeur de la variable à retourner au main.

Il faut savoir aussi que la variable « Resultat » est aussi une variable locale, à moins que nous l'ayons initialisée comme une variable globale. Ainsi lorsqu'on retourne la variable « Resultat », on retourne seulement sa valeur. Dans notre programme principal, on récupère la valeur du « Resultat » comme suit :

Variable1 = CalculMathematique(void);

Ainsi, la valeur retournée de « Resultat » est mise dans la variable « Variable1 » que nous pouvons maintenant utiliser dans le main().

Allez voir ma vidéo Youtube : [7] Programmation PIC en C : Les Fonctions