Leçon 8 : les fonctions

Cette page de révision ne correspond pas à une manipulation.
pas FB

Vocabulaire

Pour nous, les mots fonction, routine, et sous-programme seront synonymes.
Ces mots désignent un ensemble d'instructions comprises entre 2 accolades.

exemple de fonction sans paramètres :
void maFonction()   {         // les parenthèses sont vides
        instruction1;
        instruction2;
        etc...
}

exemple de fonction qui reçoit des paramètres :
void monAutreFonction(param1, param2)     {         // les paramètres sont séparés par des virgules
        instruction1;
        instruction2;
        etc...
}
évidemment, ces paramètres sont utilisés dans la fonction. Sinon ils sont inutiles.

exemple de fonction qui renvoit une valeur :
int maTroisiemeFonction() {
        instruction1;
        instruction2;
        etc...
        return (valeur retournée);
}
Pour utiliser cette fonction, on doit avoir déclaré un int qui en reçoit la valeur de retour :
int monEntier;
monEntier = maTroisièmeFonction();

Origine des fonctions

1 - Les fonctions les plus utilisées sont incluses dans la noyau d'Arduino. On les appelle quand on en a besoin.
exemple : la fonction delay();
2 - D'autres sont dans des bibliothèques. Pour les utiliser, notre programme doit inclure la bibliothèque concernée
exemples : les fonction de gestion des afficheurs qui sont dans la bibliothèque LiquidCrystal.h .
3 - Enfin, il y a les fonctions que l'on crée nous-même.
exemple : la fonction jouer() que nous avons employée dans la leçon 7.

Fonction avec paramètres

Quand on déclare la fonction, on précise quel type de paramètre elle reçoit.
Quand on l'utilise, on doit lui passer des paramètres correspondant à cette définition.
Quand on la définit, on donne des noms aux paramètres. Ces noms ne sont pas forcément les mêmes que dans le programme principal, mais doivent être les mêmes dans le titre et à l'intérieur.
Exemple pris dans la leçon 7 :


      // déclaration : on indique seulement le type de paramètres
      void jouer(int* , int* , int );
     
     
      // lors de l'appel de la fonction, on passe des paramètres déjà connus
      jouer(frereJacques1, dureeJacques1, 14);
     
     
      // lors de la définition de la fonction, on donne des noms aux paramètres
      void jouer(int* listeNotes, int* dureesNotes, int nbNotes)       {
           for (int numNote = 0; numNote < nbNotes; numNote++)      {
                  int duree = dureesNotes[numNote];
                  tone(8, listeNotes[numNote],noteDuration);
                  // On sépare les notes d'un intervale égal à 1,3 fois la note jouée.
                  int pause = duree * 1.30;
                  delay(pause);
            }
      }

Dans ce cas, le paramètre listeNotes aura pour valeur frerejacques1.
Dans d'autres appels, il aura les autres valeurs qui lui sont passées. Par exemple frereJacques2 ou laTruite1.

Créer des fonctions ayant une valeur de retour

Nous allons créer des fonctions très simples qui donnent le double, la moitié et le carré d'un nombre.
Étudiez bien comment elles sont appelées.

valeurs haut
valeurs bas

J'ai utilisé 2 méthodes :
1 - la valeur de retour de la fonction leDouble va dans la variable monDouble qui est ensuite utilisée par Serial.println();
2 - la valeur de retour des fonctions leCarre et laDemie sont directement utilisées par la fonction Serial.println();



haut de la page


flèche gauche Retour à la leçon 7 : la musique           Page Suivante : les phases flèche droite