Aller au contenu

Programmer avec des variables et des conditions

Quatrième · Maths · Algorithmique et programmation

Algorithmique et programmation

Les variables : mémoriser et modifier une valeur

Un programme, c'est une suite d'instructions exécutées dans l'ordre, de haut en bas. Pour qu'il soit vraiment utile, il doit pouvoir retenir des informations : un score, un compteur, une longueur, une réponse de l'utilisateur. C'est le rôle des variables.

Les deux gestes de base : affecter et incrémenter

Dans un langage à blocs comme Scratch, deux instructions suffisent pour manipuler une variable, et il est essentiel de ne pas les confondre :
« mettre score à 7 » remplace le contenu par 7 : ce qu'il y avait avant est effacé.
« ajouter 7 à score » modifie le contenu : la nouvelle valeur est l'ancienne augmentée de 7.

InstructionValeur avantValeur aprèsCe qui se passe
mettre score à 0n'importe laquelle0on écrase l'ancienne valeur
mettre score à 5125on écrase : 12 est perdu
ajouter 5 à score1217on ajoute à l'ancienne valeur
ajouter -1 à score1211ajouter un nombre négatif = retirer
mettre score à score × 21224on lit l'ancienne valeur, puis on écrit la nouvelle

Algorithmique et programmation

Les conditions : faire des choix dans un programme

Jusqu'ici le programme faisait toujours la même chose. Avec une instruction conditionnelle, il peut réagir différemment selon la situation : afficher « gagné » ou « perdu », appliquer une réduction ou non, s'arrêter quand un compteur atteint une valeur.

Les opérateurs de comparaison

TestSe litExemple vraiExemple faux
x = 5x est égal à 5x vaut 5x vaut 4
x > 5x est strictement supérieur à 5x vaut 6x vaut 5
x < 5x est strictement inférieur à 5x vaut 4x vaut 5
x ⩾ 5x est supérieur ou égal à 5x vaut 5x vaut 4
(x > 0) et (x < 10)les DEUX tests sont vraisx vaut 7x vaut 12
(x < 0) ou (x > 10)au moins UN des deux est vraix vaut 12x vaut 7

Conditions et boucles. Deux boucles à connaître. La boucle « répéter n fois » répète un bloc un nombre de fois connu à l'avance. La boucle « répéter jusqu'à … » répète le bloc tant que la condition est fausse, et s'arrête dès qu'elle devient vraie : le nombre de tours n'est pas connu au départ, il dépend du test.

  • Dans « répéter jusqu'à (n inférieur à 10) », le test est vérifié avant chaque tour.
  • Si la condition d'arrêt ne peut jamais devenir vraie, le programme tourne à l'infini : c'est une boucle infinie.
  • Un compteur (une variable augmentée de 1 à chaque tour) permet de savoir combien de tours ont été effectués.
  • Un accumulateur (une variable qui cumule une somme ou un produit) doit être initialisé avant la boucle : à 0 pour une somme, à 1 pour un produit.

