Les fonctions

    Intérêt des fonctions
     
    Les fonctions sont très utiles pour organiser et optimiser le codage.
    Un programme peut en effet être décomposé en plusieurs parties :
    chaque partie peut faire l'objet d'une fonction comme le montre le schéma suivant.
    structurerCodePrincipe
    Le schéma montre aussi qu'une même fonction peut être utilisée plusieurs fois : cela évite d'avoir plusieurs fois le même code dans un même programme.
    Vous noterez aussi l'importance de mettre des commentaires : cela améliore la lisibilité du programme.
     
    L'organisation en fonction et les commentaires contribuent à faciliter la mise au point des programmes en décomposant le travail en différentes parties.

    Certains langage de programmation utilise le terme de procédure comme équivalent des fonctions.

    Une fonction se caractérise comme suit :

    fonctionPrincipe

    Une fonction peut utiliser des paramètres pour réaliser un traitement donné. Ce n'est pas une obligation, mais généralement il y a un ou plusieurs paramètres donnés à la fonction.

    La fonction peut retourner des valeurs, c'est à dire que le résultat du traitement en renvoyé. Ce n'est pas non plus une obligation de retourner des valeurs !

    Plusieurs langages de programmation utilise le mot clef return suivi des variables à retourner pour renvoyer celles-ci.

    Fonction en python
     

    Faire les exercices de David Roche sur les fonctions. (A faire vous-même 16 à 21)

    a- Une fonction qui ne fait rien

    Tester le code suivant :

    def ditBonjour(nom, age):
    	phrase = f"Bonjour {nom}, vous avez {age} ans."
    ditBonjour('Baptiste',14)
    ditBonjour('Ninon',11)
    ditBonjour('Titouan',7)

    Pourquoi cela n’affiche rien ?

    Corriger le code de la fonction pour que cela affiche les 3 phrases.

    b - Variable locale vs variable globale

    Tester le code suivant :

    def add(a,b):
        c=a+b
        return (a,b,c)
    resu = add(5,8)
    print(f"{a} + {b} = {c}")

    Pourquoi y a t-il une erreur ?

    Corriger le code pour que cela affiche le résultat tout en conservant la ligne 3 telle quelle.

    Coller le code ici

    Quel est le type de donnée de resu ?

    Est-ce utile de retourner a et b ?

    c- Utiliser les valeurs retournées

    Tester le code suivant afin de comprendre l'écriture de ope(nb1,nb2)[0] :

    def ope(a,b):
        c=a+b
        d=a-b
        return (c,d)
    nb1=int(input("Premier nombre ?"))
    nb2=int(input("Deuxième nombre ?"))
    print(f"{nb1} + {nb2} = {ope(nb1,nb2)[0]}")

    Compléter le code pour afficher, en deuxième ligne, l'opération de soustraction en se basant sur l'exemple de l'addition.

    Coller le code ici

    d- Créer une fonction CalcTVA()

    Partie Fonction :

    Créer une fonction CalcTVA qui calcule la TVA à partir des paramètres du prix hors taxe et du montant du taux de TVA.
    Cette fonction doit retourner le montant de la taxe et le prix total

    Partie Programme principal :

    Tant que le prix est positif :

    • demander le prix hors taxe
    • demander le taux de TVA
    • appeler la fonction CalcTVA
    • Afficher les résultats en respectant la présentation : "Prix hors Taxe: 100€ --- Taux TVA: 20% --- Prix TTC: 120€"

    Coller le code ici

    e- Créer une fonction Rect()

    Partie Fonction :

    Créer une fonction Rect qui calcule le périmètre et l’air d'un rectangle à partir de ses arguments que sont la longueur et la largeur.
    La fonction retournera le périmètre et l'air.

    Partie Programme principal :

    Tant que la largeur et la longueur sont positives :

    • demander à l’utilisateur la longueur et la largeur du rectangle,
    • afficher “le périmètre est de” suivi de la valeur retournée par la fonction
    • afficher “l’air est de” suivi de la valeur retournée par la fonction

    Coller le code ici

    f- Créer une fonction SconvHMS()

    Partie Fonction :

    Créer une fonction SconvHMS(t) qui convertit la durée t exprimée en secondes en une durée heure, minutes et secondes.
    La fonction retournera ces trois valeurs.

    Partie Programme principal :

    Tant que t est positif :

    • demander à l’utilisateur la durée t,
    • afficher “La durée ... secondes fait ... h - ... mn - ... s"

    Coller le code ici

    g- Créer une fonction tableMultiple(nb,debut,fin)

    Partie Fonction :

    Créer une fonction tableMultiple(nb,debut,fin) qui calcul et affiche la table de multiplication de nb de la valeur debut à la valeur fin.
    L'affichage devra respecter la mise en forme suivante :

    Table de mutltiplication de nb, de la valeur debut à la valeur fin

    15 x 4 = 60

    15 x 5 = 75

    etc

    Partie Programme principal :

    Tant que Nb est différent de -1:

    • demander à l’utilisateur la valeur de Nb, Debut et Fin
    • appeler la fonction pour effectuer le traitement

     

    Coller le code ici

    h- Créer une fonction mesurePiece(larg,long,haut)

    Partie Fonction :

    Créer une fonction mesurePiece(larg,long,haut) qui calcul la surface et le volume d'une pièce rectangulaire.

    La fonction retournera s et v

    Partie Programme principal :

    Demander à l'utilisateur le nombre de pièces de la maison

    Pour chaque pièce (utiliser une boucle while):

    • Afficher la numéro de la pièce
    • Demander à l’utilisateur les valeurs de la largeur, longueur et hauteur.
    • Appeler la fonction pour effectuer le traitement.
    • Comptabiliser au fur et à mesure la surface et le volume de la maison.

    Afficher les informations suivantes :

    La maison a une surface de surface m^2 et un volume de volume m^3

    Coller le code ici

    i- Créer une fonction calpinagePiece(largP,longP,coteC)

    Partie Fonction :

    Créer une fonction calpinagePiece(largP,longP,coteC) qui calcul le nombre de carreaux de carelage d'une pièce à commander pour réaliser le carelage.

    Les paramètres sont :

    largP : largeur de la pièce

    longP: longueur de la pièce

    coteC: les carreaux à commander sont carrés de longueur coteC

    La fonction retournera :

    nbE : le nombre de carreaux entiers (donc qui n'ont pas besoin d'être coupés)

    nbC : le nombre de carreaux à couper (donc qui ont besoin d'être coupés). Pour simplifier, on considère que la chute coupée est non réutilisable

    Partie Programme principal :

    Tant que coteC est non nul:

    • Demander à l'utilisateur les dimensions de la pièce et la longueur d'un côté du carreau (ils sont carrés)
    • appeler la fonction pour effectuer le traitement
    • Afficher les informations suivantes :
      • Pour poser le carelage, il faut commander : nE carreaux entier et nC carreaux qui seront coupés, donc N carreaux en tout.

     

    Coller le code ici