TP 2: PYTHON 3 – les fonctions Objectif : - Entrer dans la programmation fonctionnelle. Mise en œuvre de programmes utilisant des fonctions. Compétences : - C.2.1 Analyser C.2.3 Développer C.4.1 Documenter un projet numérique. Evaluation : - Recherche et analyse de problèmes Qualité des programmes produits Choix de la structure algorithmique adaptée (passage de paramètres …) Respect des consignes Documentation des programmes Autonomie Terminale Spécialité ISN Une fonction : pourquoi ? comment ? Un exemple (exemple.py): print ("Il y a de nombreux éditeurs permettant de travailler avec python, dans la mesure où n'importe quel éditeur de texte peut faire l'affaire. Naturellement, il existe des éditeurs plus spécialisés permettant d'avoir la coloration ") Imaginons que nous devions répéter cette instruction de nombreuses fois dans divers endroits du programme, L’écriture et l’analyse de ce code pourrait être fastidieuse. Pour palier ce problème, Python ( et d’autres langages comme C, Java …) nous permettent de réaliser des fonctions. Une fonction déclarée et définie dans un programme peut être utilisée à n’importe quel endroit de celui-ci. Reprenons l’exemple précédent en y définissant une fonction (exemple1.py) : Déclaration du nom de la fonction et définition des tâches associées def ecrire_nom(): print("Il y a de nombreux éditeurs permettant de travailler avec python, dans la mesure où n'importe quel éditeur de texte peut faire l'affaire.Naturellement, il existe des éditeurs plus spécialisés permettant d'avoir la coloration") ecrire_nom() Appel de la fonction ecrire_nom() dans le programme Exercice 1 : En définissant et utilisant une fonction ou des fonctions, produire un programme qui affiche n fois « Bonjour le monde » (n étant paramétré par l’utilisateur). Fonctions et variables : passages de paramètres : Dans l’exemple précédent, la fonction utilisée (qui n’est pas une fonction au sens mathématique)* n’utilise aucun paramètre et ne fourni aucune variable en sortie : c’est une fonction qui effectue des actions mais qui est muette d’un point de vue des variables. *En informatique, on les appelle parfois procédure en réservant le mot fonction aux fonctions mathématiques mais cet usage se fait de plus en plus rare ….) Fonctions utilisant une ou plusieurs paramètres : Exemple : Terminale Spécialité ISN 1 def calcul_age(a): 2 b=2012-a 3 return b 4 5 annee_de_naissance=int(input("indiquez votre année de naissance:\n")) 6 7 8 age=calcul_age(annee_de_naissance) 9 print('vous avez',age,'ans') La fonction calcul_age utilise un paramètre a et retourne un paramètre b qui sont deux entiers. Exercice 2 :Ecrire un programme qui détermine la somme des 20 premiers termes de la suite premier terme définie par 2 . de Fonction à plusieurs variables : Exercice 3 : Ecrire un programme qui détermine les racines éventuelles d’un trinôme. On créera une fonction calcul_delta(a,b,c) . Règles d’utilisation : Pour définir une fonction avec plusieurs paramètres, il suffit d'inclure ceux-ci entre les parenthèses qui suivent le nom de la fonction, en les séparant à l'aide de virgules. Lors de l'appel de la fonction, les arguments utilisés doivent être fournis dans le même ordre que celui des paramètres correspondants (en les séparant eux aussi à l'aide de virgules). Le premier argument sera affecté au premier paramètre, le second argument sera affecté au second paramètre, et ainsi de suite. Variables locales et variables locales : Lorsque nous définissons des variables à l'intérieur du corps d'une fonction, ces variables ne sont accessibles qu'à la fonction elle-même. On dit que ces variables sont des variables locales à la fonction. Exemple 3 : reprenons l’exemple 2 en ajoutant dans le corps du programme une commande d’affichage de la variable b définie dans la fonction calcul_age ()(« print(b) ») . Le programme nous renvoie alors un message d’erreur. Si nous ajoutons cette ligne de programme dans la fonction, le programme fonctionne. En effet, la variable est connue localement dans la fonction mais elle est inconnue à l’extérieur de celle-ci. 1 def calcul_age(a): 2 b=2012-a 3 return b 4 5 annee_de_naissance=int(input("indiquez votre année de naissance:\n") 6 Les variables définies à l'extérieur d'une fonction sont des variables globales. Leur contenu 7 age=calcul_age(annee_de_naissance) est8 «print(b) visible » de l'intérieur d'une fonction, mais la fonction ne peut pas les modifier si elles sont de type nombre,avez',age,'ans') chaînes de caractères ( on dit que ces types sont immutables). En 9 print('vous revanche, elles peuvent être modifiée si elles sont de type liste (type mutable) Terminale Spécialité ISN 1 2 3 4 5 6 7 8 9 Exemple : tester l’exemple suivant . n=2 def modifie_nombre(): n=5 modifie_nombre() print(n) On remarque que la variable n n’a pas été modifiée. Pour qu’elle puisse être modifiée, il faut ajouter dans la fonction : global n : 1 2 3 4 5 6 7 8 n=2 def modifie_nombre(): global n n=5 modifie_nombre() print(n) Cette fois-ci la variable est bien modifiée par la fonction Les listes sont mutables : tester l’exemple suivant. 1 2 3 4 5 6 7 8 n=[2] def modifie_nombre(): n[0]=5 modifie_nombre() print(n) Mini_projet : Convertisseur base 10 base 2 Objectif : Réaliser un programme qui convertisse un nombre donné dans une des bases dans l’autre base. Cahier des charges : Vous rendrez un fichier nommé groupe?_TP_conv.py contenant une fonction bin2dec (fonction permettant la conversion d’un nombre binaire en décimal), la fonction dec2bin (fonction permettant la conversion d’un nombre décimal en binaire) , une interface Homme/machine simple et quelques tests du programmes et des fonctions que vous aurez effectués. Vous devez également ajouter des commentaires permettant au lecteur de votre code de le comprendre sans ambiguïté. Terminale Spécialité ISN