Variables
Un nom mémorise une valeur qui peut ensuite être remplacée.
Algorithmique et programmation — Terminale
Apprends à traduire un problème mathématique en instructions Python : calculer une suite, rechercher un seuil, approcher une solution ou simuler une expérience aléatoire.
Il ne s’agit pas d’une liste officielle fermée à réciter. Les exemples présentent des structures courantes à comprendre, expliquer et adapter aux données de l’exercice.
| Problème mathématique | Structure Python à envisager |
|---|---|
| Mémoriser ou mettre à jour une valeur | variable et affectation |
| Répéter un nombre connu de fois | boucle for avec range |
| Répéter jusqu’à atteindre un seuil | boucle while |
| Choisir entre plusieurs cas | condition if / elif / else |
| Réutiliser un calcul | fonction définie avec def |
| Accumuler des termes | variable somme initialisée à 0 |
| Conserver plusieurs résultats | liste, seulement si elle est utile |
| Simuler un tirage | fonction aléatoire adaptée à l’expérience |
Un nom mémorise une valeur qui peut ensuite être remplacée.
for, while et if organisent les répétitions et les choix.
def rend un calcul réutilisable ; une liste conserve plusieurs valeurs si nécessaire.
1. Les bases Python réellement utiles
u = 2
# On remplace u par la valeur suivante
u = 3 * u - 1
# On choisit un message selon la valeur obtenue
if u > 4:
message = "seuil dépassé"
else:
message = "seuil non dépassé"
print(u, message)Résultat attendu : 5 seuil dépassé
Lire u = 3 * u - 1 comme une égalité mathématique. En Python, = affecte une nouvelle valeur à la variable.
Remplace la valeur initiale par u = 1 et prévois l’affichage avant d’exécuter le programme.
2. Calculer les termes d’une suite définie par récurrence
u = 2 # valeur de u_0
for n in range(5):
# u reçoit le terme suivant
u = 0.5 * u + 3
print(u)Résultat attendu : 5.875
Écrire range(6) en pensant qu’il faut inclure l’indice 5 : cela calculerait u₆, car u₀ est déjà connu avant la boucle.
Modifie le programme pour afficher successivement u₁, u₂, …, u₅.
3. Rechercher le premier rang dépassant un seuil
u = 2 # valeur de u_0
n = 0
# On continue tant que le seuil n'est pas dépassé
while u <= 5.9:
u = 0.5 * u + 3
n = n + 1
print(n, u)Résultat attendu : 6 5.9375
Oublier n = n + 1 ou utiliser u < 5.9 lorsque l’énoncé demande un dépassement strict et qu’une égalité est possible.
Recherche de la même manière le premier rang pour lequel uₙ > 5,99.
4. Calculer une somme
somme = 0 # accumulateur
for k in range(1, 11):
# On ajoute le carré courant
somme = somme + k ** 2
print(somme)Résultat attendu : 385
Commencer à 1 sans initialiser somme, ou écrire range(1, 10) et oublier 10².
Adapte le programme pour calculer 1³ + 2³ + … + 20³.
5. Approcher une solution par dichotomie
a = 1
b = 2
# On réduit l'encadrement [a, b]
while b - a > 0.0001:
m = (a + b) / 2
if m ** 2 < 2:
a = m
else:
b = m
print(round((a + b) / 2, 3))Résultat attendu : 1.414 (arrondi au millième).
Mettre à jour la mauvaise borne. Il faut d’abord relier le test à la monotonie de la fonction étudiée sur l’intervalle.
Adapte le test pour approcher la solution positive de x² = 5.
6. Simuler une expérience aléatoire
from random import randint
# Un lancer de dé équilibré
resultat = randint(1, 6)
succes = resultat == 6
print(resultat, succes)Le premier affichage est un entier de 1 à 6 ; le second vaut True uniquement si cet entier est 6.
Utiliser randint(1, 7), qui peut produire 7, ou confondre resultat = 6 et resultat == 6.
Modifie le succès pour simuler l’événement « obtenir un nombre pair ».
7. Estimer une probabilité par répétition
from random import randint, seed
# La graine rend l'exemple reproductible
seed(0)
nombre_succes = 0
N = 10_000
for _ in range(N):
# On compte uniquement les 6
if randint(1, 6) == 6:
nombre_succes = nombre_succes + 1
frequence = nombre_succes / N
print(frequence)Le programme affiche une fréquence proche de 1/6 ; dans l’environnement de vérification utilisé ici, elle vaut 0.1669.
Présenter la fréquence simulée comme une preuve que la probabilité vaut exactement 1/6.
Estime la probabilité d’obtenir un nombre supérieur ou égal à 5.
8. Traduire un algorithme écrit en français en Python
def image(x):
# Carré de x, puis retrait de 2
resultat = x ** 2 - 2
return resultat
print(image(3))Résultat attendu : 7
Utiliser print à la place de return dans la fonction : la valeur serait affichée mais difficile à réutiliser dans un calcul.
Écris une fonction qui renvoie 2x³ + 1.
9. Compléter un programme à trous
def terme(n):
u = 1
# La relation est appliquée n fois
for k in range(n):
u = 2 * u + 1
return u
print(terme(3))Résultat attendu : 15
Placer return u dans la boucle : la fonction s’arrêterait dès le premier passage.
Sans exécuter le programme, détermine terme(4), puis vérifie ta réponse.
10. Repérer et corriger une erreur dans un programme
somme = 0 # correction : partir de 0
# 6 est exclu, donc la boucle va de 1 à 5
for k in range(1, 6):
somme = somme + k
print(somme)Programme corrigé — résultat attendu : 15
Corriger une seule des deux erreurs et s’arrêter parce que le programme s’exécute sans message d’erreur.
Introduis volontairement une erreur de borne, puis explique précisément son effet sur le résultat.
Huit vérifications avant de valider un programme dans un exercice.
Continuer avec les chapitres associés
Le quiz Terminale contient trois questions d’algorithmique parmi les vingt questions corrigées.
Ouvrir le quizNon. Cette page ne présente pas une liste officielle fermée. Le plus utile est de savoir lire, compléter et adapter des structures courantes à un problème mathématique.
On utilise généralement for lorsque le nombre de répétitions est connu, et while lorsque la répétition continue tant qu’une condition reste vraie, par exemple avant le dépassement d’un seuil.
Dans range(debut, fin), la valeur fin est exclue. range(1, 6) produit donc 1, 2, 3, 4 et 5.
Non. Elle produit une fréquence expérimentale. Quand le nombre d’essais augmente, cette fréquence peut se rapprocher de la probabilité théorique, mais elle reste issue d’une expérience aléatoire.