C3.1 Résoudre des problèmes et créer des représentations de situations mathématiques de façons computationnelles en écrivant et en exécutant des codes, y compris des codes comprenant des événements séquentiels et des événements simultanés.
Habileté : résoudre des problèmes de façon computationnelle
Le codage peut être utilisé pour automatiser des tâches et visualiser les mathématiques afin de faciliter la résolution de problèmes. Par sa nature même, le codage se prête bien à l’apprentissage par essais et erreurs, ce qui donne à l’élève l’occasion de résoudre des problèmes en apprenant de ses erreurs. L’élève peut donc utiliser le questionnement « Qu’arrivera-t-il si…? »
L’élève, par exemple, pourrait se poser la question « Qu’arrivera-t-il si deux sprites contiennent le même code? » ou « Qu’arrivera-t-il si deux sprites contiennent le même nombre de déplacements, mais que le code n’est pas identique? » À l’aide de cet exemple, il est possible d’explorer le concept d’équivalence et d’animer une conversation mathématique à cet effet. Poser d’abord aux élèves la question suivante :
- Est-ce que les déplacements des deux sprites sont équivalents?
- Oui, les deux sprites sont arrivés au même endroit.
- Oui, les deux sprites se sont déplacés pendant la même durée de temps.
- Non, les deux sprites ont effectué différents déplacements.
- Non, les deux sprites ne sont pas arrêtés au même endroit.
Note : Il est important de permettre aux élèves d’expérimenter à l’aide du code et non de faire une démonstration à cette étape-ci. Cela aura une incidence sur les réponses.
Habileté : représenter des situations mathématiques de façons computationnelles
Le codage peut servir d’outil de représentation de la même façon que le matériel de manipulation. En utilisant des blocs ou des commandes écrites, des situations mathématiques très complexes peuvent être modélisées et manipulées de manière visuelle, ce qui peut concrétiser des concepts très abstraits.
L’élève, par exemple, peut coder un « défilé de sprites » afin de représenter deux suites à motifs répétés en même temps en utilisant du code. Le code à l’intérieur du sprite pourrait avoir un motif répétitif de déplacements qui est accompagné d’un motif répétitif de paroles d’une chanson. Voici un exemple de code possible :

Ici, on voit deux différentes suites à motif répété en même temps, soit une suite ABBA et une suite ABCD.
Habileté : écrire du code
L’écriture ou la rédaction d’un code consiste à mettre des instructions dans un ordre précis, en respectant la syntaxe d’un langage de programmation. La rédaction de code peut ressembler à la rédaction d’un texte. Le pseudocode consiste à rédiger les directives pour un code dans la langue familière. Le codage par blocs peut faciliter le respect de la syntaxe en utilisant des formes et des couleurs de blocs différents.
La situation qui suit, par exemple, présente deux papillons qui doivent faire une course d’obstacles :

Les élèves pourraient rédiger du code afin que les deux papillons commencent la course en même temps, mais qu’un
des papillons atteigne la cible avant l’autre. Le code résultant pourrait ressembler à ceci :
Code possible du papillon jaune :

Code possible du papillon violet :

Habileté : exécuter du code
L’exécution d’un code est l’étape au cours de laquelle la séquence de code est lue et compilée par l’ordinateur. C’est à cette étape qu’un code fonctionnel donnera le résultat, ou la sortie, désiré (et un code non fonctionnel donnera une différente sortie ou aucune sortie). Dans le codage par blocs, l’exécution d’un code est souvent faite par l’entremise d’un bouton dans l’interface, tandis que certains périphériques de robotique nécessitent des logiciels de compilation spécifiques qui font essentiellement la traduction du code de la langue de programmation à la langue du robot.
Quelques exemples de boutons d’exécution d’un logiciel de codage par blocs :

Source : Microbit.

