MyHEdison

Première · Mathématiques · Chapitre 12

Algorithmique, programmation et échantillonnage

Ce que tu sauras faire

  • Lire un programme Python et prédire ce qu'il affiche, en suivant les variables pas à pas
  • Choisir entre une boucle bornée pour et une boucle non bornée tant que, et écrire l'une ou l'autre
  • Écrire une fonction, construire une liste et la parcourir
  • Simuler une expérience aléatoire avec le module random et estimer une probabilité par une fréquence
  • Décrire la fluctuation d'échantillonnage observée sur des simulations d'échantillons de taille nn
  • Énoncer et illustrer la loi des grands nombres à partir de simulations
  • Estimer une aire, et le nombre π\pi, par la méthode de Monte-Carlo
  • Programmer les algorithmes classiques : calcul de termes d'une suite, recherche d'un seuil, balayage

Au programme du chapitre

  1. Lire un programme : variables, types, affectation
  2. Conditions et boucles bornées
  3. La boucle non bornée et la recherche de seuil
  4. Fonctions et listes
  5. Simuler le hasard
  6. Échantillon de taille n et fluctuation d'échantillonnage
  7. La loi des grands nombres, vue sur des simulations
  8. La méthode de Monte-Carlo
  9. Le balayage : approcher une solution

Exercices corrigés

Exercice 1

En mathématiques, l'égalité n=n+1n=n+1 est impossible. Pourtant, en Python, l'instruction n = n + 1 s'écrit constamment. Explique cette différence, puis dis ce que devient n si elle vaut 7 avant l'instruction.
Un coup de pouce
Demande-toi si le symbole pose une question ou donne un ordre.
Voir la correction pas à pas
Le signe = de Python n'est pas le signe d'égalité : c'est une affectation, qui se lit « la variable de gauche reçoit la valeur de droite ». La machine procède en deux temps : elle calcule d'abord le membre de droite avec la valeur actuelle de la variable, puis elle range le résultat dans la variable, en écrasant l'ancien contenu. Si n vaut 7, la machine calcule 7+1=87+1=8 puis range 8 dans n : après l'instruction, n vaut 8. En mathématiques, nn désigne un nombre fixé une fois pour toutes, et l'égalité n=n+1n=n+1 conduirait à 0=10=1 : elle est bien impossible. Le test d'égalité, lui, s'écrit == en Python.

Exercice 2

Comment décide-t-on, avant même d'écrire la première ligne, s'il faut une boucle for ou une boucle while ? Donne un exemple de question pour chacune.
Un coup de pouce
Dans un cas, le nombre de tours est une donnée ; dans l'autre, c'est la réponse.
Voir la correction pas à pas
La question à se poser est : est-ce que je connais à l'avance le nombre de répétitions ? Si oui, la boucle est bornée et s'écrit avec for ; si non, elle est non bornée et s'écrit avec while. Exemple de boucle bornée : « calculer la somme des 50 premiers termes d'une suite » — on sait qu'il y aura exactement 50 tours. Exemple de boucle non bornée : « au bout de combien d'années le capital dépasse-t-il 2 000 € ? » — le nombre de tours est précisément ce que l'on cherche, donc on ne peut pas l'écrire dans un range. Remarque : toute boucle for peut se réécrire en while, mais on perd en lisibilité et on prend le risque d'oublier de faire avancer le compteur.

Les pièges à éviter

  • Écrire if x = 3 : dans un test.
  • Croire que range(1, 10) parcourt les entiers jusqu'à 10.
  • Placer l'initialisation s = 0 à l'intérieur de la boucle.
  • Écrire une boucle while sans rien faire évoluer dedans.

Pour aller plus loin

Le même thème dans d’autres classes

Mathématiques dans les autres classes

Réviser autrement