Theme 7 Fonctions originales2011-03-03
Rappel sur les fonctions (1/2)EntréesSortie
Rappel sur les fonctions(2/2)Structure d’une fonctionNom + paramètres +instructionsAvantages des fonctionsDé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)).
Distinction entre fonction et procédureFonctionPeut avoir 0 à n paramètresSéquence d’instructionsRetourne un résultatProcédurePeut avoir 0 à n paramètresSéquence d’instructionsNe retourne aucun résultat
Exemple fonctionFonction de calcul de factorielleParamètres (entrées) de la fonctionNombre x dont on veut calculer la factorielle.Valeur de retourNombre correspondant au résultat du calcul de la factorielle de xCorps de la fonctionEnsemble d’instructions et d’appels de fonctions pour effectuer le traitement (=le calcul de factorielle)
Exemple de procédure (1/2)Procédure d’initialisation d’une liste de taille 10 avec des ‘z’ avec affichage de la listeParamètres de la procédureaucunValeur de retouraucuneCorps de la fonctionEnsemble d’instructions et d’appels de fonctions pour remplir les éléments de la liste avec ‘z’
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 remplissageParamètres de la procédure:Chaine de caractèreValeur de retouraucuneCorps de la fonctionEnsemble 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.
définition d’une fonctionSyntaxe pythonExempledefnomFonction(prm1,prm2,…,prmn)Instruction 1Instruction2…return valeurRetourdeffactorielle(x):    if (x==0):        return 1else:        produit = 1        for i in range (1,x+1):            produit = produit*i        return produit
Définition d’une procédureSyntaxe pythonExempledefnomFonction(param1,param2,…,paramn)Instruction 1Instruction2…defInitListe(paramChaine):       liste=[]       for i in range(10):liste.append(paramChaine)print listeInitListe("Allo!") defInitListe():   list=[ ]      for i in range(10):list.append("z")printlist
Appel d’une fonctionDéclaration de la fonctiondeffactorielle(x):……        return produitb=    factorielle(3)print " La factorielle de 3 est",ba=input("Entrez x")print " La factorielle de",a, "est",factorielle(a)Appel de la fonction
Appel d’une procéduredefInitListe(x):……InitListe("Allo!")Déclaration de la fonctionAppel de la fonction
Variables locales VS Variables globalesSelon le lieu de déclarationVariables locales à la fonctionDéfinies à l’intérieur de la fonctionAccessibles à l’intérieur de la fonctionVariables globalesDéfinies à l’extérieur de la fonctionLeur 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)
Arguments par défautAssigner des arguments par défaut pour les paramètres -> possibilité d’appeler la fonction avec une partie des arguments attendus.Exempledef politesse(nom, vedette ='Monsieur'):    print("Veuillez agréer ,", vedette, nom, ", mes salutations cordiales.« ) politesse('Dupont')politesse('Durand', 'Mademoiselle')
Arguments avec étiquettesdef 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 PythonSi tous les paramètres ont des valeurs d’arguments par défaut -> Appeler les arguments dans n’importe quel ordre.
Définir une fonction à l’intérieur d’une autredef fonction1(prm1,prm2.prm3):		instr1			…def fonction2(prma,prmb):		       instr3		       ….
Importer des fonctions définies dans d’autres modulesModule: fonctionsAffichage.pydefafficherMsgEntier():print("Veuillez saisir un entier")defafficherMsgString():print("Veuillez saisir une chaine")defafficherMsgBool():print("Veuillez saisir un Booleen")Module: tstModule.pyimport fonctionsAffichagechoix= input("0-Entier\n1-Chaine\n2-Booleen\n ")if choix==0:        fonctionsAffichage.afficherMsgEntier()elif choix==1:fonctionsAffichage.afficherMsgString()elif choix==2:fonctionsAffichage.afficherMsgBool()else:print('Erreur!‘)
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 , tempsvitesse
Algo Exercice 1Fonction  calculVitesse(prmDistance,prmTemps)Début| |vitesse=prmDistance / prmTemps|| retourner vitesse|FinAlgorithme  principalDébut||lire(distance,temps)|afficher(calculVitesse(distance,temps))|Fin
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?listeaucune valeur
Algo Exercice 2Procé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|FinAlgorithme  principalDébut||liste1=[1,2,3,4,5,6,7,8,9]|affichageListe(liste1)|liste2=[‘a’,’b’,’b’,’allo’]|affichageListe(liste2)|liste3=[]|affichageListe(liste3)Fin
Problème 1HauteurLargeurLongeurÉ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 solideCalculer les surfaces des trois faces caractéristiques du Parallélépipède et les afficherDire si le Parallélépipède en question est un cube ou non.Identifier les fonctions à programmerEn identifier les paramètresIdentifier 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
Solution Problème 1Fonctions (et procédures)Lecture mesures du solide Paramètres: aucunValeur de retour: liste des trois mesuresCalcul et affichage volume du solideParamètres: liste des trois mesuresValeur de retour: volume du solideCalcul et affichage  surface face1Paramètres: liste des trois mesuresValeur de retour: surface1Calcul et affichage  surface face2Paramètres: liste des trois mesuresValeur de retour: surface2Calcul et affichage  surface face3Paramètres: liste des trois mesuresValeur de retour: surface3Tester si solide est cubeParamètres: liste des trois mesuresValeur de retour: vrai ou faux (valeur booléenne)
Problème 2A 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 turtleforward(taille)right(angle)Color(couleur)

Theme 7

  • 1.
    Theme 7 Fonctionsoriginales2011-03-03
  • 2.
    Rappel sur lesfonctions (1/2)EntréesSortie
  • 3.
    Rappel sur lesfonctions(2/2)Structure d’une fonctionNom + paramètres +instructionsAvantages des fonctionsDé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 fonctionet procédureFonctionPeut avoir 0 à n paramètresSéquence d’instructionsRetourne un résultatProcédurePeut avoir 0 à n paramètresSéquence d’instructionsNe retourne aucun résultat
  • 5.
    Exemple fonctionFonction decalcul de factorielleParamètres (entrées) de la fonctionNombre x dont on veut calculer la factorielle.Valeur de retourNombre correspondant au résultat du calcul de la factorielle de xCorps de la fonctionEnsemble 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 listeParamètres de la procédureaucunValeur de retouraucuneCorps de la fonctionEnsemble 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 remplissageParamètres de la procédure:Chaine de caractèreValeur de retouraucuneCorps de la fonctionEnsemble 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 fonctionSyntaxepythonExempledefnomFonction(prm1,prm2,…,prmn)Instruction 1Instruction2…return valeurRetourdeffactorielle(x): if (x==0): return 1else: produit = 1 for i in range (1,x+1): produit = produit*i return produit
  • 9.
    Définition d’une procédureSyntaxepythonExempledefnomFonction(param1,param2,…,paramn)Instruction 1Instruction2…defInitListe(paramChaine): liste=[] for i in range(10):liste.append(paramChaine)print listeInitListe("Allo!") defInitListe(): list=[ ] for i in range(10):list.append("z")printlist
  • 10.
    Appel d’une fonctionDéclarationde la fonctiondeffactorielle(x):…… return produitb= factorielle(3)print " La factorielle de 3 est",ba=input("Entrez x")print " La factorielle de",a, "est",factorielle(a)Appel de la fonction
  • 11.
  • 12.
    Variables locales VSVariables globalesSelon le lieu de déclarationVariables locales à la fonctionDéfinies à l’intérieur de la fonctionAccessibles à l’intérieur de la fonctionVariables globalesDéfinies à l’extérieur de la fonctionLeur 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éfautAssignerdes arguments par défaut pour les paramètres -> possibilité d’appeler la fonction avec une partie des arguments attendus.Exempledef politesse(nom, vedette ='Monsieur'):    print("Veuillez agréer ,", vedette, nom, ", mes salutations cordiales.« ) politesse('Dupont')politesse('Durand', 'Mademoiselle')
  • 14.
    Arguments avec étiquettesdefoiseau(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 PythonSi 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 autredef fonction1(prm1,prm2.prm3): instr1 …def fonction2(prma,prmb): instr3 ….
  • 16.
    Importer des fonctionsdéfinies dans d’autres modulesModule: fonctionsAffichage.pydefafficherMsgEntier():print("Veuillez saisir un entier")defafficherMsgString():print("Veuillez saisir une chaine")defafficherMsgBool():print("Veuillez saisir un Booleen")Module: tstModule.pyimport fonctionsAffichagechoix= input("0-Entier\n1-Chaine\n2-Booleen\n ")if choix==0: fonctionsAffichage.afficherMsgEntier()elif choix==1:fonctionsAffichage.afficherMsgString()elif choix==2:fonctionsAffichage.afficherMsgBool()else:print('Erreur!‘)
  • 17.
    Exercice 1Écrire ettester 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 , tempsvitesse
  • 18.
    Algo Exercice 1Fonction calculVitesse(prmDistance,prmTemps)Début| |vitesse=prmDistance / prmTemps|| retourner vitesse|FinAlgorithme principalDébut||lire(distance,temps)|afficher(calculVitesse(distance,temps))|Fin
  • 19.
    Exercice 2Écrire unefonction 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?listeaucune valeur
  • 20.
    Algo Exercice 2Procé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|FinAlgorithme principalDé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 1HauteurLargeurLongeurÉcrire unprogramme qui pour un parallélépipède permet d’effectuer les traitements suivants:Entrer les mesures(longeur, largeur, hauteur)Calculer le volume du solideCalculer les surfaces des trois faces caractéristiques du Parallélépipède et les afficherDire si le Parallélépipède en question est un cube ou non.Identifier les fonctions à programmerEn identifier les paramètresIdentifier 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 1Fonctions(et procédures)Lecture mesures du solide Paramètres: aucunValeur de retour: liste des trois mesuresCalcul et affichage volume du solideParamètres: liste des trois mesuresValeur de retour: volume du solideCalcul et affichage surface face1Paramètres: liste des trois mesuresValeur de retour: surface1Calcul et affichage surface face2Paramètres: liste des trois mesuresValeur de retour: surface2Calcul et affichage surface face3Paramètres: liste des trois mesuresValeur de retour: surface3Tester si solide est cubeParamètres: liste des trois mesuresValeur de retour: vrai ou faux (valeur booléenne)
  • 23.
    Problème 2A l’aidedu 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 turtleforward(taille)right(angle)Color(couleur)