Algorithmique et programmation Python — cours de Seconde
Algorithme, programme et test, Variables et types, Opérations et booléens, Entrées et sorties Lecture ≈ 5 min.
L'algorithmique intervient dans tous les domaines du programme. Il faut savoir décrire un algorithme en français, écrire des programmes simples en Python, et lire, comprendre, compléter ou modifier des programmes plus complexes.
1. Algorithme, programme et test
- Un algorithme est une suite finie et non ambiguë d'instructions permettant de résoudre un problème.
- Un programme est la traduction de cet algorithme dans un langage informatique.
- Un jeu de tests comprend des cas ordinaires, des cas limites et, si pertinent, des cas interdits.
2. Variables et types
| Type | Python | Exemple |
|---|---|---|
| entier | int | n = 12 |
| flottant | float | x = 2.5 |
| booléen | bool | ok = x >= 0 |
| chaîne de caractères | str | nom = "Ada" |
En Python, le séparateur décimal est le point. 2.5 est valide ; 2,5 représente autre chose.
L'instruction x = expression calcule l'expression puis stocke le résultat dans x. Ce signe n'est pas une égalité mathématique symétrique.
x = 3 x = x + 2 x = 4 * x
Après les trois lignes, x vaut successivement 3, 5 puis 20. L'instruction x = x + 2 signifie « remplacer x par son ancienne valeur augmentée de 2 ».
3. Opérations et booléens
| Rôle | Python |
|---|---|
| addition, soustraction, produit | +, -, * |
| division décimale | / |
| puissance | ** |
| quotient entier, reste | //, % |
| égalité, différence | ==, != |
| comparaisons | <, <=, >, >= |
| connecteurs | and, or, not |
17 // 5 vaut 3 et 17 % 5 vaut 2. Le test n % 2 == 0 vaut True si n est pair.
4. Entrées et sorties
input() renvoie une chaîne. Pour calculer, il faut souvent convertir :
age = int(input("Âge : "))
taille = float(input("Taille en mètres : "))
print("Dans un an :", age + 1)
5. Instruction conditionnelle
if condition:
instructions_si_vrai
else:
instructions_si_faux
L'indentation délimite les blocs. elif permet d'enchaîner plusieurs cas.
def signe_affine(x):
valeur = 2*x - 6
if valeur < 0:
return "négatif"
elif valeur == 0:
return "nul"
else:
return "positif"
6. Boucle bornée for
Une boucle bornée répète un bloc un nombre connu de fois. range(n) produit 0, 1, ..., n − 1 : il y a n passages.
def somme_entiers(n):
s = 0
for k in range(1, n + 1):
s = s + k
return s
Pour n = 4, s vaut successivement 0, 1, 3, 6, 10. La fonction renvoie 1 + 2 + 3 + 4 = 10.
7. Boucle non bornée while
Une boucle while se répète tant qu'une condition est vraie. Il faut s'assurer qu'une variable évolue vers l'arrêt, sinon la boucle peut être infinie.
def premier_exposant(a, seuil):
n = 0
puissance = 1
while puissance <= seuil:
puissance = puissance * a
n = n + 1
return n
Pour a = 2 et seuil = 100, la fonction renvoie 7, car 26 = 64 ≤ 100 et 27 = 128 > 100. On suppose ici a > 1 et seuil ≥ 1 afin de garantir l'arrêt.
8. Fonctions à un ou plusieurs arguments
Une fonction Python est définie avec def. Les arguments sont des données d'entrée ; return renvoie le résultat et termine l'appel.
def distance(xA, yA, xB, yB):
return ((xB - xA)**2 + (yB - yA)**2)**0.5
d = distance(-2, 1, 4, 5)
La fonction a quatre arguments et renvoie ici √52.
print ou return ?
print affiche une information ; return fournit une valeur réutilisable dans un calcul. Une fonction mathématique doit le plus souvent renvoyer son résultat.
9. Fonctions aléatoires et simulations
from random import random
def experience(p):
if random() < p:
return 1
else:
return 0
def repetitions(n, p):
succes = 0
for i in range(n):
succes = succes + experience(p)
return succes
random() produit un flottant dans [0 ; 1[. La fonction experience(p) renvoie 1 avec probabilité p dans le modèle.
10. Encadrer √2 par balayage
def encadrement_racine2(n):
pas = 10**(-n)
x = 0.0
while (x + pas)**2 <= 2:
x = x + pas
return x, x + pas
Pour n = 3, la fonction cherche deux décimaux consécutifs au millième encadrant √2. Les calculs flottants pouvant comporter de petites erreurs, on contrôle le résultat obtenu.
11. Approximer un extrémum par balayage
def f(x):
return -2*x*x + 20*x
def maximum_balayage(a, b, pas):
x = a
meilleur_x = a
meilleur_y = f(a)
while x <= b:
if f(x) > meilleur_y:
meilleur_x = x
meilleur_y = f(x)
x = x + pas
return meilleur_x, meilleur_y
Le résultat dépend du pas : un pas plus petit améliore en général la précision mais augmente le nombre de calculs. Il s'agit d'une approximation numérique, pas d'une preuve de l'extrémum exact.
12. Lire et déboguer un programme
- Identifier entrées, sorties et types.
- Suivre ligne par ligne la valeur des variables dans un tableau.
- Pour une boucle, vérifier les valeurs initiales, la condition et la mise à jour.
- Tester cas limite, cas ordinaire et entrée interdite.
- Comparer le résultat à un ordre de grandeur ou à un calcul manuel.
def est_pair(n):
if n % 2 = 0:
return True
Il y a deux problèmes : le test d'égalité s'écrit ==, et aucun résultat n'est renvoyé si n est impair. Correction :
def est_pair(n):
return n % 2 == 0
Il faut pouvoir lire et comprendre une fonction renvoyant une moyenne ou un écart type, mais aucune connaissance sur les listes n'est exigée en Seconde. Les structures de listes éventuellement rencontrées dans un programme fourni sont donc accompagnées et ne constituent pas une syntaxe à mémoriser.
- Utiliser
=au lieu de==dans un test. - Oublier les deux points ou l'indentation après
if,for,whileoudef. - Croire que
range(n)va de 1 à n. - Confondre affichage avec
printet valeur renvoyée avecreturn. - Écrire une boucle
whiledont la condition ne peut jamais devenir fausse. - Ne tester qu'un seul exemple favorable.