3. Rappel sur les fonctions(2/2) Structure d’une fonction Nom + paramètres +instructions Avantages des fonctions Développer du code réutilisable Écriture de fonctions effectuant un certain traitement dans un programme. Possibilité d’effectuer le même traitement plusieurs fois dans un même programme. Poissibilité de réutiliser les fonctions dans d’autres programmes (enregistrées dans un fichier spécial (module)).
4. Distinction entre fonction et procédure Fonction Peut avoir 0 à n paramètres Séquence d’instructions Retourne un résultat Procédure Peut avoir 0 à n paramètres Séquence d’instructions Ne retourne aucun résultat
5. Exemple fonction Fonction de calcul de factorielle Paramètres (entrées) de la fonction Nombre x dont on veut calculer la factorielle. Valeur de retour Nombre correspondant au résultat du calcul de la factorielle de x Corps de la fonction Ensemble d’instructions et d’appels de fonctions pour effectuer le traitement (=le calcul de factorielle)
6. Exemple de procédure (1/2) Procédure d’initialisation d’une liste de taille 10 avec des ‘z’ avec affichage de la liste Paramètres de la procédure aucun Valeur de retour aucune Corps de la fonction Ensemble d’instructions et d’appels de fonctions pour remplir les éléments de la liste avec ‘z’
7. Exemple de procédure (2/2) Procédure d’initialisation d’une liste de taille 10 avec une chaine entrée en paramètre avec affichage de la liste après le remplissage Paramètres de la procédure: Chaine de caractère Valeur de retour aucune Corps de la fonction Ensemble d’instructions et d’appels de fonctions pour remplir les éléments de la liste avec la chaine entrée en paramètre y compris deux instructions d’affichage après la modification.
8. définition d’une fonction Syntaxe python Exemple defnomFonction(prm1,prm2,…,prmn) Instruction 1 Instruction2 … return valeurRetour deffactorielle(x): if (x==0): return 1 else: produit = 1 for i in range (1,x+1): produit = produit*i return produit
9. Définition d’une procédure Syntaxe python Exemple defnomFonction(param1,param2,…,paramn) Instruction 1 Instruction2 … defInitListe(paramChaine): liste=[] for i in range(10): liste.append(paramChaine) print liste InitListe("Allo!") defInitListe(): list=[ ] for i in range(10): list.append("z") printlist
10. Appel d’une fonction Déclaration de la fonction deffactorielle(x): …… return produit b= factorielle(3) print " La factorielle de 3 est",b a=input("Entrez x") print " La factorielle de",a, "est",factorielle(a) Appel de la fonction
11. Appel d’une procédure defInitListe(x): …… InitListe("Allo!") Déclaration de la fonction Appel de la fonction
12. Variables locales VS Variables globales Selon le lieu de déclaration Variables locales à la fonction Définies à l’intérieur de la fonction Accessibles à l’intérieur de la fonction Variables globales Définies à l’extérieur de la fonction Leur contenu est visible à l’intérieur de la fonction La fonction utilise une copie de son contenu (ne peut pas le modifier à l’extérieur de sa portée)
13. Arguments par défaut Assigner des arguments par défaut pour les paramètres -> possibilité d’appeler la fonction avec une partie des arguments attendus. Exemple def politesse(nom, vedette ='Monsieur'): print("Veuillez agréer ,", vedette, nom, ", mes salutations cordiales.« ) politesse('Dupont') politesse('Durand', 'Mademoiselle')
14. Arguments avec étiquettes def oiseau(voltage=100, etat='allume', action='danser la java'): ... print('Ce perroquet ne pourra pas', action) ... print('si vous le branchez sur', voltage, 'volts !') ... print("L'auteur de ceci est completement", etat) ... >>> oiseau(etat='givre', voltage=250, action='vous approuver') Dans Python Si tous les paramètres ont des valeurs d’arguments par défaut -> Appeler les arguments dans n’importe quel ordre.
15. Définir une fonction à l’intérieur d’une autre def fonction1(prm1,prm2.prm3): instr1 … def fonction2(prma,prmb): instr3 ….
16. Importer des fonctions définies dans d’autres modules Module: fonctionsAffichage.py defafficherMsgEntier(): print("Veuillez saisir un entier") defafficherMsgString(): print("Veuillez saisir une chaine") defafficherMsgBool(): print("Veuillez saisir un Booleen") Module: tstModule.py import fonctionsAffichage choix= input("0-Entier1-Chaine2-Booleen ") if choix==0: fonctionsAffichage.afficherMsgEntier() elif choix==1: fonctionsAffichage.afficherMsgString() elif choix==2: fonctionsAffichage.afficherMsgBool() else: print('Erreur!‘)
17. Exercice 1 Écrire et tester une fonction qui calcule la vitesse. Les paramètres d’entrées sont saisis au niveau du programme principal. Quels sont les paramètres de cette fonction? Quelle est la valeur de retour? distance , temps vitesse
18. Algo Exercice 1 Fonction calculVitesse(prmDistance,prmTemps) Début | |vitesse=prmDistance / prmTemps | | retourner vitesse | Fin Algorithme principal Début | |lire(distance,temps) |afficher(calculVitesse(distance,temps)) | Fin
19. Exercice 2 Écrire une fonction qui affiche le premier élément, le dernier élément, la taille d’une liste donnée en entrée, si la liste est vide afficher un message en conséquent. Quels sont les paramètres de cette fonction? Quelle est la valeur de retour? liste aucune valeur
20. Algo Exercice 2 Procédure affichagesListe(prmListe) Début | si liste non vide alors | afficher ("Le premier élément est:",liste[0]) | afficher ("Le dernier élément est:",liste[taille(liste)-1]) | afficher ("La taille de la liste est:",taille(liste)) | sinon | afficher ("La liste est vide") | fin si | Fin Algorithme principal Début | |liste1=[1,2,3,4,5,6,7,8,9] |affichageListe(liste1) |liste2=[‘a’,’b’,’b’,’allo’] |affichageListe(liste2) |liste3=[] |affichageListe(liste3) Fin
21. Problème 1 Hauteur Largeur Longeur Écrire un programme qui pour un parallélépipède permet d’effectuer les traitements suivants: Entrer les mesures(longeur, largeur, hauteur) Calculer le volume du solide Calculer les surfaces des trois faces caractéristiques du Parallélépipède et les afficher Dire si le Parallélépipède en question est un cube ou non. Identifier les fonctions à programmer En identifier les paramètres Identifier la valeur de sortie, en faisant la distinction entre procédure et fonction Écrire les fonctions dans un module fonctionsParall.py Écrire un script qui fait appel a ces fonctions dans un module principal.py
22. Solution Problème 1 Fonctions (et procédures) Lecture mesures du solide Paramètres: aucun Valeur de retour: liste des trois mesures Calcul et affichage volume du solide Paramètres: liste des trois mesures Valeur de retour: volume du solide Calcul et affichage surface face1 Paramètres: liste des trois mesures Valeur de retour: surface1 Calcul et affichage surface face2 Paramètres: liste des trois mesures Valeur de retour: surface2 Calcul et affichage surface face3 Paramètres: liste des trois mesures Valeur de retour: surface3 Tester si solide est cube Paramètres: liste des trois mesures Valeur de retour: vrai ou faux (valeur booléenne)
23. Problème 2 A l’aide du module turtle, nous désirons écrire un programme qui donne les dessins ci-bas. Pour ce faire nous désirons écrire deux fonctions comme suit: Une fonction carre qui dessine un carré, ayant pour paramètres une longueur et une couleur Une fonction dessin qui insère trois carrés de dimensions spécifiées par l’utilisateur, et respectivement de couleurs rouge, bleue et verte. N.B: Vous aurez à utiliser les fonctions suivantes du module turtle forward(taille) right(angle) Color(couleur)