Source : Scratch.
Connaissance : événements simultanés
Des événements simultanés sont simplement des événements qui se produisent en même temps. Il est à noter, cependant, que les événements n’ont pas besoin d’être identiques pour être considérés simultanés.
Un exemple courant de l’utilisation d’événements simultanés est les déplacements en diagonale. La plupart des logiciels de codage en blocs et de robotique permettront des déplacements dans quatre directions (par exemple, haut, bas, gauche, droite), mais un déplacement diagonal nécessite un déplacement horizontal et un déplacement vertical en même temps.
Prenons, par exemple, la ville imaginaire suivante :

Afin qu’un sprite puisse se rendre du poste de police à l’école, il devra effectuer un déplacement horizontal vers la droite, un petit déplacement vertical vers le haut et un déplacement diagonal vers le coin supérieur droit. Le code correspondant pourrait ressembler à ceci :

Ce code contient deux situations de départ simultanées, soit la réception du message qui est symbolisée par
l’enveloppe orangée.
La vidéo suivante montre la progression des apprentissages de la 1re à la 3e année par rapport aux divers types d’événements en codage.
Source : Adapté de En avant, les maths!, 3e année, ML, Algèbre, p. 15 à 20.
Description de la vidéo
[Vidéodescription]
L'oratrice montre son écran d'ordinateur qui affiche le logiciel Scratch. Au fil de ses descriptions, elle effectue les opérations à l'ordinateur, et le tout s'affiche à l'écran.
[Oratrice]
Je débute en appuyant sur le signe d'addition afin de créer une nouvelle programmation. Dans ce code, je vais représenter l'histoire d'un hippocampe et d'un poisson qui se rencontrent dans les fonds marins.
Je débute en choisissant un arrière-plan approprié. Pour ce faire, je choisis l'icône du paysage en haut de l'écran. En ce qui concerne les personnages, je n'ai pas besoin du chat, je peux donc le supprimer. Je garde mon doigt sur le personnage à la gauche de l'écran jusqu'à ce qu'apparaisse le petit X rouge. Pour ajouter un personnage, j'appuie sur le petit signe d'addition, je choisis l'hippocampe, je le place à la position de départ désirée.
Je peux maintenant commencer le code relatif à l'hippocampe. Je dois commencer par un bloc qui m'aidera à exécuter mon code. Je choisis le bloc d'événement du drapeau vert. Ce bloc signifie que lorsque j'appuie sur le drapeau vert, ma programmation débutera. Avant de commencer mon code, j'écris un pseudo-code afin de faciliter la planification de ma programmation. Je veux que mon hippocampe se promène et qu'un poisson jaune arrive près de lui et lui demande où il va. Maintenant que j'ai mon pseudo-code et que j'ai une idée du code que je veux créer, je peux commencer par mes blocs de mouvement. Je veux que mon hippocampe avance et monte, avance et descende. La suite de mouvements sera donc avance-avance-monte, avance-avance-descend. Je ne sais pas de combien mon hippocampe va avancer vers la droite avec un seul mouvement. Il est donc important d'évaluer avant de poursuivre avec le code.
J'ajoute donc un bloc « avance de un » et j'appuie sur le drapeau vert. J'ajoute un autre bloc de mouvement pour que l'hippocampe avance de deux. Je veux ensuite qu'il monte d'un. J'ajoute le bloc de mouvement vers le haut. Je répète ensuite les deux blocs vers la droite et j'ajoute un bloc de mouvement vers le bas. J'ai créé des événements séquentiels, ce qui veut dire que les blocs seront lus les uns après les autres.
[Vidéodescription]
Un encadré textuel apparaît. Il est écrit : « Événements séquenciels. Ensemble d'instructions exécutées les unes après les autres, généralement de haut en bas ou de gauche à droite sur un écran. »
[Oratrice]
J'appuie sur le drapeau vert afin d'exécuter mon code pour voir s'il y a des modifications. J'aime le déplacement que fait mon hippocampe et je ne veux apporter aucune modification.
Je répète ensuite ce mouvement vers la droite, vers la droite, vers le haut, vers la droite, vers la droite, vers le bas. Je les répète une troisième fois vers la droite, vers la droite, vers le haut ; vers la droite, vers la droite, vers le bas.
J'appuie sur le drapeau vert afin d'exécuter mon code. Je trouve que mon code est long et répétitif. Je me rappelle que je peux utiliser une boucle afin d'ajouter un événement répétitif.
[Vidéodescription]
Un encadré textuel apparaît. Il est écrit : « Événements répétitifs : événements qui se répètent. Dans le cadre d'activités de codage, les boucles sont utilisées dans le code pour répéter les instructions. »
[Oratrice]
Cela rendra mon code plus efficace.
Je déplace la partie de mon code dont je n'aurai plus besoin et j'insère ma boucle avec mon événement séquentiel à l'intérieur. Je modifie le nombre de répétions de ma boucle à trois fois. J'appuie sur le drapeau vert afin d'exécuter mon code. Je peux vérifier si ma boucle fonctionne. Je vois que je peux rendre mon code encore plus efficace en modifiant le nombre de pas directement sur le bloc au lieu de le répéter. J'enlève donc un mouvement de bloc vers la droite et je modifie le mouvement de pas à deux sur l'autre bloc de mouvement vers la droite.
Le mouvement de mon hippocampe me satisfait, donc je peux maintenant ajouter mon autre personnage. Je clique sur le petit signe d'addition et je choisis le poisson jaune. Je veux que mon poisson jaune se déplace dans l'autre direction, donc vers la gauche pour que les deux personnages se croisent.
Afin de m'assurer que j'écris le code pour le bon personnage, je regarde au bas et à la gauche de l'écran. Je vois bien le dessin du poisson, donc je peux commencer mon code. Tout comme pour l'hippocampe, je commence par mon bloc d'événement du drapeau vert. Cela fait que mes deux personnages commencent la programmation en même temps. Ce qui crée un événement simultané.
[Vidéodescription]
Un encadré textuel apparaît. Il est écrit : « Événements simultanés : plusieurs événements qui se produisent en même temps. »
[Oratrice]
J'ajoute mes mouvements vers la gauche, vers le haut, vers le bas. Je veux que ce mouvement soit répété deux fois avant que le poisson pose une question à l'hippocampe. J'ajoute une boucle et je la répète deux fois. Je vais maintenant dans la catégorie mauve où je trouve le bloc pour faire parler mon personnage. J'ajoute le bloc à ma séquence et je modifie le texte : « Salut. Où vas-tu, vite comme ça? »
[Vidéodescription]
L'oratrice entre la citation dans un champ de texte.
[Oratrice]
Je peux maintenant envoyer un message indiquant que quelque chose a été dit. Dans l'onglet jaune, je choisis l'enveloppe fermée. Cela envoie un message à la programmation en entier.
Je vais maintenant dans le code de l'hippocampe en sélectionnant mon image à la gauche de l'écran. Je confirme que c'est bien la page de programmation de l'hippocampe en regardant la silhouette en bas et à la gauche de l'écran.
Je vais maintenant insérer le bloc d'enveloppe ouverte. Je m'assure que les enveloppes sont de la même couleur pour que cette séquence de code soit une réponse au message envoyé.Cela commence une nouvelle chaîne séquentielle. Cette séquence d'événements ne débutera pas tant que le message ne sera pas envoyé par le poisson jaune. J'ajoute le bloc de parole dans l'onglet mauve et je modifie le texte : « Je suis en retard à l'école. »
Je veux par la suite que l'hippocampe poursuive son déplacement. J'ajoute donc la même suite du mouvement qu'au début, vers la droite de deux, vers le haut d'un, vers la droite de deux, vers le bas d'un. J'appuie sur le drapeau vert afin d'exécuter mon code.
[Vidéodescription]
À droite de l'écran, le poisson jaune se déplace légèrement vers la gauche. À gauche de l'écran, l'hippocampe se déplace vers la droite et s'arrête sous le poisson. Une bulle de texte apparaît au-dessus de ce dernier. Le poisson dit : « Salut. Où vas-tu, vite comme ça? » Une bulle de texte apparaît au-dessus de l'hippocampe. L'hippocampe lui répond : « « Je suis en retard à l'école. »
[Oratrice]
Je suis satisfaite de mon code. J'ai intégré des événements séquentiels simultanés et répétitifs.
[Fin de la vidéodescription]