Exercice 1 — Trace d’affectations
Compétence : suivre une variable. On part de , puis on exécute successivement , , . Donner la valeur finale et les valeurs intermédiaires.Indice
Après chaque ligne, remplace l’ancienne valeur par la nouvelle.
Terminale · Spécialité mathématiques · Chapitre 17
Décrire une méthode, l’automatiser et vérifier son résultat.
Objectifs
Cadre du cours. On vise la session 2027 du baccalauréat général, spécialité mathématiques. Le programme de référence est celui du Bulletin officiel spécial no 8 du 25 juillet 2019. Il demande la consolidation des notions de programmation déjà rencontrées et la programmation modulaire ; les exemples ci-dessous utilisent Python, mais le raisonnement reste indépendant d’un logiciel particulier. Les exercices sont créés pour ce cours et ne sont pas des sujets officiels.
Organisation conseillée. Prévoir cinq séances de 35 à 45 minutes :
diagnostic, variables, affectation et lecture d’un algorithme ;
conditions et boucles ;
fonctions et listes ;
recherche de seuil et simulation ;
exercices de synthèse, tests et rappel différé.
Fiche 01 / 06
Durée : 12 minutes, sans exécuter les programmes. Pour chaque question, écrire les étapes sur papier avant de chercher une commande.
On exécute successivement , puis . Quelle est la valeur finale de ?
Que teste la condition ?
Quelles valeurs produit en Python ?
Que renvoie une fonction qui contient ?
Dans la liste , quel est l’indice du premier élément en Python ?
Pourquoi une boucle qui ne modifie jamais sa condition d’arrêt peut-elle ne pas se terminer ?
Une variable possède un nom et une valeur. Une affectation remplace la valeur précédente : signifie « calculer l’ancienne valeur de plus , puis la ranger dans ». Ce n’est pas une égalité algébrique à résoudre.
Une condition est une proposition vraie ou fausse. Une boucle répète un bloc selon une règle ; une fonction reçoit éventuellement des paramètres et renvoie un résultat avec return.
En Python, les indices d’une liste commencent à . Ainsi, dans [12, 8, 5], l’indice désigne , l’indice désigne , et l’indice désigne . La fonction range(n) produit .
À retenirAvant d’exécuter un programme, écrire : les valeurs initiales, la condition testée, le nombre de répétitions et la valeur renvoyée. La programmation est une traduction précise d’une méthode ; elle ne dispense pas d’expliquer ce que le résultat signifie.
Fiche 02 / 06
Un algorithme décrit une suite finie d’actions. Pour le lire, repérer :
les entrées fournies au départ ;
les variables intermédiaires ;
les conditions qui choisissent un chemin ;
les boucles qui répètent une action ;
la sortie affichée ou renvoyée.
En langage naturel, on utilise souvent la flèche En Python, cette affectation s’écrit avec le signe égal. Une condition if choisit un bloc, et une boucle for répète sur une collection ou une suite d’indices.
Exemple entièrement détaillé
On veut calculer , pour un entier .
Méthode en langage naturel :
Entrée : un entier n somme <- 0 Pour k allant de 1 à n somme <- somme + k Renvoyer sommeTraduction Python :
def somme_entiers(n): somme = 0 for k in range(1, n+1): somme = somme + k return sommePour , on suit les quatre passages : Le programme renvoie donc , ce qui correspond à . Le test sur , qui renvoie , vérifie également la première valeur.
Après le passage d’indice dans l’exemple, la variable somme contient exactement . Cette phrase, vraie avant et après chaque passage, explique pourquoi le résultat final est correct. Elle joue le rôle d’un contrôle du raisonnement.
Fiche 03 / 06
Une fonction informatique rassemble une tâche sous un nom réutilisable. Elle peut avoir zéro, un ou plusieurs paramètres. Les variables créées à l’intérieur sont locales à la fonction, et return transmet le résultat au programme appelant.
def carre(x):
return x * x
resultat = carre(3)
Après l’appel, resultat vaut . Une fonction ne doit pas seulement calculer : son nom, ses paramètres et son résultat doivent correspondre à la question.
Une liste est une collection ordonnée, dans laquelle une valeur peut apparaître plusieurs fois. On peut la créer en extension, par ajouts successifs ou en compréhension.
valeurs = [2, 5, 8]
carres = []
for valeur in valeurs:
carres.append(valeur * valeur)
carres_bis = [valeur * valeur for valeur in valeurs]
Les deux dernières listes valent . La méthode par compréhension est concise ; la boucle explicite est souvent plus facile à lire au début.
Pour parcourir une liste :
for valeur in valeurs utilise directement les valeurs ;
for i in range(len(valeurs)) utilise les indices et permet d’écrire valeurs[i].
La fonction append ajoute une valeur à la fin. La longueur est obtenue avec len.
Exemple entièrement détaillé
On veut calculer la moyenne d’une liste non vide
valeurs.def moyenne(valeurs): total = 0 for valeur in valeurs: total = total + valeur return total / len(valeurs)Pour , la boucle construit successivement les totaux , , puis . La fonction renvoie La condition « liste non vide » est importante : diviser par
len(valeurs)n’aurait pas de sens pour une liste de longueur nulle.
Fiche 04 / 06
Une condition peut être combinée avec and, or et not. Pour construire une liste des valeurs positives :
def positives(valeurs):
resultat = []
for valeur in valeurs:
if valeur > 0:
resultat.append(valeur)
return resultat
La liste produite conserve l’ordre d’origine et ne contient que les valeurs qui vérifient la condition.
Pour chercher le premier entier satisfaisant une condition, on initialise un rang, on teste, puis on l’augmente tant que la condition n’est pas vérifiée.
def premier_seuil(condition, limite):
n = 0
while n <= limite and not condition(n):
n = n + 1
if n <= limite:
return n
return None
Dans une copie, il faut préciser ce que signifie condition(n) et prévoir le cas où aucun rang ne convient dans la limite choisie. La borne limite protège contre une boucle infinie.
Pour une expérience aléatoire, une simulation fournit une réalisation du modèle. Par exemple :
from random import random
def compter_succes(n, p):
compteur = 0
for i in range(n):
if random() < p:
compteur = compteur + 1
return compteur
La comparaison random() < p crée un succès de probabilité dans le modèle usuel. Une simulation donne un résultat aléatoire ; elle ne remplace ni la formule ni la justification mathématique.
À retenirUne fonction doit avoir un objectif vérifiable. Une boucle doit faire évoluer une variable ou parcourir une liste. Pour une recherche, indiquer la condition d’arrêt et le cas où la valeur recherchée n’existe pas. Pour une simulation, distinguer une réalisation, une fréquence observée et une probabilité théorique.
Fais varier le taux et le seuil de l’algorithme.
Fiche 05 / 06
Les corrections détaillées sont dans le fascicule séparé.
Après chaque ligne, remplace l’ancienne valeur par la nouvelle.
signe_nombre(x) qui renvoie si , si , et sinon.
Il faut trois cas : strictement positif, strictement négatif, puis le cas restant.
Initialise une variable à zéro et ajoute chaque valeur avec une boucle for.
valeurs et renvoie la liste des doubles des valeurs strictement positives.
Combine le filtre valeur > 0 et le calcul 2 * valeur.
Teste len(valeurs) == 0 avant la boucle et la division.
liste = []
for k in range(1, 5):
if k % 2 == 0:
liste.append(k)
Explique le rôle de %.
k % 2 est le reste de la division de par .
None si aucun ne convient.
Utilise une boucle while avec la condition n <= 20 and n*n < 50.
Compte les succès de probabilité , puis divise par .
Fiche 06 / 06
Confondre une affectation avec une équation à résoudre.
Oublier que range(n) s’arrête à .
Mélanger une valeur de liste et son indice.
Diviser par la longueur d’une liste vide.
Oublier return, ou afficher une valeur alors que la fonction doit la renvoyer.
Écrire une boucle qui n’avance pas vers sa condition d’arrêt.
Conclure qu’une simulation donne exactement la probabilité théorique.
| Je sais suivre une affectation ligne après ligne. |
| Je sais écrire une condition avec plusieurs cas. |
| Je sais choisir entre parcourir les valeurs et parcourir les indices. |
| Je sais écrire une fonction qui renvoie un résultat. |
| Je sais contrôler l’arrêt d’une boucle et interpréter une simulation. |
R1. Que vaut en Python ?
R2. Quelle est la différence entre return et print dans une fonction ?
R3. Pourquoi une variable de somme est-elle souvent initialisée à zéro ?
R4. Citer un test simple permettant de vérifier une fonction de moyenne.
En cas de blocage. Écrire d’abord la méthode en français : « je reçois..., j’initialise..., je parcours..., je teste..., je renvoie... ». Puis traduire chaque verbe en instruction Python.
Hypothèse de travail : terminale générale, spécialité mathématiques, session 2027 supposée ; l’échéance exacte reste à confirmer. Les exercices sont des créations pédagogiques ; ils ne sont pas présentés comme des sujets officiels.
Programme de référence : programme de spécialité de terminale, Bulletin officiel spécial no 8 du 25 juillet 2019.
Le programme publié au Bulletin officiel no 14 du 2 avril 2026 s’appliquera en terminale à partir de la rentrée 2027–2028 ; il est signalé ici sans être utilisé.
Les pages du Bulletin officiel ont renvoyé une erreur HTTP 403 lors de la vérification du 3 octobre 2026 ; le cadre repris est celui déjà présent dans les fascicules LaTeX du chapitre.