Créer Des Fonctions




Nous allons dans cette partie implémenter (coder) les fonctions triple, somme et salut pour pouvoir les appeler dans le main.


printf


Commençons par appeler printf dans le main, vous l'avez déjà fait plein de fois, inutile que j'insiste d'avantage, il suffit d'envoyer le texte à afficher en tant que paramètre :

int main()

{

    printf("Iaorana tout le monde !"); // Appel de la fonction printf


    return 0;

}


Le résultat ne devrait pas vous surprendre :

Iaorana tout le monde !


Vous venez d'effectuer un appel à la fonction printf !

C'est tout pour printf, vous savez déjà tout.


triple


Nous allons maintenant créer une nouvelle fonction, la fonction triple !

Je vous demande pour le moment d'implémenter vos fonctions au-dessus de la fonction main pour que le compilateur puisse reconnaître l'appel à triple .


Je vous présente la fonction triple :

int triple(int nb)

{

    int resultat = 3 * nb;


    return resultat; // On renvoie le résultat

}


Voilà, c'est ça une fonction, pas mal non ? Nous allons l'étudier ensemble.


L'architecture d'une fonction est la suivante :


  • Comme vous pouvez le remarquer, une fonction est typée, ici, son type est int. Cela veut dire que la valeur renvoyée sera un int. Retenez bien cette phrase, la valeur renvoyée d'une fonction devra toujours être la même que son type !

      Si la fonction ne renvoie pas de valeur, le type de la fonction est void (vide en anglais).


  • Entre les parenthèses nous avons un paramètre. C'est la valeur avec laquelle la fonction va travailler. Si la fonction doit travailler avec un int, le paramètre sera de type int.


  • La fonction est nommée, deux fonctions ne peuvent pas avoir le même nom en C, j'ai l'habitude de nommer mes fonctions de la même façon qu'une variable, c'est à dire en minuscule mais en ajoutant une majuscule à chaque nouveau mot comme par exemple maSuperFonction.


  • Enfin, entre les accolades ({ et }) on écrit nos instructions avec un return ou non, si la fonction est de type void, on ne mettra pas de return.


Dans notre fonction triple, notez la déclaration de resultat. Une variable déclarée à l'intérieur d'une fonction est accessible seulement dans cette dernière, elle est donc détruite à la fin de la fonction. La variable nb est elle aussi déclarée dans la fonction, nous en reparlerons plus loin.


On obtient ainsi un code source complet avec son appel :

int triple(int nb)

{

    int resultat = 3 * nb;


    return resultat;

}


int main()

{

    int nombre = 4;

    nombre = triple(nombre); // Appel de la fonction triple


    printf("Le triple de ce nombre est %d.", nombre);


    return 0;

}


On pourrait le schématiser comme ceci :



Hum, un peu compliqué je vous l'accorde, j'ai numéroté les étapes.


  • Première étape, lors de l'appel de la fonction triple, on rentre dans la fonction triple et on y déclare une variable nb de type int de même valeur que nombre, nb est juste une copie de nombre qui sera détruite à la fin de la fonction.

      On aurait très bien pu appeler nb, nombre ou encore nbr, l'essentiel est le type.

      On exécute ensuite la fonction grâce à la copie de nombre (que j'ai nommé ici nb).


  • Deuxième étape, on stocke ensuite la valeur que retourne la fonction dans la variable nombre et on continue la fonction main.


On obtient donc :

Le triple de ce nombre est 12.


On peut encore faire plus simple ! On peut renvoyer directement le résultat comme ci-dessous :

int triple(int nb)

{

    return 3 * nb;

}


Le résultat en console reste identique .


Un bon programmeur est un programmeur fainéant, essayez toujours de simplifier vos codes sources sans pour autant les rendre illisibles.


On peut aussi appeler des fonctions dans d'autres appels ! Ce qui nous donne au final un code source très simplifié :

int triple(int nb)

{

    return 3 * nb;

}


int main()

{

    printf("Le triple de ce nombre est %d.", triple(4)); // Appel de la fonction triple


    return 0;

}


C'est tout pour la fonction triple. Vous venez de voir les grandes bases que vous retrouverez dans toutes les fonctions, je vais donc moins développer les autres fonctions...


somme


Passons à la fonction somme, elle sera plus facile à expliquer, j'ai déjà tout dit...

Tenez, je vous donne le code source directement !



int somme(int a, int b)

{

    return a + b;

}


int main()

{

    printf("La somme de ces nombres est %d.", somme(2, 6)); // Appel de la fonction somme


    return 0;

}


La seule différence est la présence de 2 paramètres séparés par une virgule. Il faut simplement faire attention à l'ordre, sinon c'est exactement le même principe que la fonction triple.



salut


Pour finir, la fonction salut doit afficher Salut tout le monde ! à l'écran.


Il faut donc utiliser une fonction de type void !


En effet, notre fonction salut ne va retourner aucune valeur :

void salut()

{

    printf("Salut tout le monde !");

}


int main()

{

    salut(); // Appel de la fonction salut


    return 0;

}


La fonction exécute une simple instruction, un appel à la fonction printf.



C'est tout pour ces fonctions !


Ce que je veux que vous reteniez pour le moment :


  • Les fonctions qui renvoient une valeur avec return doivent être du même type que la valeur retournée.


  • Les fonctions qui ne renvoient aucune valeur et qui ne font qu'exécuter des instructions sont de type void.


  • Les fonctions qui ne prennent aucun paramètre font toujours la même chose, on dit qu'elles sont monotones et sont par conséquent beaucoup plus rares.

Créé avec HelpNDoc Personal Edition: Générateur de documentation et EPub facile