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.
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.
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
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.
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; }
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.
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.
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; }
ê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
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
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
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