La machine fait le calcul, toi tu fais le raisonnement
Beaucoup de problèmes mathématiques demandent de répéter un calcul des centaines de fois, ou de tester une condition sur une longue liste de nombres. À la main, c'est interminable et source d'erreurs. La programmation confie cette exécution mécanique à la machine : tu décris une fois pour toutes la méthode (l'algorithme), et l'ordinateur l'applique sans fatigue ni erreur. Ton travail reste le plus important : penser la méthode.
Algorithme ou programme ?
Un algorithme est une suite finie d'instructions non ambiguës qui résout un problème. On peut l'écrire en langage naturel (en français, avec le symbole \(\aff\) pour « prend la valeur ») ou dans un langage de programmation comme Python. Le programme, c'est la traduction de l'algorithme dans un langage que la machine comprend.
L'idée directrice
L'idée avant le code
Une variable, c'est une boîte avec une étiquette
Choisir, répéter : les deux gestes de base
Découper pour ne pas se noyer : les fonctions
Le cours complet
Variables, types et affectation
Instructions conditionnelles : choisir
Boucles bornées : répéter un nombre connu de fois
Boucles non bornées : répéter jusqu'à une condition
Fonctions et programmation modulaire
Les listes : la grande nouveauté
Un peu de logique et d'ensembles
Couples et produit cartésien
Identité, équation et statut des lettres
Trois structures de raisonnement
Pour aller plus loin : prouver qu'un algorithme est correct
Boîte à outils : réflexes pour le bac
Exercices
Exercice 1 ★☆☆ : Lire une affectation
On exécute : a = 4 ; b = 7 ; a = a + b ; b = a - b. Quelles sont les valeurs finales de a et b ?
Exercice 2 ★☆☆ : Trace d'une boucle
Que vaut s après ce code ? Détailler les valeurs successives.
s = 0
for k in range(1, 5):
s = s + k
Exercice 3 ★☆☆ : Lire une liste
Soit L = [3, 9, 1, 7, 4]. Donner L[0], L[2], len(L), L[len(L)-1], et la valeur de sum(L).
Exercice 4 ★☆☆ : Pair ou impair
Écrire une fonction parite(n) qui renvoie la chaîne "pair" si n est pair, "impair" sinon. (Indice : n % 2 vaut \(0\) si n est pair.)
Exercice 5 ★☆☆ : Compter
Écrire une fonction compte_pairs(L) qui renvoie le nombre d'éléments pairs d'une liste L.
Exercice 6 ★☆☆ : Liste en compréhension
Écrire, en une seule ligne (compréhension), la liste des cubes \(k^3\) pour \(k\) de \(1\) à \(10\). Puis la liste des multiples de \(3\) entre \(0\) et \(30\) inclus.
Exercice 7 ★★☆ : Somme conditionnelle
Écrire une fonction somme_positifs(L) qui renvoie la somme des éléments strictement positifs d'une liste L.
Exercice 8 ★★☆ : Table de multiplication
Écrire une fonction table(n) qui renvoie la liste[n, 2n, 3n, ..., 10n].
Exercice 9 ★★☆ : Maximum et sa position
Écrire une fonction indice_max(L) qui renvoie l'indice du plus grand élément de L (le premier en cas d'égalité).
Exercice 10 ★★☆ : Suite et seuil
On définit \(u_0=2\) et \(u_{n+1}=1{,}5\,u_n\). Écrire une fonction seuil(S) qui renvoie le plus petit \(n\) tel que \(u_n>S\).
Exercice 11 ★★☆ : Recherche dans une liste
Écrire une fonction est_present(x, L) qui renvoie True si x apparaît dans L, False sinon, sans utiliser le mot-clé in (avec une boucle).
Exercice 12 ★★★ : Logique et méthodes de preuve
1. Pour chaque implication, dire si elle est vraie, puis donner sa réciproque et dire si elle est vraie.
« \(n\) multiple de \(4\)\(\Rightarrow\)\(n\) pair » ;
« \(x>3 \Rightarrow x>1\) » ;
« \(x^2=9\Rightarrow x=3\) ».
2. Nier correctement : « tous les élèves ont réussi » ; « il existe un entier pair supérieur à \(100\) » ; « \(x>0\) et \(x<2\) ».
3. Démontrer par disjonction des cas que \(n(n+1)\) est pair pour tout entier \(n\).
4. Démontrer par contraposée : si \(n^2\) est pair, alors \(n\) est pair.
5. Démontrer par l'absurde qu'aucun entier ne peut être à la fois pair et impair.
Exercice 13 ★★★ : Crible des nombres premiers
Écrire une fonction est_premier(n) qui renvoie True si n est premier (\(n\geqslant 2\)), puis une fonction premiers_jusqua(N) qui renvoie la liste des nombres premiers inférieurs ou égaux à N.
Exercice 14 ★★★ : Simulation et espérance
On lance deux dés et on s'intéresse à la somme\(S\). Écrire une fonction moyenne_somme(n) qui simule n lancers de deux dés et renvoie la moyenne des sommes obtenues. Vers quelle valeur doit-elle tendre ? (Lien fiche 10.)
Exercice 15 ★★★ : Inverser une liste
Écrire une fonction renverse(L) qui renvoie une nouvelle liste contenant les éléments de L dans l'ordre inverse, sans utiliser L.reverse() ni L[::-1].
Exercice 16 ★★★ : Ensembles et produit cartésien via les listes
1. Écrire une fonction intersection(A, B) qui renvoie la liste des éléments présents à la fois dans A et dans B (sans doublon). Relier au symbole mathématique correspondant.
2. Écrire une fonction produit_cartesien(A, B) qui renvoie la liste de tous les couples \((x,y)\) avec \(x\in A\) et \(y\in B\). Combien de couples obtient-on si \(A\) contient \(p\) éléments et \(B\) en contient \(q\) ?
Problème type prépa
Partie A : les briques de base\\[2pt] On dispose d'une liste de notes, par exemple notes = [12, 8, 15, 10, 6, 18, 9].
Écrire moyenne(L) qui renvoie la moyenne d'une liste non vide.
Écrire maximum(L) et minimum(L)sans utiliser max ni min.
Écrire nb_admis(L) qui renvoie le nombre de notes supérieures ou égales à \(10\).
Partie B : compréhensions et sélection\\[2pt]
En une ligne (compréhension), construire la liste des notes >= 10.
Écrire ajuste(L) qui renvoie une nouvelle liste où chaque note est augmentée de \(1\) point, sans dépasser\(20\).
Partie C : assemblage modulaire\\[2pt]
Écrire bilan(L) qui réutilise les fonctions précédentes et renvoie un texte du type : « Moyenne : 11.1 ; Min : 6 ; Max : 18 ; Admis : 4/7 ».
Expliquer en deux phrases pourquoi découper en petites fonctions (plutôt qu'un seul long bloc) rend le programme plus sûr et plus réutilisable.
Corrigés détaillés
Corrigé 1
Corrigé 2
Corrigé 3
Corrigé 4
Corrigé 5
Corrigé 6
Corrigé 7
Corrigé 8
Corrigé 9
Corrigé 10
Corrigé 11
Corrigé 12
Corrigé 13
Corrigé 14
Corrigé 15
Corrigé 16
Corrigé du problème type prépa
Fiche-mémoire
Maîtrise du chapitre
Validation contrôlée
Réponds aux QCM, sélectionne les bonnes propositions ou remets les étapes dans l'ordre. Le site vérifie chaque réponse avant d'ouvrir la balise suivante.