This page was exported from Enseignement de l'informatique et du numérique au lycée Boissy d'Anglas
[ https://icn-isn-boissy.yj.fr/wp ] Export date: Sat Apr 26 6:35:27 2025 / +0000 GMT |
5- Les fonctions5.1. Pourquoi a-t-on besoin de fonctions ?Étudions le programme ci-dessous qui calcule et affiche la moyenne de 4 élèves sur trois notes: (Exécuter le programme ci-dessous)
Que se passe-t il si on ajoute 2 nouveaux élèves dans le groupe ? On ré-écrit le code de calcul de la moyenne pour les notes de ces élèves là. Un peu ennuyant. Que se passe-t-il si on veux ajouter une note supplémentaire ?
On doit ajouter une note pour Anne, et on change le calcul de la moyenne en ajoutant la note supplémentaire et en divisant par 4. Et ensuite, on doit faire cela pour Boris, Celine, Denis et les deux nouveaux... Fastidieux ! Que se passe-t-il si on veut en plus afficher un message selon la moyenne obtenue? Exemple pour Anne et Boris:
On a joute du code pour chaque élève qui se ressemble. Ça commence à devenir long, compliqué, et on peut facilement se tromper, alors que les tâches sont très répétitives ! Quand une tâche peut être effectuée plusieurs fois dans un programme, il devient vite TRÈS INTÉRESSANT d'utiliser un morceau de programme qu'on va réutiliser : on isole alors ce morceau de code dans un BLOC qu'on appelle FONCTION Exemple (la syntaxe de la fonction sera expliquée plus loin) :
Ce qu'on a gagné : On a écrit une seule fois le calcul de la moyenne. Si on ajoute 2 élèves, on appelle 2 fois la fonction Si on ajoute une note, on ne change que le contenu de la fonction calcule_et_affiche_moyenne() Si on veut ajouter l'affichage d'un message, on peut le faire dans la fonction sans changer le programme principal Par exemple :
Comparez maintenant ce dernier programme avec le premier : avec moins de lignes de programme, on fait plus de choses, et en plus ça reste très lisible ! c'est aussi très utile si la personne qui définit la fonction est différente de celle qui l'utilise on peut ainsi utiliser une fonction que l'on n'a pas codé sois même, simplement, on l'appelle ! Comme par exemple la fonction Un script bien structuré contiendra un programme dit principal, et plusieurs sous-programmes codés dans des fonctions dédiées à des fonctionnalités spécifiques. ![]() 5.2. Syntaxe : comment écrire une fonctionLa syntaxe Python pour la définition d'une fonction est la suivante :
Vous pouvez choisir le nom de votre choix pour la fonction que vous créez, sauf les mots-clés réservés du langage (par exemple On utilise par convention des minuscules, notamment au début du nom. Comme les instructions if, for et
5.3. Fonctions et paramètresFonction sans paramètre.Exemple : def bonjour(): print("Bonjour") def compteur(): for i in range(3): print(i) Nous avons défini une première fonction qui affiche le texte Bonjour et une deuxième fonction simple qui affiche les entier de 0 à 4. Avoir une fonction, c'est bien mais encore faut-il l'utiliser : bonjour() compteur() Nous pouvons maintenant réutiliser cette fonction à plusieurs reprises, autant de fois que nous le souhaitons. Nous pouvons également l'incorporer dans la définition d'une autre fonction. Exemple de fonction qui appelle une autre fonction : def poli(): for i in range(3): bonjour() poli() Une première fonction peut donc appeler une deuxième fonction, qui elle-même en appelle une troisième, etc. Créer une nouvelle fonction offre l'opportunité de donner un nom à tout un ensemble d'instructions. De cette manière, on peut simplifier le corps principal d'un programme, en dissimulant un algorithme secondaire complexe sous une commande unique, à laquelle on peut donner un nom explicite. Une fonction est donc en quelque sorte une nouvelle instruction personnalisée, qu'il est possible d'ajouter librement à notre langage de programmation. Fonction avec paramètres.Exemple : def bonjour(nom): print("Bonjour {}".format(nom)) def compteur(stop): for i in range(stop): print(i) compteur(5) Pour tester ces fonctions, il faut les appeler avec un argument : bonjour("toto") compteur(4) On peut bien sûr avoir des fonctions qui appellent des fonctions : def trespoli(nbfois): for i in range(nbfois): bonjour("tata toto") trespoli(3) Utilisation d'une variable comme argument.L'argument que nous utilisons dans l'appel d'une fonction peut être une variable. Exemple : a = "Bart Simpson" bonjour(a) Dans l'exemple ci-dessus, l'argument que nous passons à la fonction Notez donc bien dès à présent que :
Fonction avec plusieurs paramètres.Exemples : def bonjour(prenom, nom): print("Bonjour " + prenom + " " + nom) bonjour("Homer","Simpson") bonjour("Marge","Simpson") La fonction suivante utilise trois paramètres : def compteur(start, stop, step): for i in range(start, stop, step): print(i) compteur(1, 7, 2) À retenir:
def politesse(nom, titre ="Monsieur"): print("Veuillez agréer,", titre, nom, ", mes salutations distinguées.") politesse("Dupont") Valeurs par défaut pour les paramètresDans la définition d'une fonction, il est possible de définir un argument par défaut pour chacun des paramètres. On obtient ainsi une fonction qui peut être appelée avec une partie seulement des arguments attendus. Exemples : def compteur(start, stop, step=1): for i in range(start, stop, step): print(i) compteur(1, 4) Lorsque l'on appelle cette fonction en ne lui fournissant que les deux premier arguments, le troisième argument step second reçoit tout de même une valeur par défaut (ici 1). alors que l'oubli d'un paramètre amène à une erreur comme ci-dessous. def compteur(start, stop, step): for i in range(start, stop, step): print(i) compteur_complet(1, 7) Arguments avec étiquettesDans la plupart des langages de programmation, les arguments que l'on fournit lors de l'appel d'une fonction doivent être fournis exactement dans le même ordre que celui des paramètres qui leur correspondent dans la définition de la fonction. Python autorise l'appel aux fonctions en fournissant les arguments correspondants dans n'importe quel ordre, à la condition de désigner nommément les paramètres correspondants. Exemple : def compteur(start, stop, step): for i in range(start, stop, step): print(i) compteur_complet(step=2, stop=4, start=1) 5.4. Les fonctions avec returnVous avez vu en mathématiques les fonctions pour un x donné retournent une valeur f(x) (éventuellement). python utilise le mot clé return Par exemple pour la fonction f : x ⟼ 2x + 3 on utilisera la fonction : def f(x): return 2*x+3 print(f(0)) print(f(1)) Les fonctions permettent donc de décomposer un programme complexe en une série de sous-programmes plus simples. De plus, les fonctions sont réutilisables : si nous disposons d'une fonction capable de calculer une racine carrée, par exemple, nous pouvons l'utiliser un peu partout dans notre programme sans avoir à la réécrire à chaque fois (on parle de factorisation du code) La notion de fonction en informatique est comparable à la notion de fonction en mathématiques. ![]() Si nous avons y = 3x+2, pour une valeur donnée de x, nous aurons une valeur de y. Exemple : x=4 donc y= 14 (y = 3.4+2=14, attention ici le point correspond au signe "multiplié"). La fonction en informatique est basée sur la même idée : ![]() Voici la syntaxe employée en Python pour définir une fonction :
La fonction renvoie la valeur contenue dans la variable y. ATTENTION : Notez bien la présence du décalage entre la première ligne et les lignes suivantes. Ce décalage est appelé indentation, l'indentation permet de définir un bloc de code. Dans l'exemple ci-dessus, l'indentation nous permet de savoir que "instruction_1", "instruction_2" et "return y" constituent un bloc de code, ce bloc correspond au contenu de la fonction. "suite programme" ne fait pas partie de la fonction, car il n'est pas indenté. Pour indenter du code, il y a 2 solutions : mettre 4 espaces ou utiliser une tabulation. En Python il est conseillé d'utiliser les 4 espaces, mais ce n'est pas une obligation. Une chose est sûre, une fois que vous avez choisi une méthode, n'en changez surtout pas au cours d'un même programme ! Codons notre exemple (y = 3x + 2) en créant une fonction ma_fonction :
Pour "utiliser" la fonction ma_fonction, il suffit d'écrire : ma_fonction (4) (dans ce cas précis, notre fonction renverra le nombre 14). À faire vous-même 28Tester le programme suivant (quelle est la valeur référencée par la variable solution après l'exécution du programme) :
Il faut savoir qu'au moment de l'exécution de votre programme le code ma_fonction(4) sera systématiquement remplacé par la valeur renvoyée par la fonction (toujours dans notre exemple le ma_fonction(4) sera remplacé par le nombre 14). À faire vous-même 29Coder en Python la fonction y = x2+2x+10 Il est possible d'écrire une fonction dans l'éditeur : ![]() et d'utiliser la console (après exécution du programme) pour obtenir la valeur renvoyée par une fonction ![]() Il est possible de faire passer plusieurs paramètres à une fonction. À faire vous-même 30Quel est le résultat renvoyé par la fonction ci-dessous si l'on saisit dans la console une_autre_fonction(5, 3)
Les paramètres peuvent être des chaînes de caractères (ainsi que la valeur retournée) À faire vous-même 31Quel est le résultat attendu après l'exécution du programme ci-dessous et la saisie dans la console de "dit_bonjour("toto", 14)" ?
Attention : remarquez bien les guillemets autour du paramètre "toto" (c'est une chaîne de caractères) Les paramètres ne sont pas obligatoires. À faire vous-même 32Tester la fonction suivante :
Il faut aussi savoir qu'une fonction ne renvoie pas forcément de valeur (le mot clé return n'est pas obligatoire). Mais si elle ne renvoie pas de valeur, que fait-elle ? Elle peut faire plein de choses, par exemple elle peut tout simplement afficher une chaîne de caractères à l'aide d'un "print". Sachez que dans certains langages, on utilise les termes méthode ou procédure pour qualifier une fonction "qui ne renvoie rien". À faire vous-même 33Soit le programme suivant :
Tester la fonction dit_bonjour à l'aide de la console (avec par exemple un dit_bonjour("toto", 14)) À faire vous-même 34 L'indice de masse corporelle (IMC) est une grandeur qui permet d'estimer la corpulence d'une personne. |
Post date: 2019-09-04 17:10:53 Post date GMT: 2019-09-04 15:10:53 Post modified date: 2024-09-16 10:23:55 Post modified date GMT: 2024-09-16 08:23:55 |
Powered by [ Universal Post Manager ] plugin. HTML saving format developed by gVectors Team www.gVectors.com |