Matières 📐 Mathématiques Lycée Algorithmique et programmation (Python)
💻

Algorithmique et programmation (Python)

Variables, boucles, conditions en Python

Un algorithme est une suite finie d'instructions non ambiguës permettant de résoudre un problème. En seconde, Python est le langage de référence : sa syntaxe minimaliste force une structuration claire. La boucle for i in range(n)\texttt{for i in range(n)} parcourt les entiers de 00 à n1n-1 (la borne supérieure est exclue) ; while condition\texttt{while condition} répète tant que la condition est vraie. L'indentation (espaces obligatoires en début de bloc) est syntaxiquement obligatoire en Python — une indentation incorrecte cause une erreur ou change silencieusement le sens du programme. Déboguer consiste à suivre l'exécution pas à pas avec des valeurs test pour identifier où le comportement diverge de l'attendu.

📖 Vocabulaire clé

Algorithme : Suite finie d'instructions non ambiguës qui, à partir de données d'entrée, produit un résultat en un nombre fini d'étapes.
Variable : Espace mémoire nommé qui stocke une valeur. En Python : x = 5\texttt{x = 5} crée la variable xx avec la valeur 55.
Boucle for\texttt{for} : Répète un bloc un nombre fixé de fois. for i in range(n)\texttt{for i in range(n)} exécute le bloc nn fois avec i=0,1,,n1i = 0, 1, \ldots, n-1.
Boucle while\texttt{while} : Répète un bloc tant qu'une condition est vraie. Risque de boucle infinie si la condition ne devient jamais fausse.

📋 Écrire un algorithme en Python

  1. 1 Déclarer les variables et leurs valeurs initiales. Exemple : s = 0\texttt{s = 0} (accumulateur initialisé à zéro pour une somme).
  2. 2 Utiliser for i in range(n)\texttt{for i in range(n)} pour répéter nn fois. Exemple : for i in range(1, 6):\texttt{for i in range(1, 6):} fait varier ii de 11 à 55 inclus.
  3. 3 Utiliser while condition\texttt{while condition} pour répéter tant qu'une condition est vraie. Exemple : while n > 1: n = n // 2\texttt{while n > 1: n = n // 2} divise nn par 22 jusqu'à ce qu'il atteigne 11.
  4. 4 Tester avec des exemples pour vérifier la correction de l'algorithme. Exemple : Pour un programme de somme 1++51+\ldots+5, vérifier que le résultat est bien 1515.

✅ Exemple résolu

Énoncé : Écrire un algorithme Python qui calcule la factorielle de nn (c'est-à-dire n!=1×2××nn! = 1 \times 2 \times \ldots \times n). Tester pour n=5n = 5.
Démarche :
  1. Initialiser le résultat : resultat = 1\texttt{resultat = 1}.
  2. Boucle : for i in range(1, n+1):\texttt{for i in range(1, n+1):} puis resultat = resultat * i\texttt{resultat = resultat * i}.
  3. Exécution pour n=5n = 5 : i=1i = 111, i=2i = 222, i=3i = 366, i=4i = 42424, i=5i = 5120120.
Réponse : 5!=1205! = 120. Le programme affiche 120\texttt{120}.

📐 Formules clés

for i in range(a, b)\texttt{for i in range(a, b)} : ii prend les valeurs a,a+1,,b1a, a+1, \ldots, b-1
range(n)\texttt{range(n)} est équivalent à range(0, n)\texttt{range(0, n)}
Indentation obligatoire en Python (4 espaces ou 1 tabulation)

🎨 Illustration

Algorithmique — boucle for
Organigramme de l'exemple du cours : factorielle avec une boucle for

Traduction en organigramme normalisé de l'exemple du cours (resultat = 1\texttt{resultat = 1} puis for i in range(1, n+1): resultat = resultat * i\texttt{for i in range(1, n+1): resultat = resultat * i}), déroulé pour n=5n = 5.

Organigramme de la boucle for pour calculer une factorielle Organigramme vertical : terminal Debut, rectangle d'initialisation resultat egal 1 et i egal 1, puis losange de condition i inferieur ou egal a n. Si oui, deux rectangles d'action a droite : resultat = resultat fois i, puis i = i plus 1, avec une boucle de retour qui ramene vers le cote gauche du losange. Si non, un rectangle affiche le resultat puis le terminal Fin. Exemple : n = 5 -> resultat = 120 (5!) Début resultat = 1 i = 1 i <= n ? Oui resultat = resultat * i i = i + 1 Retour au test (boucle for) Non Afficher resultat Fin
  • 1 En Python, l'incrémentation i = i + 1\texttt{i = i + 1} est gérée automatiquement par range()\texttt{range()} ; l'organigramme la rend explicite pour montrer l'équivalence avec une boucle while\texttt{while}.
  • 2 Pour n=5n = 5, range(1, n+1)\texttt{range(1, n+1)} vaut range(1, 6)\texttt{range(1, 6)} et fournit i=1,2,3,4,5i = 1, 2, 3, 4, 5 (le 66 est exclu, comme rappelé dans le piège du cours).
  • 3 Trace de l'exécution : i=1resultat=1i=1 \to resultat=1, i=22i=2 \to 2, i=36i=3 \to 6, i=424i=4 \to 24, i=5120i=5 \to 120, puis i=6i=6 fait sortir de la boucle (ini \le n devient faux) : le programme affiche 120=5!120 = 5!.
Ce qu'il faut lire : Suis la branche « Oui » autour du losange tant que ini \le n est vrai ; dès que ii dépasse nn, la branche « Non » affiche le résultat final.
Organigramme normalisé de l'exemple du cours (calcul de 5!5! avec une boucle for\texttt{for}) : Début → initialisation → test ini \le n → action répétée ou sortie.

❌ Une erreur, une suggestion

L'erreur fréquente

En Python, range(1,6)\texttt{range(1,6)} produit 1,2,3,4,51,2,3,4,5 (pas 66).

La suggestion

La borne supérieure est exclue !

💡 À retenir

  • range(a, b)\texttt{range(a, b)} produit les entiers de aa à b1b-1 : la borne supérieure est toujours exclue.
  • La boucle for\texttt{for} est utilisée quand le nombre de répétitions est connu à l'avance ; while\texttt{while} sinon.
  • L'indentation est obligatoire en Python : elle délimite les blocs de code (pas d'accolades).
  • Pour déboguer, exécuter le code à la main pas à pas avec des valeurs test.