Variables, boucles, conditions, événements

3èmeMathematiquesÉcrire, mettre au point et exécuter un programmeVariables, boucles, conditions, événements~11 min de lecture

Variables, boucles, conditions, événements

Un programme est une recette pour l'ordinateur : il range des valeurs dans des variables, répète des actions avec des boucles, choisit avec des conditions et réagit à des événements.

Objectifs

  • Créer une variable, lui affecter une valeur et suivre son évolution dans un tableau.
  • Utiliser une instruction conditionnelle « si… alors… sinon ».
  • Utiliser une boucle « répéter n fois » et une boucle « répéter jusqu'à ».
  • Déclencher des actions avec des événements (clic, touche, message).
  • Tester un programme et corriger ses erreurs (déboguer).

Les exemples sont donnés en blocs (comme dans Scratch) et traduits en Python, les deux langages utilisés au collège.

1. Les variables

Notions clés

Une variable est une case de la mémoire de l'ordinateur qui porte un nom et contient une valeur (un nombre, un mot…). On peut la lire et la modifier pendant le programme.

Affecter une valeur, c'est la ranger dans la variable. En blocs : « mettre prix à 3500 ». En Python :

prix = 3500
quantite = 4
total = prix * quantite   # total vaut 14000
quantite = quantite + 1   # quantite vaut maintenant 5

Exemple résolu 1 : suivre une variable

Quelle est la valeur finale de \(x\) après ce programme ?

x = 3
x = x + 2
x = x * 4
x = x - 5
Ligne 1 : \(x\) reçoit 3.
Ligne 2 : on calcule \(3 + 2 = 5\), donc \(x\) vaut 5.
Ligne 3 : on calcule \(5 \times 4 = 20\), donc \(x\) vaut 20.
Ligne 4 : on calcule \(20 - 5 = 15\). La valeur finale de \(x\) est 15.

Après « a = 7 », puis « b = a + 1 », puis « a = 2 », que vaut b ?

  1. 3
  2. 2
  3. 8
b a été calculée quand a valait 7 : b = 8. Changer a ensuite ne modifie pas b.

2. Les conditions

Notions clés

Une instruction conditionnelle exécute des instructions seulement si une condition est vraie. Une condition est une question à laquelle on répond par vrai ou faux, par exemple \(total \geq 10\,000\).

flowchart TD
A[Lire le total] --> B{total au moins 10000 ?}
B -->|Oui| C[total = total - 1000]
B -->|Non| D[Pas de reduction]
C --> E[Afficher le total]
D --> E

En blocs : « si … alors … sinon … ». En Python, les instructions du bloc sont décalées (indentées) :

total = 12500
if total >= 10000:
    total = total - 1000
else:
    print("Pas de réduction")
print(total)   # affiche 11500

Les comparaisons utiles : égal à (en Python ==), différent de (!=), \(<\), \(>\), \(\leq\) (<=), \(\geq\) (>=). On peut combiner deux conditions avec et (and), ou (or).

Exemple résolu 2

Un programme lit la moyenne d'un élève. Si elle est supérieure ou égale à 10, il affiche « Admis » ; sinon « Ajourné ». Qu'affiche-t-il pour une moyenne de 9,5 ? Et de 10 ? Cherche d'abord.

Voir la solution

Pour 9,5 : la condition \(9{,}5 \geq 10\) est fausse, le programme passe dans « sinon » et affiche « Ajourné ».

Pour 10 : la condition \(10 \geq 10\) est vraie (« supérieur ou égal »), il affiche « Admis ».

Avec age = 15, qu'affiche : si age > 18 alors dire « Majeur » sinon dire « Mineur » ?

  1. Majeur
  2. Mineur
  3. Rien
La condition 15 > 18 est fausse : le programme exécute la partie « sinon » et affiche « Mineur ».

3. Les boucles

Boucle « répéter n fois »

On connaît à l'avance le nombre de répétitions. Exemple : dessiner un carré de côté 100 avec le lutin.

Construction d'un carré par un lutin qui répète 4 fois : avancer de 100, tourner de 90 degrés départ tour 1 tour 2 tour 3 tour 4

Tour 1 : le lutin avance de 100 puis tourne de 90°.

Tour 2 : mêmes instructions, il trace le deuxième côté.

Tour 3 : encore les mêmes instructions, troisième côté.

Tour 4 : le carré est fermé. Deux instructions répétées 4 fois remplacent huit lignes.

for i in range(4):
    avancer(100)
    tourner(90)

Exemple résolu 3 : une somme avec une boucle

s = 0
for i in range(1, 5):   # i prend les valeurs 1, 2, 3, 4
    s = s + i
print(s)
Au départ \(s = 0\).
\(i = 1\) : \(s = 0 + 1 = 1\). Puis \(i = 2\) : \(s = 1 + 2 = 3\).
\(i = 3\) : \(s = 3 + 3 = 6\). Puis \(i = 4\) : \(s = 6 + 4 = 10\).
La boucle s'arrête (range(1, 5) s'arrête avant 5) : le programme affiche 10.

Boucle « répéter jusqu'à » (ou « tant que »)

On ne sait pas à l'avance combien de fois répéter : on s'arrête quand une condition devient vraie. En blocs : « répéter jusqu'à épargne ≥ 15 000 ». En Python, on écrit l'inverse avec while (« tant que épargne < 15 000 ») :

