Algorithmique et Python

Passer d’une idée à un algorithme clair avec variables, conditions, boucles et fonctions.

Télécharger le PDF
Un mot d’encouragement, si tu en as besoin

Tu peux avancer à ton rythme. Une difficulté ne définit pas ce dont tu es capable.

Trouver du soutien
Avant de commencer5 questions pour vérifier tes bases
1. Que vaut 2t² + 3 pour t = −2 ?
2. Pour x = 2, quelle proposition est vraie ?
3. Pars de 4, ajoute 3, puis multiplie le résultat par 2. Quel nombre obtiens-tu ?
4. Quel est le plus petit entier n tel que 3n > 10 ?
5. Dans un fichier, 7 personnes sont à la fois cyclistes et majeures. Quelle case du tableau croisé contient ce nombre ?

Ton parcours dans ce chapitre

Tu peux comprendre un programme en suivant quelques valeurs sur papier. L'objectif est de relier chaque instruction à ce qu'elle change, puis d'expliquer pourquoi le résultat répond à la question.

Bases utiles : calculer une expression dans l'ordre des opérations, lire un intervalle et un pourcentage. Les définitions nécessaires sont rappelées. Une erreur de code indique une instruction à reprendre, pas une incapacité à programmer. Les indices et solutions restent consultables librement.

Programme 2026–2027 : variables, conditions, boucles, fonctions, simulation et lecture de calculs statistiques. La programmation se travaille aussi dans les autres chapitres ; cette fiche rassemble les outils pour y revenir. La syntaxe des listes n'est pas à mémoriser pour lire une moyenne. La preuve formelle par invariant, le module de fractions et les derniers problèmes sont des prolongements guidés.

Pourquoi étudier l'algorithmique ?

Un ordinateur calcule très vite, mais il ne devine rien. Pour lui faire résoudre un problème, il faut décrire une suite d'instructions sans ambiguïté. Cette description s'appelle un algorithme. Python est un langage qui permet de la rendre exécutable.

Schéma : Pourquoi étudier l'algorithmique ?

Du langage naturel à Python

Lire un programme de haut en bas

Sauf instruction particulière, Python exécute les lignes dans l'ordre. Les espaces au début d'une ligne, appelés indentation, indiquent les blocs appartenant à une condition, une boucle ou une fonction.

Afficher n'est pas renvoyer

Variables, types et affectations

Une variable informatique est une boite nommée

Suivre les variables, une instruction à la fois

Prévois z pour x = 2 au départ. Avance d’une ligne à la fois. Puis inverse l’ordre des deux lignes du milieu : y conserve-t-il le même nombre ?

La ligne bleue est la dernière instruction exécutée. Les cases montrent les valeurs mémorisées à cet instant. « Non définie » signifie qu’aucune valeur n’a encore été affectée à la variable.

Pour x = 2, copier y avant de modifier x donne successivement (x ; y) = (2 ; 2), puis (5 ; 2), et z = 7. Copier y après donne (5 ; 5), puis z = 10. L’affectation copie une valeur au moment où elle est exécutée.

Lire les valeurs et les coordonnées

Pour x = 2, copier y avant de modifier x donne successivement (x ; y) = (2 ; 2), puis (5 ; 2), et z = 7. Copier y après donne (5 ; 5), puis z = 10. L’affectation copie une valeur au moment où elle est exécutée.

Reviens à l’étape 2 et change l’ordre. Explique pourquoi modifier x ne met pas automatiquement y à jour. Puis prévois le résultat avec x = −1 au départ : 1 dans le premier ordre, 4 dans le second.

Les quatre types essentiels

Type PythonNomExempleValeur
intentier\(\texttt{n = 12}\)\(12\)
floatflottant\(\texttt{x = 2.5}\)approximation décimale
strchaine de caractères\(\texttt{mot = "lycee"}\)texte
boolbooléen\(\texttt{ok = x > 0}\)True ou False

Calculs, comparaisons et booléens

Opérateurs numériques

PythonMathématiquesExemple
+, -, *, /\(+,-,\times,\div\)7 / 2 donne 3.5
**puissance3 ** 2 donne 9
//quotient entier17 // 5 donne 3
%reste17 % 5 donne 2

Comparaisons et connecteurs logiques

PythonSensPythonSens
\(\texttt{==}\)est égal à\(\texttt{!=}\)est différent de
\(\texttt{<}, \texttt{<=}\)inférieur, inférieur ou égal\(\texttt{>}, \texttt{>=}\)supérieur, supérieur ou égal
andet : deux conditions vraiesorou : au moins une vraie
notnégation

Choisir avec if, elif, else

Répéter un nombre connu de fois : la boucle for

Comprendre range

InstructionValeurs prises par iNombre de tours
range(5)\(0,1,2,3,4\)5
range(2, 6)\(2,3,4,5\)4
range(1, 10, 2)\(1,3,5,7,9\)5
range(6, 1, -1)\(6,5,4,3,2\)5

Accumuler une somme

Compter des valeurs qui vérifient une condition

Répéter jusqu'à un seuil : la boucle while

Construire des fonctions réutilisables

Simuler une expérience aléatoire

Une réalisation n'est pas une probabilité

Répéter pour obtenir une fréquence

Lire une fonction statistique

Les séries utilisées ici sont finies, non vides et constituées de nombres réels finis. Le programme demande de savoir lire une fonction renvoyant une moyenne ou un écart type, sans exiger la connaissance des listes. Il faut donc comprendre le rôle des étapes, même si certaines écritures seront fournies.

Pour aller plus loin : raisonner sur les algorithmes

L'invariant : une preuve qui accompagne la boucle

Pour la suite : on peut garder des fractions exactes en important Fraction depuis fractions. Fraction(1, 1000) représente exactement \(1/1000\). Les opérations conservent des fractions : cela permet de distinguer une approximation mathématique contrôlée des arrondis d'un flottant. Ce module est fourni ici comme outil de prolongement, pas comme syntaxe à mémoriser.

La dichotomie : éliminer la moitié à chaque étape

On cherche une valeur approchée de \(\sqrt{2}\), donc un nombre \(x\) tel que \(x^2=2\). On sait que \(1^2<2<2^2\).

from fractions import Fraction

def racine2(epsilon):
    if epsilon <= 0:
        raise ValueError("precision positive attendue")
    a = Fraction(1)
    b = Fraction(2)
    while b - a > epsilon:
        m = (a + b) / 2
        if m ** 2 < 2:
            a = m
        else:
            b = m
    return (a + b) / 2

Par exemple, racine2(Fraction(1, 1000)) renvoie une fraction proche de \(\sqrt2\). La preuve ci-dessous concerne cette fraction ; la convertir avec float introduit un arrondi supplémentaire.

Les entrées de pgcd sont des entiers positifs ou nuls, non tous deux nuls. La sortie attendue est le PGCD positif. L’affectation simultanée évalue les deux expressions à droite avant de remplacer les deux valeurs à gauche.

Euclide : un algorithme vieux de plus de deux mille ans

def pgcd(a, b):
    while b != 0:
        a, b = b, a % b
    return a

Boite à outils Python de Seconde

Fiche-mémoire

Schéma : Fiche-mémoire