Mathématiques — Algorithmique et programmation
Algorithmique et programmation Python
Boucles for et while, listes, fonctions, simulation d'expériences aléatoires
Résumé synthétiqueFiche en 5 sectionsQuiz de 10 questionsGratuit, sans pub
Cours de maths du tronc commun. Même notion dans une autre matière : Algorithmique et programmation Python — spé Maths · Programmation Python en SI — spé Sciences de l'ingénieur
Résumé
L'algorithmique consiste à décrire des suites d'instructions précises pour résoudre un problème, et en Première on les écrit en Python. Trois briques structurent tout programme : les boucles (
for quand on connaît le nombre de répétitions, while quand on répète selon une condition), les listes (pour stocker et parcourir des collections de valeurs) et les fonctions (définies par def, qui renvoient un résultat avec return). On utilise aussi les structures conditionnelles (if, elif, else) pour faire réagir le programme selon les cas. Une application phare en maths : la simulation d'expériences aléatoires avec le module random, qui permet d'estimer une probabilité en répétant un grand nombre de fois une expérience — la fréquence observée se rapproche alors de la probabilité théorique.Une boucle répète des instructions. La boucle
for sert quand on connaît à l'avance le nombre de répétitions (on parcourt un range ou une liste). La boucle while répète tant qu'une condition reste vraie : idéale quand on ignore combien d'étapes seront nécessaires.for i in range(n):exécute le bloc $n$ fois, avec $i$ qui prend les valeurs de $0$ à $n - 1$.range(a, b): les entiers de $a$ à $b - 1$ ;range(a, b, pas)avance d'un pas donné.while condition:répète le bloc tant que la condition est vraie.- L'indentation (4 espaces) délimite le bloc répété.
Exemple
Pour calculer la somme $1 + 2 + \dots + 10$ :
À la fin,
s = 0for i in range(1, 11): s = s + iÀ la fin,
s vaut $55$ : le range(1, 11) parcourt bien les entiers de $1$ à $10$.Piège à éviter
Avec une boucle
while, la condition doit finir par devenir fausse, sinon le programme tourne sans fin (boucle infinie). Pense à modifier, dans la boucle, la variable testée.Une liste est une collection ordonnée de valeurs, repérées par un indice qui commence à $0$. C'est la structure idéale pour stocker des résultats (les termes d'une suite, les issues d'une simulation) puis les parcourir.
- Création :
L = [](vide),L = [1, 2, 3], ouL = [0] * n(n zéros). - Accès :
L[i](i à partir de $0$),L[-1]pour le dernier élément. - Ajout :
L.append(x)ajoute x à la fin ;len(L)donne la longueur. - Parcours :
for x in L:(les éléments) oufor i in range(len(L)):(les indices). - Liste en compréhension :
[i*i for i in range(n)]construit une liste d'un coup.
Exemple
Construisons la liste des carrés de $0$ à $3$ :
Le résultat est
carres = [i*i for i in range(4)]Le résultat est
[0, 1, 4, 9] : i parcourt $0, 1, 2, 3$ et on stocke chaque carré.Piège à éviter
Le premier élément d'une liste est
L[0], pas L[1] : pour L = [10, 20, 30], on a L[0] $= 10$ et L[2] $= 30$. Demander L[3] provoque une erreur (indice hors limites).Une fonction est un bloc de code réutilisable, défini par
def, qui prend des paramètres et renvoie un résultat avec return. Elle permet de découper un programme en morceaux clairs et de réutiliser un calcul sans le réécrire.- Définition :
def nom(parametres):puis le bloc indenté. - Retour :
return resultatrenvoie une valeur et termine la fonction. - Une fonction sans
returnrenvoieNone. - Appel :
y = nom(arguments)récupère la valeur renvoyée. - Les variables locales (créées dans la fonction) n'existent pas à l'extérieur.
Exemple
Définissons une fonction qui calcule le carré augmenté de $1$ :
Alors
def f(x): return x*x + 1Alors
f(3) renvoie $3 \times 3 + 1 = 10$.Piège à éviter
Sans
return, une fonction renvoie None : si tu écris print(...) au lieu de return, la fonction affiche une valeur mais ne la renvoie pas — impossible alors de la réutiliser dans un calcul.Les structures conditionnelles permettent au programme de choisir ce qu'il fait selon les situations. On teste une condition avec
if ; elif ajoute d'autres cas, et else couvre tout le reste.if condition:exécute le bloc seulement si la condition est vraie.elif autre_condition:teste un cas suivant ;else:couvre les cas restants.- Comparaisons :
==(égal),!=(différent),<,>,<=,>=. - Opérateurs logiques :
and(et),or(ou),not(non).
Exemple
Un programme qui qualifie une note :
Avec
if note >= 10: print('Admis')else: print('Recalé')Avec
note = 12, il affiche Admis.Piège à éviter
Le test d'égalité s'écrit avec deux signes égal
== ; un seul signe = sert à affecter une valeur. Écrire if note = 10: provoque une erreur de syntaxe.Le module
random produit des nombres aléatoires, ce qui permet de simuler des expériences (lancer un dé, tirer une carte). En répétant l'expérience un grand nombre de fois et en comptant les succès, on estime une probabilité : c'est la méthode fréquentiste, garantie par la loi des grands nombres.from random import randint, randomimporte les fonctions utiles.randint(a, b): un entier aléatoire entre a et b inclus (ex.randint(1, 6)simule un dé).random(): un flottant aléatoire dans $[0\,;1[$.- Estimer une probabilité : compter les succès, puis diviser par le nombre $N$ de répétitions.
- Loi des grands nombres : quand $N$ est grand, la fréquence se rapproche de la probabilité.
Exemple
Pour estimer la probabilité d'obtenir $6$ avec un dé, on lance $N$ fois et on compte les succès :
La fréquence obtenue est proche de $\dfrac{1}{6} \approx 0{,}167$.
from random import randintsucces = 0for i in range(10000): if randint(1, 6) == 6: succes = succes + 1frequence = succes / 10000La fréquence obtenue est proche de $\dfrac{1}{6} \approx 0{,}167$.
Piège à éviter
randint(1, 6) inclut les deux bornes : il peut renvoyer $1$, $2$, $3$, $4$, $5$ ou $6$. C'est différent de range(1, 6), qui s'arrête à $5$ (borne de droite exclue).Quiz - Algorithmique et programmation Python
10 questions
S'entraîner
Thème complet
Voir tous les chapitres « Algorithmique et programmation » de la Seconde à la Terminale
Ce thème dans une autre classe
Notions clés — Mathématiques
Articles utiles
Questions fréquentes
Les points clés à retenir sur Algorithmique et programmation Python, extraits du quiz de révision.
Que renvoie range(5) ?
range(5) ?Réponse :
les entiers $0, 1, 2, 3, 4$
range(5) génère les entiers de $0$ à $4$ inclus, soit $5$ valeurs.Après L = [10, 20, 30], que vaut L[1] ?
L = [10, 20, 30], que vaut L[1] ?Réponse :
$20$
Les indices commencent à $0$ :
L[0] vaut $10$, L[1] vaut $20$, L[2] vaut $30$.Quelle instruction ajoute $42$ à la fin de la liste L ?
L ?Réponse :
L.append(42)append ajoute un élément à la fin d'une liste Python.Combien de fois s'exécute la boucle for i in range(2, 10, 3) ?
for i in range(2, 10, 3) ?Réponse :
$3$ fois
range(2, 10, 3) produit $2, 5, 8$ : trois valeurs, donc trois itérations.