epargne = 0
semaines = 0
while epargne < 15000:
    epargne = epargne + 2000
    semaines = semaines + 1
print(semaines)

Kofi met 2 000 F CFA de côté chaque semaine pour s'acheter un ballon à 15 000 F. Combien de semaines affiche le programme ? Cherche d'abord.

Voir la solution

Après 7 semaines : \(7 \times 2\,000 = 14\,000\), encore inférieur à 15 000, la boucle continue. Après 8 semaines : \(16\,000\), la condition « épargne < 15 000 » devient fausse et la boucle s'arrête. Le programme affiche 8.

Combien de fois le lutin dit-il « Bonjour » avec : répéter 3 fois { répéter 2 fois { dire Bonjour } } ?

  1. 6 fois
  2. 5 fois
  3. 3 fois
Les boucles sont imbriquées : à chacun des 3 tours, la boucle intérieure fait 2 tours. \(3 \times 2 = 6\).

4. Les événements

Notions clés

Un événement est quelque chose qui se produit pendant que le programme tourne et qui déclenche un script : un clic sur le drapeau vert, l'appui sur une touche, un clic sur un lutin, la réception d'un message envoyé par un autre lutin.

  • « Quand le drapeau vert est cliqué » : démarre le programme.
  • « Quand la touche espace est pressée » : par exemple, le personnage saute.
  • « Quand ce lutin est cliqué » : le lutin réagit.
  • « Envoyer à tous [message] » et « Quand je reçois [message] » : un lutin prévient les autres.

Exemple résolu 4 : un petit jeu

On veut que le chat avance vers la droite quand on appuie sur la flèche droite et dise « Gagné ! » s'il touche le ballon. Quels scripts écrire ?

Script 1 — « Quand le drapeau vert est cliqué » : mettre le chat au départ, mettre la variable score à 0.
Script 2 — « Quand la flèche droite est pressée » : avancer de 10.
Script 3 — « Quand le drapeau vert est cliqué » : répéter jusqu'à « touche le ballon ? », puis ajouter 1 à score et dire « Gagné ! ».
Les trois notions travaillent ensemble : événements (déclencheurs), boucle (attente), condition (test du contact), variable (score).

Lequel de ces blocs est un événement ?

  1. Ajouter 1 à score
  2. Si score > 5 alors
  3. Quand la touche espace est pressée
« Quand la touche espace est pressée » attend une action de l'utilisateur pour déclencher un script : c'est un événement. Les deux autres sont une affectation et une condition.

5. Mettre au point un programme

Un programme a rarement raison du premier coup. Une erreur s'appelle un bogue ; la corriger, c'est déboguer.

flowchart LR
A[Ecrire] --> B[Executer]
B --> C[Comparer au resultat attendu]
C -->|Different| D[Chercher et corriger]
D --> B
C -->|Correct| E[Programme pret]

Ce programme devait afficher la somme \(1 + 2 + 3 + 4 + 5 = 15\), mais affiche 10. Trouve le bogue.

s = 0
for i in range(1, 5):
    s = s + i
print(s)
Voir la solution

range(1, 5) donne 1, 2, 3, 4 : la valeur 5 n'est jamais ajoutée. Il faut écrire range(1, 6). On obtient alors bien 15.

Un programme « tant que n < 10 : afficher n » ne s'arrête jamais. Quelle est la cause la plus probable ?

  1. Il manque un événement
  2. La variable n n'est jamais modifiée dans la boucle
  3. La condition est fausse dès le départ
Si n ne change pas, « n < 10 » reste vraie à chaque tour : boucle infinie. Il faut par exemple ajouter n = n + 1 dans la boucle.

Erreurs fréquentes

  • Confondre l'affectation (=) et le test d'égalité (== en Python).
  • Oublier l'indentation en Python : les instructions de la boucle ou du « si » doivent être décalées.
  • Se tromper sur les bornes : range(1, 5) s'arrête à 4.
  • Oublier d'initialiser une variable (par exemple s = 0) avant de l'utiliser dans une boucle.
  • Écrire une boucle qui ne s'arrête jamais.

Récapitulatif

  • Variable : un nom et une valeur qui peut changer ; on lui affecte une valeur.
  • Condition : si … alors … sinon, selon qu'un test est vrai ou faux.
  • Boucle : répéter n fois (nombre connu) ou répéter jusqu'à / tant que (arrêt par une condition).
  • Événement : un signal (clic, touche, message) qui déclenche un script.
  • Déboguer : tester, comparer au résultat attendu, corriger.
Variable
Une boîte en mémoire avec un nom et une valeur modifiable.
Affectation
Ranger une valeur dans une variable : x = x + 1 calcule puis remplace.
Instruction conditionnelle
Si la condition est vraie, faire ceci ; sinon, faire cela.
Boucle
Répéter des instructions : n fois, ou jusqu'à ce qu'une condition soit vraie.
Événement
Un signal (clic, touche, message) qui déclenche un script.
Bogue
Une erreur dans un programme ; la corriger, c'est déboguer.

Teste tes connaissances sur ce cours

Crée ton compte gratuitement pour accéder aux quiz associés et suivre ta progression.