Constructions élémentaires
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 que vous écrirez en NSI.
L'objectif de ce cours n'est pas de vous faire découvrir ces notions — vous les avez déjà 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. C'est exactement le corpus pointé par l'item du programme. Le cours suivant introduit une sixième construction tout aussi fondamentale : la fonction.