Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Initiation aux fonctions

Motivation

Revenons sur notre exemple de la feuille Variables : «Calculer l’énergie cinétique 12mv2\frac12 m v^2 d’un objet de masse 14,514,5 kg selon qu’il aille à 1, 10, 100, ou 1000 km/h».

Voilà comment nous avions procédé :

v = 100
m = 14.5

1.0 / 2 * m * v * v
72500.0

Avec cette façon de procéder, pour comprendre ce code, le lecteur doit reconnaître la formule pour en déduire l’intention: calculer l’énergie cinétique. De plus, chaque fois que nous devrons calculer une énergie cinétique, il faudra reécrire cette formule.

Pour éviter cela, il convient de distinguer l’intention (calculer une énergie cinétique) de comment la réaliser (utiliser la formule 12mv2\frac12 mv^2). Pour cela nous pouvons définir une fonction, appelée energie_cinétique qui décrit comment calculer, à partir d’une masse m et d’une vitesse v l’énergie cinétique d’un objet de masse m et vitesse v :

def énergie_cinétique(m, v):
    return 1.0 / 2 * m * v * v

Cela étant fait, chaque fois que l’on souhaite calculer une énergie cinétique, nous pouvons appeler la fonction en précisant la valeur de la masse et de la vitesse, sans avoir à ce préocuper de comment on calcule une énergie cinétique :

énergie_cinétique(14.5, 100)
72500.0
énergie_cinétique(14.5, 10)
725.0

Fonctions

Une fonction en informatique est un bloc de code qui effectue une tâche spécifique et peut être réutilisé plusieurs fois dans un programme. Les fonctions permettent de rendre le code plus modulaire, plus facile à lire et à maintenir.

pi = 3.1415  # pour faire simple; on fera mieux plus tard


### BEGIN SOLUTION
def aire(r):
    return pi * r * r


### END SOLUTION
### BEGIN SOLUTION
aire(3)
### END SOLUTION
28.2735

La cellule suivante permet de tester votre fonction; si rien ne s’affiche, il y a de bonnes chances pour que votre fonction soit correcte :

assert aire(0) == 0
assert aire(1) == pi
assert round(aire(3), 4) == 28.2735  # vérifie l'arrondi à 4 décimales
### BEGIN SOLUTION
def périmètre(r):
    return 2 * pi * r


### END SOLUTION
### BEGIN SOLUTION
périmètre(3)
### END SOLUTION
18.849
assert périmètre(0) == 0
assert périmètre(1 / 2) == pi
assert périmètre(3) == 18.849

Conclusion

Dans cette feuille, vous avez défini vos premières fonctions, qui prennent en entrées des paramètres, réalisent un traitement, puis renvoie une valeur. Puis vous les avez appelées pour effectuer des calculs, sans avoir à vous préocuper de comment ces calculs étaient réalisés. C’est une premier outil pour faciliter la modularité des programmes.

Nous approfondirons ultérieurement les fonctions et nous explorerons d’autres outils pour favoriser la modularité.

Avant de passer à la suite, nous vous proposons quelques exercices d’entraînement et de révisions autocorrigés sur les fonctions. Exécutez la cellule suivante, suivez les consignes qui s’affichent et cliquez sur Valider pour vérifier votre réponse. Utilisez les différents bouttons pour parcourir les exercices et leurs variantes éventuelles.

import glob
from jupylates import Exerciser

exercises = glob.glob("../exercices/fonctions/*.md")
Exerciser(exercises, lrs_url="../.lrs.json", mode="train")