Introduction
Tout programme se construit à partir d'un petit nombre de briques de base. Affecter une valeur à un nom, évaluer une expression pour produire une valeur, enchaîner des instructions, choisir entre deux chemins avec une condition, répéter un bloc de code : ces cinq mécanismes suffisent à exprimer la quasi-totalité des programmes écrits en NSI.
L'objectif de ce cours n'est pas de faire découvrir ces notions (elles ont déjà été manipulées en Seconde et en début de Première), mais de les nommer précisément et de les distinguer les unes des autres.
Variables et affectation
Une variable est un nom associé à une valeur stockée en mémoire. L'affectation crée ou met à jour cette association.
age = 16 # création de la variable age, valeur 16
age = age + 1 # mise à jour : age vaut désormais 17
prenom = "Ada" # variable de type chaîne de caractères
Le signe = n'est pas un signe d'égalité mathématique. Il signifie
« range la valeur de droite dans la case nommée à gauche ». La ligne
age = age + 1 n'a aucun sens en mathématiques (un nombre ne peut être
égal à lui-même augmenté de 1), mais elle a un sens parfait en informatique.
= (affectation) et == (test d'égalité).x = 5 # affecte 5 à x
x == 5 # renvoie True : test d'égalité
Types de base
Toute valeur en Python a un type qui détermine ce qu'on peut faire avec.
| Type | Exemple | Usage |
|---|---|---|
int | 42, -7 | entiers |
float | 3.14, -0.5 | nombres à virgule |
str | "Bonjour" | chaînes de caractères |
bool | True, False | valeurs logiques |
La fonction type(...) permet d'interroger le type d'une valeur :
print(type(42)) # <class 'int'>
print(type(3.14)) # <class 'float'>
print(type("Ada")) # <class 'str'>
print(type(True)) # <class 'bool'>
Quel est le type de l'expression 5 / 2 en Python 3 ?
Expressions et instructions
Distinction essentielle :
- Une expression est évaluée et produit une valeur. Exemples :
2 + 3,x * 10,"a" + "b",len("Ada") > 2. - Une instruction fait une action sans nécessairement produire de
valeur. Exemples :
x = 5(affectation),print(x)(affichage),if x > 0:(test conditionnel).
Une instruction peut contenir des expressions :
y = (x + 5) * 2 # (x + 5) * 2 est une expression, y = ... est une instruction
Sortie attendue :
L'expression vaut : 20
Comparaison x > 5 : True
Séquence d'instructions
La forme la plus simple d'un programme est une séquence : on enchaîne les instructions, exécutées dans l'ordre, de haut en bas.
prix_ht = 100
taux_tva = 0.20
prix_ttc = prix_ht * (1 + taux_tva)
print("Prix TTC :", prix_ttc) # 120.0
Changer l'ordre des deux premières lignes ne pose pas de problème ici, mais
on ne peut pas calculer prix_ttc avant d'avoir défini prix_ht et
taux_tva. L'ordre compte.
Conditionnelle
Une conditionnelle permet d'exécuter un bloc d'instructions seulement si une expression booléenne est vraie.
note = 12
if note >= 10:
print("Admis")
else:
print("Refusé")
Pour plusieurs cas, on enchaîne avec elif :
note = 14
if note >= 16:
mention = "Très bien"
elif note >= 14:
mention = "Bien"
elif note >= 12:
mention = "Assez bien"
elif note >= 10:
mention = "Passable"
else:
mention = "Refusé"
print(mention) # Bien
: : en Python, le bloc qui suit un if est délimité
uniquement par l'indentation, et la ligne du if se termine par :.
Oublier l'un des deux est une erreur classique en début d'année.Boucles bornées : for
Une boucle bornée est une boucle dont on connaît à l'avance le nombre
d'itérations. En Python, c'est for.
# Affiche les carrés de 1 à 5
for i in range(1, 6):
print(i, "→", i * i)
Sortie :
1 → 1
2 → 4
3 → 9
4 → 16
5 → 25
La fonction range(a, b) produit les entiers de a à b - 1 inclus.
La borne supérieure b n'est jamais atteinte.
range(5) produit 0, 1, 2, 3, 4 : l'indice 5 n'est jamais
atteint. C'est l'un des pièges les plus fréquents.Combien de fois la boucle for i in range(3, 8): exécute-t-elle son corps ?
On peut aussi parcourir directement une séquence (liste, chaîne…) :
for lettre in "NSI":
print(lettre)
# N
# S
# I
Boucles non bornées : while
Une boucle non bornée s'exécute tant qu'une condition est vraie, sans qu'on sache forcément à l'avance combien d'itérations auront lieu. C'est la boucle du « j'avance jusqu'à ce que… » plutôt que celle du « je fais N pas ».
# Compte à rebours qui s'arrête à 0
n = 3
while n >= 0:
print(n)
n = n - 1
print("Décollage !")
Sortie :
3
2
1
0
Décollage !
Question vitale : qu'est-ce qui garantit que la boucle s'arrête ? Ici,
chaque itération diminue n, donc la condition n >= 0 finira par
être fausse. Sans cette progression, la boucle tournerait à l'infini.
Sortie attendue :
Le plus petit diviseur impair > 1 de 91 est 7
Quand utiliser for, quand utiliser while ?
| Situation | Boucle adaptée |
|---|---|
Parcourir une liste ou un range connu | for |
| Répéter un nombre connu de fois | for |
| Attendre qu'une condition devienne fausse | while |
| Lire jusqu'à une sentinelle (fin de fichier, mot-clé) | while |
Règle pratique : par défaut, préférer for, car le risque de boucle
infinie y est nul. N'utiliser while que lorsque le nombre d'itérations
n'est pas connu à l'avance.
Pièges courants
- Confondre
=et==. - Oublier les
:et l'indentation aprèsif,for,while. - Oublier que
range(n)exclutn. - Modifier la condition de boucle dans le mauvais sens (ex.
n = n + 1au lieu den = n - 1dans un compte à rebours) → boucle infinie. - Indentation mixte (tabulations + espaces) → erreur
IndentationError.
Pour aller plus loin
Ces cinq constructions (affectation, expression, séquence, conditionnelle, boucle) constituent ce qu'on appelle le noyau impératif. Le corpus de l'item les recouvre en distinguant boucle bornée et boucle non bornée, et y ajoute les appels de fonctions, objet du cours suivant.