Exercices corrigés

  1. Quelle instruction permet à un programme de faire un choix selon la situation ?

    • A.L'instruction « si … alors … »Bonne réponse
    • B.L'instruction « répéter 10 fois »
    • C.L'instruction « mettre x à 5 »
    • D.L'instruction « avancer de 100 »

    Réponse : A — L'instruction « si … alors … »

    C'est l'instruction conditionnelle « si … alors … » qui permet de n'exécuter un bloc que dans certains cas : elle teste une condition, et n'exécute le bloc que si le test est vrai. « Répéter 10 fois » est une boucle (elle répète, elle ne choisit pas), « mettre x à 5 » est une affectation, et « avancer de 100 » est une simple instruction de déplacement.

  2. Un lutin exécute : « répéter 4 fois [ avancer de 50 ; tourner de 90° ] ». Quelle figure trace-t-il ?

    • A.Un carré de côté 50Bonne réponse
    • B.Un triangle équilatéral
    • C.Un segment de longueur 200
    • D.Un cercle de rayon 50

    Réponse : A — Un carré de côté 50

    À chaque tour de boucle, le lutin trace un côté de 50 puis pivote de 90°. Après 4 tours, il a tracé 4 côtés de même longueur séparés par 4 angles droits, et il a tourné de 4 × 90° = 360°, donc il est revenu à sa position et à son orientation de départ. C'est bien un carré de côté 50. Sans le « tourner de 90° », il tracerait un segment de 4 × 50 = 200 : c'est le distracteur de l'option 3.

  3. La variable a vaut 2. On exécute : « mettre a à a × 3 » puis « ajouter 1 à a ». Que vaut a à la fin ?

    • A.9
    • B.6
    • C.7Bonne réponse
    • D.2

    Réponse : C — 7

    Dans « mettre a à a × 3 », on lit d'abord la valeur ACTUELLE de a à droite (elle vaut 2), on calcule 2 × 3 = 6, puis on écrit 6 dans a. Ensuite « ajouter 1 à a » donne 6 + 1 = 7. Répondre 9, c'est avoir ajouté 1 avant de multiplier (3 × 3) : l'ordre des instructions change complètement le résultat. Répondre 6, c'est avoir oublié la seconde ligne.

  4. On exécute : « mettre a à 7 ; mettre b à 12 ; mettre m à (a + b) / 2 ». Que vaut m ?

    • A.19
    • B.9,5Bonne réponse
    • C.13
    • D.10

    Réponse : B — 9,5

    On calcule d'abord ce qui est entre parenthèses : a + b = 7 + 12 = 19. Puis on divise : 19 / 2 = 9,5. Donc m = 9,5, c'est la moyenne de 7 et 12. Répondre 19, c'est avoir oublié la division ; répondre 13 (= 7 + 12/2), c'est avoir ignoré les parenthèses et divisé seulement b — les priorités de calcul valent aussi en programmation. Contrôle de bon sens : une moyenne de 7 et 12 doit se situer entre 7 et 12.

  5. Programme : « si x > 0 alors afficher A sinon afficher B » puis, à la suite, « si x > 5 alors afficher C ». Qu'affiche le programme pour x = 8 ?

    • A.A seulement
    • B.C seulement
    • C.A puis CBonne réponse
    • D.A, B et C

    Réponse : C — A puis C

    Il faut traiter les deux instructions l'une après l'autre. Première instruction (avec sinon) : 8 > 0 est vrai, donc on affiche A — et B ne s'affichera jamais, puisque le « sinon » n'est atteint que si le test est faux. Seconde instruction (un « si » indépendant) : 8 > 5 est vrai, donc on affiche C. Bilan : A puis C. Retiens la règle : un « sinon » exclut l'autre branche de SA conditionnelle, mais il n'empêche en rien l'exécution des instructions suivantes.

  6. En programmation, qu'est-ce qu'une variable ?

    • A.Un nombre qui change tout seul pendant l'exécution
    • B.Un emplacement mémoire portant un nom, dont la valeur peut changerBonne réponse
    • C.Une instruction qui répète un bloc plusieurs fois
    • D.Un test qui est soit vrai, soit faux

    Réponse : B — Un emplacement mémoire portant un nom, dont la valeur peut changer

    Une variable, c'est une boîte étiquetée : l'étiquette (son nom) reste la même, mais son contenu (sa valeur) peut être modifié par le programme. Elle ne change jamais toute seule : elle ne change que si une instruction le lui demande. L'option 3 décrit une boucle et l'option 4 décrit un test — trois notions différentes à ne pas mélanger.

  7. Le programme exécute : « mettre score à 0 » puis « ajouter 5 à score ». Que vaut score à la fin ?

    • A.0
    • B.50
    • C.5Bonne réponse
    • D.On ne peut pas savoir

    Réponse : C — 5

    On suit les instructions dans l'ordre. Après la première, score = 0. La seconde ajoute 5 à la valeur actuelle : 0 + 5 = 5. Donc score vaut 5. Répondre 0, c'est croire que l'initialisation a lieu en dernier ; répondre 50, c'est coller les chiffres 5 et 0 au lieu de calculer. Un programme s'exécute toujours de haut en bas.

  8. La variable x vaut 7. Le test « x > 10 » est-il vrai ou faux ?

    • A.Vrai, car x est positif
    • B.Vrai, car 7 et 10 sont proches
    • C.On ne peut pas savoir
    • D.Faux, car 7 n'est pas supérieur à 10Bonne réponse

    Réponse : D — Faux, car 7 n'est pas supérieur à 10

    Un test se lit littéralement : « est-ce que 7 est strictement supérieur à 10 ? » La réponse est non, donc le test est FAUX. Un test n'est jamais « à peu près vrai » : il vaut vrai ou faux, sans nuance. Le signe de x ou la proximité des nombres n'ont aucune importance ici — seule compte la comparaison demandée.

  9. Le programme exécute : « mettre score à 3 » puis « mettre score à 8 ». Que vaut score à la fin ?

    • A.3
    • B.8Bonne réponse
    • C.11
    • D.Les deux à la fois

    Réponse : B — 8

    L'instruction « mettre … à … » ÉCRASE l'ancienne valeur : elle ne l'additionne pas. Après la première instruction score = 3, puis la seconde remplace ce contenu par 8. La valeur 3 est définitivement perdue, donc score = 8. Répondre 11, c'est confondre « mettre à » (qui remplace) avec « ajouter à » (qui cumule) : c'est l'erreur la plus fréquente sur les variables. Une variable ne contient jamais deux valeurs à la fois.

  10. Un programme contient : « si note ⩾ 10 alors afficher "reçu" sinon afficher "recalé" ». Que se passe-t-il si note vaut exactement 10 ?

    • A.Le programme affiche « reçu »Bonne réponse
    • B.Le programme affiche « recalé »
    • C.Le programme affiche les deux messages
    • D.Le programme n'affiche rien, car 10 est la valeur limite

    Réponse : A — Le programme affiche « reçu »

    Le symbole ⩾ se lit « supérieur OU ÉGAL à ». Pour note = 10, le test « 10 ⩾ 10 » est donc VRAI (grâce au cas d'égalité), et c'est le premier bloc qui s'exécute : « reçu ». Avec un test strict « note > 10 », la réponse aurait été « recalé ». C'est exactement pour cela qu'il faut toujours tester son programme sur la valeur frontière. Et avec « si … sinon », un seul des deux blocs s'exécute, jamais les deux.

  11. La variable x vaut 12. Le test « (x > 0) et (x < 10) » est-il vrai ?

    • A.Oui, car x > 0 est vrai
    • B.Oui, car un des deux tests suffit
    • C.On ne peut pas savoir sans exécuter le programme
    • D.Non, car x < 10 est fauxBonne réponse

    Réponse : D — Non, car x < 10 est faux

    Avec l'opérateur « et », le test global n'est vrai que si les DEUX conditions sont vraies en même temps. Ici : x > 0 donne 12 > 0, c'est vrai ; mais x < 10 donne 12 < 10, c'est faux. Une seule condition fausse suffit à rendre tout le test faux. L'option 2 décrit le comportement de l'opérateur « ou », pas de « et » : c'est la confusion classique entre les deux.

  12. La variable x vaut 12. Le test « (x < 0) ou (x > 10) » est-il vrai ?

    • A.Non, car x < 0 est faux
    • B.Oui, car x > 10 est vraiBonne réponse
    • C.Non, car les deux conditions ne sont pas vraies ensemble
    • D.Oui, car 12 est un nombre pair

    Réponse : B — Oui, car x > 10 est vrai

    Avec l'opérateur « ou », il suffit qu'UNE seule des deux conditions soit vraie pour que le test global soit vrai. Ici x < 0 est faux (12 n'est pas négatif) mais x > 10 est vrai (12 > 10), donc le test est VRAI. L'option 3 applique la règle du « et » au « ou » : c'est le piège. La parité de 12 n'a aucun rapport avec ce test.

S'entraîner sur ce chapitre

Ce chapitre compte 37 exercices corrigés dans l'application, avec le suivi de ta progression.

Commencer les exercices