Leçon 8 : les fonctions

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.


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

