cours1 min de lecture

Constructions élémentaires

Variables, types, expressions, instructions, conditionnelles et boucles — le socle commun de la programmation.
programme

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.

Ne confondez pas = (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.

TypeExempleUsage
int42, -7entiers
float3.14, -0.5nombres à virgule
str"Bonjour"chaînes de caractères
boolTrue, Falsevaleurs 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
⏵ Ctrl+↵ pour exécuter
Aucune exécution pour l'instant.

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
Indentation et : : 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.

⏵ Ctrl+↵ pour exécuter
Aucune exécution pour l'instant.

Sortie attendue :

Le plus petit diviseur impair > 1 de 91 est 7
Boucle infinie : si la condition d'arrêt n'est jamais atteinte, le programme ne termine pas. Toujours se demander : qu'est-ce qui change à chaque itération pour rendre la condition fausse à terme ?

Quand utiliser for, quand utiliser while ?

SituationBoucle adaptée
Parcourir une liste ou un range connufor
Répéter un nombre connu de foisfor
Attendre qu'une condition devienne faussewhile
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ès if, for, while.
  • Oublier que range(n) exclut n.
  • Modifier la condition de boucle dans le mauvais sens (ex. n = n + 1 au lieu de n = n - 1 dans 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.