Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Les fonctions en language C

Les fonctions en language C

Boughida Adil

April 21, 2022
Tweet

More Decks by Boughida Adil

Other Decks in Education

Transcript

  1. Introduction ➢ Les fonctions et les procédures permettent d’éviter des

    séquences d’instructions répétitives dans le code d’un programme, elles permettent de simplifier l’écriture du code du programme et de le rendre plus lisible. ➢ Une fonction permet d’exécuter dans plusieurs partie du code d’un programme une même séquence d’instructions. Une procédure est une fonction qui ne retourne pas de valeur en sortie.
  2. Déclaration d’une fonction ➢ Une fonction est définie par son

    nom, une liste d’arguments qui correspondent à des informations qui lui sont transmises, son type de retour et la séquence d’instructions qu’il contient. ➢ Un prototype de fonction est simplement la déclaration d'une fonction qui spécifie le nom de la fonction, les paramètres et le type de retour. La syntaxe de la déclaration d’une fonction est la suivante : type_retour Nom_fonction(typeArg1 arg1, typeArg2 arg2, …) ; ◼ Dans les paramètres du prototype, seuls les types sont vraiment nécessaires, les identificateurs sont facultatifs. ◼ Placez le prototype au début du programme et la fonction devient utilisable partout dans le code.
  3. définition d’une fonction ➢ La syntaxe de la définition d’une

    fonction est la suivante : type_retour Nom_fonction(typeArg1 arg1, typeArg2 arg2, …) { séquence d’instructions de la fonction; } ➢ type_retour représente le type de retour de la fonction, si la fonction ne renvoie rien (cad une procédure) alors le type de retour sera le mot-clé void
  4. Appel d’une fonction ➢ Pour exécuter une fonction, il suffit

    de faire appel à elle en écrivant son nom suivi d’une parenthèse ouverte (avec éventuellement des arguments séparés par des virgules) puis d’une parenthèse fermée : nom_fonction(); // sans argument nom_fonction1(arg1, arg2, arg3); //arg1, arg3 et arg3 doivent être définis ➢ Une fonction doit être déclarée ou définie avant d’être appelée.
  5. L’instruction return ➢ L’instruction return permet de définir la valeur

    du résultat de la fonction, et, en même temps d’interrompre l’exécution de la fonction en revenant dans la fonction qui l’a appelée. ➢ Exemple : //calcule de x2 double calculCarre(double x) { return x*x; }
  6. L’instruction void ➢ L’instruction void permet de préciser qu’une fonction

    ne retourne aucune valeur (CAD une procédure) ➢ Exemple : void afficher(int x) { printf("Voici la valeur en argument de la fonction :%d",x); }
  7. Portée de variables ➢ On appelle portée (visibilité) d’une variable

    la portion du code où la variable peut être accessible (ou visible). ➢ On appelle variable globale une variable qui est accessible partout dans le code. Cette variable doit déclarée avant la définition de toute fonction ou tout bloc (entre { }, ou boucle) d’instructions. N’importe quelle fonction du programme pourra faire appel à cette variable. ➢ On appelle variable locale une variable qui a pour portée limitée seulement à l’intérieur du bloc d’instructions(entre accolades, dans une fonction ou boucle par exemple) dans lequel elle est déclarée.
  8. Portée de variables ➢ Les variables globales existent pendant toute

    l’exécution du programme dans lequel elles apparaissent. ➢ Les variables locales ont une « durée de vie » limitée à celle d’une exécution du bloc dans lequel elles figurent.
  9. Exemple d’utilisation ➢ Ecrire une fonction qui retourne la puissance

    5ème de son entrée //version1 int mafonction(int a) { return a*a*a*a*a; } //version2 int mafonction2(int a) { int resultat = 1; int i; for(i=1; i <= 5; i++) { resultat = resultat*a; } return resultat; }
  10. Remarques ➢ Le langage C ne permet pas l’imbrication des

    fonctions. ➢ Si le type d'une fonction n'est pas déclaré explicitement, elle est automatiquement du type int.
  11. 12 ◼ La récursivité est un concept général qui peut

    être illustré dans (quasiment) tous les langages de programmation, et qui peut être utile dans de nombreuses situations. ◼ La définition la plus simple d'une fonction récursive est la suivante : ◼ C’est une fonction qui s'appelle elle-même. ◼ Si dans le corps (le contenu) de la fonction, vous l'utilisez elle-même, alors elle est récursive. Fonction récursive
  12. Exemple : fonction factorielle La factorielle de n notée n!

    est le produit de tous les entiers de 1 à n. Une méthode consiste à programmer cette fonction de manière itérative. Voici ce que donne le programme écrit en langage C : int factorielleIterative(int n){ int f = 1; for(int k = n; k > 1; k--) f = k * f; return f; } Fonction récursive
  13. Récursivité Pour montrer l'intérêt de la récursivité, nous allons maintenant

    coder cette fonction en utilisant une propriété de la factorielle. On a effectivement : n! = n.(n-1)! Cette propriété est très intéressante, car elle permet de calculer n! à partir de (n-1)!. Or (n-1)! Peut être calculé de la même manière à partir de (n-2)! Etc Cependant, si on ne fait que répéter à l'infini cette méthode, le calcul ne donnera jamais de résultat. Pour cela, il faut définir un cas pour lequel on obtient le résultat. Dans notre exemple ce cas est : 1!=1 A partir de ce résultat, on peut calculer n! pour tout n≥1. Fonction récursive
  14. Ainsi, de manière récursive : En pratique, l’appel factorielle(10) entraîne

    l’appel factorielle(9), qui entraîne lui-même l’appel factorielle(8) etc… et ainsi de suite, jusqu’à l’appel factorielle(0) qui renvoie 1. En conclusion de cette introduction, on dira qu’une fonction f est récursive si son exécution peut provoquer un ou plusieurs appels de f elle-même. Fonction récursive Condition d’arrêt Appel récursif