| 🌲 Séance 2.1 - Définir ses fonctions et procédures Cours · Semaine 2 - Programmation modulaire · Mission : Forêt boréale |
Compétence 0F01 : Développer des programmes informatiques en vue d'automatiser la résolution de problèmes dans un contexte scientifique.
Objectifs de la séance¶
- Définir une fonction avec des paramètres et une valeur de retour
- Distinguer une fonction (qui renvoie) d'une procédure (qui agit)
- Documenter une fonction et comprendre la portée des variables
Contenus essentiels¶
- Procédure et fonction
- Documentation du programme
Calepin Colab. Exécutez chaque bloc de code avec Maj+Entrée. Modifiez, expérimentez, recommencez : c'est en programmant qu'on apprend à programmer.
🧩 1. Pourquoi des fonctions ?¶
Une fonction est un bloc de code nommé, réutilisable. Au lieu de recopier un calcul partout, on l'écrit une fois et on l'appelle par son nom. C'est l'idée centrale de la programmation modulaire : découper un gros problème en petites fonctions claires.
def calculerAirCercle(rayon):
pi = 3.14159
return pi * rayon ** 2
# Appels de la fonction
print(calculerAirCercle(1))
print(calculerAirCercle(2.5))
🎯 2. Paramètres et valeur de retour¶
Les paramètres (ici rayon) sont les données d'entrée de la fonction. L'instruction return renvoie le résultat à celui qui a appelé la fonction. Une fonction peut recevoir plusieurs paramètres.
def calculerVitesseMoyenne(distance, temps):
return distance / temps
vitesse = calculerVitesseMoyenne(150, 2) # 150 km en 2 h
print('Vitesse moyenne :', vitesse, 'km/h')
📢 3. Procédure : agir sans renvoyer¶
Une procédure est une fonction qui agit (par exemple elle affiche) mais ne renvoie pas de valeur. En Python on l'écrit de la même façon, simplement sans return.
def afficherRapport(nomMesure, valeur, unite):
print('Mesure :', nomMesure)
print(' valeur :', valeur, unite)
afficherRapport('temperature', 21.5, 'degrés C')
📝 4. Documenter une fonction (docstring)¶
Une chaîne placée juste sous l'entête décrit le rôle de la fonction. C'est la docstring : la documentation lisible par les humains et par help(). Critère d'évaluation du cours : la documentation du programme.
def convertirCelsiusKelvin(celsius):
"""Convertit une température de degrés Celsius en kelvins."""
return celsius + 273.15
help(convertirCelsiusKelvin)
print(convertirCelsiusKelvin(0))
🔒 5. La portée des variables¶
Une variable créée dans une fonction est locale : elle n'existe que le temps de la fonction. Cela évite que les fonctions se nuisent entre elles.
def doubler(nombre):
resultat = nombre * 2 # variable locale
return resultat
print(doubler(21))
# La ligne suivante provoquerait une erreur : 'resultat' n'existe pas ici.
# print(resultat)
| đź§Ş EXERCICES (obligatoires) |
Exercice 1. Deux petites procedures pour demarrer.
- Ecrivez
afficherBienvenue()sans parametre et sans valeur de retour : elle afficheBienvenue dans la Mission Foret !. - Ecrivez
afficherSalutation(nomEtudiant)avec un parametre, mais sans valeur de retour : elle affiche le nom recu au formatnom : nomEtudiant.
Appelez les deux procedures.
# A COMPLETER (exercice 1)
Exercice 2. Ecrivez une fonction convertirKilometresMetres(kilometres) avec un parametre et une valeur de retour : elle renvoie la distance en metres. Testez-la avec kilometres = 3.5 (attendu : 3500.0).
# A COMPLETER (exercice 2)
Exercice 3. Ecrivez une fonction calculerEnergieCinetique(masse, vitesse) avec deux parametres qui renvoie $E = \frac{1}{2} m v^2$. Testez-la avec masse = 2 et vitesse = 3 (attendu : 9.0).
# A COMPLETER (exercice 3)
Exercice 4. Ecrivez une fonction calculerMoyenne(valeurs) (parametre : une liste de nombres) qui renvoie la moyenne. Documentez-la avec une docstring.
# A COMPLETER (exercice 4)
Exercice 5. Ecrivez deux fonctions qui travaillent ensemble.
estNombrePremier(nombre): renvoieTruesinombreest premier,Falsesinon (une boucle et un retour booleen).afficherLesNombresPremiers(): parcourt avec une boucle tous les nombres de 1 a 100 et appelleestNombrePremierpour afficher uniquement les nombres premiers.
La deuxieme fonction reutilise la premiere : c'est tout l'interet des fonctions. Appelez afficherLesNombresPremiers().
# A COMPLETER (exercice 5)
| 🪜 EXERCICES PLUS DIFFICILES (facultatifs) |
Exercice 6. Ecrivez une procedure afficherTableConversion() qui affiche les conversions Celsius vers Kelvin pour 0, 20, 37 et 100 degres, en reutilisant la fonction convertirCelsiusKelvin (vue plus haut).
# A COMPLETER (exercice 6)
Exercice 7. Ecrivez une fonction calculerImc(masse, taille) qui renvoie l'indice de masse corporelle $\text{IMC} = \frac{masse}{taille^2}$, puis une fonction classerImc(imc) qui renvoie 'insuffisant', 'normal' ou 'eleve'. classerImc ne recalcule pas : elle recoit deja l'IMC. Affichez la categorie pour masse = 68 et taille = 1.75.
# A COMPLETER (exercice 7)
Exercice 8. Ecrivez une fonction analyserMesures(valeurs) qui renvoie d'un seul coup le minimum, le maximum et la moyenne d'une liste, sous la forme return minimum, maximum, moyenne. Recuperez les trois resultats en une ligne.
# A COMPLETER (exercice 8)
Exercice 9. Ecrivez une fonction calculerInteretsComposes(capital, taux, annees=1) qui renvoie $capital \times (1 + taux)^{annees}$. Le parametre annees a une valeur par defaut de 1. Testez avec et sans preciser annees.
# A COMPLETER (exercice 9)
Exercice 10. Ecrivez une fonction estimerPopulation(populationInitiale, tauxParAnnee, nombreAnnees) qui calcule la population finale annee par annee a l'aide d'une boucle accumulatrice (et non de la formule directe). Renvoyez la population finale arrondie a l'entier.
# A COMPLETER (exercice 10)
Exercice 11. Ecrivez une fonction calculerFactorielle(nombre) qui renvoie $nombre!$ (le produit de tous les entiers de 1 a nombre) a l'aide d'une boucle. Verifiez que calculerFactorielle(5) vaut 120.
# A COMPLETER (exercice 11)
Lien avec le projet de la semaine¶
Le Projet 2 sera entièrement structuré en fonctions : une fonction pour lire les données, une pour les analyser, une pour les afficher. La modularité rend le programme lisible et vérifiable.
Pour aller plus loin (facultatif)¶
- Donnez une valeur par défaut à un paramètre :
def f(x, pas=1):. - Une fonction peut renvoyer plusieurs valeurs :
return moyenne, ecart.