C3.2 Lire et modifier des codes donnés, y compris des codes comprenant des instructions conditionnelles et d’autres structures de contrôle, et décrire l’incidence de ces changements sur les résultats et l’efficacité.

Habileté : lire un code


La lecture d'un code consiste à interpréter les blocs ou les commandes afin d’en déduire le sens du code. Cela aide l’élève à faire des prédictions quant au comportement du code. La lecture du code est aussi une partie importante du débogage, soit l’identification et la correction d’erreurs dans le code, car, en lisant le code, il est possible pour l’élève de déterminer la ou les raisons pour lesquelles celui-ci ne fonctionne pas. À noter, ici, que cette habileté ne correspond pas à la lecture du code par l’ordinateur, mais plutôt à la lecture du code par l’élève pour en faire la vérification.

En lisant du code, elle ou il devra remarquer, entre autres, des répétitions de commandes ou de blocs qui pourraient être plus efficacement exprimés sous forme de boucle. Elle ou il pourrait, par exemple, lire ce code afin de relever les éléments répétitifs qui s’y trouvent :

Image Blocs de codage attachés les uns avec les autres. Bloc d’évènement : départ drapeau vert. Bloc de mouvement : aller à « x » moins 200, « y » moins 150. Bloc de variable : mettre « rangée » à zéro. Bloc d’apparence : montrer. Blocs de contrôle : répéter 4 fois. Bloc de contrôle : créer un clone de moi-même. Bloc de mouvement : avancer de 70 pas. Bloc de contrôle : créer un clone de moi-même. Bloc de mouvement : avancer de 70 pas. Bloc de contrôle : créer un clone de moi-même. Bloc de mouvement : avancer de 70 pas. Bloc de contrôle : créer un clone de moi-même. Bloc de mouvement : avancer de 70 pas. Bloc de contrôle : créer un clone de moi-même. Bloc de mouvement : avancer de 70 pas. Bloc de contrôle : créer un clone de moi-même. Bloc de mouvement : avancer de 70 pas. Bloc de mouvement : aller à « x » moins 200, « y » moins 150. Bloc de variable : ajouter un à « rangée ». Bloc de mouvement : ajouter 30 multiplié « rangée » à « y ». Répéter. Bloc d’apparence : cacher.

À noter aussi qu’il existe plusieurs façons de rendre un code plus efficace (l’utilisation de variables pour représenter des valeurs qui sont reprises à divers endroits dans le code, par exemple).

Habileté : modifier un code


La culture de la programmation informatique en est une de partage, et plusieurs logiciels sont créés en se basant sur du code existant. La modification d’un code fait en sorte que l’élève peut partir d’une séquence de code existante et fonctionnelle afin de bâtir quelque chose de nouveau. La modification d’un code peut aussi avoir comme but de le simplifier ou de montrer qu’il y a plus d’une façon de représenter une même situation avec du code. On pourrait aussi parler d’efficacité qui, dans le contexte du codage, signifie l’utilisation d’un minimum de blocs ou de commandes pour atteindre l’objectif désiré. Le cas échéant, l’élève peut aussi modifier du code erroné afin de le rendre fonctionnel, un processus nommé débogage.

Par exemple, dans le code ci-dessus, on voit des éléments qui pourraient être mieux représentés en utilisant une boucle. L’élève pourrait d’abord modifier le code afin d’obtenir quelque chose qui ressemble plus à ceci :

Image Blocs de codage attachés les uns avec les autres. Bloc d’évènement : départ drapeau vert. Bloc de mouvement : aller à « x » moins 200, « y » moins 150. Bloc de variable : mettre « rangée » à zéro. Bloc d’apparence : montrer. 3 blocs de contrôle : répéter 4 fois. Répéter 6 fois. Créer un clone de moi-même. Bloc de mouvement : avancer de 70 pages. Répéter. Bloc de mouvement : aller à « x » moins 200, « y » moins 150. Bloc de variable : ajouter un à « rangée ». Bloc de mouvement : ajouter « 30 multiplié rangée » à « y ». Répéter. Bloc d’apparence : cacher.

Habileté : décrire l’incidence des changements sur le code


Autant l’essai et l’erreur occupent une place importante dans la création de séquences de code, autant il est important que l’élève puisse justifier ses choix de changements dans un code existant en prédisant l’effet des changements sur le comportement du code. Cela est aussi important lorsqu’on modifie un code pour le rendre efficace, car il est possible d’introduire des changements qui ont une incidence non voulue ou négative sur le résultat final.

Par exemple, l’élève pourrait utiliser ses connaissances sur les nombres entiers pour d’écrire l’incidence d’un changement de signe (+/) sur les déplacements dans le code suivant :

Image Blocs de codage attachés les uns avec les autres. Bloc d’évènement : départ drapeau vert. Bloc de mouvement : aller à « x » zéro, « y » zéro. Bloc de contrôle : attendre une seconde. Bloc de mouvement : ajouter moins 3, multiplié par 30 à « x ». Bloc de mouvement : ajouter 3 multiplié par 30, à « y ». Bloc de contrôle : attendre une seconde. Bloc de mouvement : ajouter dix multiplié par, 30 à « x ». Bloc de mouvement : ajouter un multiplié par, 30 à « y » Dans cette vidéo, l’élève lit et modifie des codes donnés comprenant des instructions conditionnelles et d’autres structures de contrôle afin de les rendre plus efficaces.
Ouvrir description de la video Description de la vidéo

[Vidéodescription]

L'oratrice montre son écran d'ordinateur qui affiche une séquence de codage par blocs. Au fil de ses descriptions, elle effectue les opérations à l'ordinateur, et le tout s'affiche à l'écran.

[Oratrice]

Voici un code créé par un élève de sixième année. Je remarque des mouvements vers l'avant, des mouvements de rotation et des réponses possibles correspondant à des figures planes. Je prédis que ce code est pour dessiner des figures planes. J'appuie sur le drapeau vert et j'observe ce qui se passe. Je pense qu'il y a une façon plus efficace d'écrire ce code en imbriquant des boucles dans les structures de contrôle conditionnelles.

[Vidéodescription]

Un encadré textuel apparaît. Il est écrit : « Événements imbriqués (codage) : Structures de contrôle placées à l'intérieur d'autres structures de contrôle. Par exemple, des boucles survenant à l'intérieur de boucles ou une instruction conditionnelle en cours d'évaluation dans une boucle. »

[Oratrice]

Le début du code qui est la préparation au reste de la programmation est déjà efficace. Je recrée donc la même chose en commençant par insérer un bloc d'évènements lorsque le drapeau vert est cliqué. Je dois ensuite ajouter la catégorie du stylo en appuyant sur le petit « Plus » en bas, à la gauche. Par la suite, j'ajoute un bloc d'apparence « Montrer » sous mon bloc d'évènement pour faire réapparaitre mon personnage au début du code. Je peux ensuite ajouter le bloc de stylo efface-tout. Ce qui efface la figure plane qui était dans l'exécution précédente.

Dans la catégorie des blocs de mouvement, je choisis le bloc « aller à XY », ce qui définit ma position de départ. Puisque le logiciel fonctionne avec un plan cartésien à quatre cadrans, je sais que les coordonnées du milieu sont (0;0). J'insère aussi un bloc d'orientation puisque le personnage doit faire plusieurs rotations afin de dessiner les figures planes. Je veux qu'il commence toujours à 90 degrés comme il est présentement. Je peux maintenant insérer le bloc « Mettre en position d'écriture » dans la catégorie « Stylo ». Ce qui prépare mon personnage à dessiner la forme.

Je dois ensuite insérer un capteur. Dans ce cas, je vais utiliser la question. Je veux que le personnage me demande : « Quelle figure aimerais-tu dessiner? » Je me lance maintenant dans les structures de contrôle conditionnelles commençant avec le triangle.

[Vidéodescription]

Un encadré textuel apparaît. Il est écrit : « Structure de contrôle (codage) : « Ligne ou bloc de code qui influence l'ordre dans lequel l'autre code est exécuté. Les structures de contrôle ont un impact sur le flux du programme et comprennent le séquencement des lignes de code, la répétition des lignes de code ou la sélection pour exécuter ou non des lignes de code spécifiques. La séquence, la sélection (instructions conditionnelles) et la répétition (boucles) sont toutes des structures de contrôle.

[Oratrice]

J'insère mon bloc conditionnel : « Si, alors ». Dans la catégorie « Opération », je viens choisir un bloc de comparaison d'égalité. Je veux comparer la réponse à ma question posée plus tôt à une réponse possible. Je dois aller dans la catégorie « Capteur » et choisir le bloc « Réponse » pour l'insérer comme le premier terme de ma comparaison. Je vais ensuite définir le deuxième terme comme la réponse désirée qui dans ce cas est : « Triangle ».

Je remarque qu'il y a beaucoup de répétitions dans les six prochains blocs. Je vais donc simplifier le code en utilisant une boucle. J'imbrique une boucle dans la structure de contrôle. Je répète les mouvements du code original : « Avance de 80 pas » et « Tourne vers la gauche de 120 degrés ». Le « 80 pas » représente la longueur de mes côtés et la rotation de 120 degrés représente l'angle extérieur du triangle par rapport à l'axe des X.

[Vidéodescription]

Le quadrant de droite d'un plan cartésien apparaît à droite du code. Il présente un triangle équilatéral dont le sommet en bas à gauche part de 0. Une accolade à sa base indique 80 pas. Un demi-cercle indique que l'angle du sommet en bas à droite est de 60 degrés, et que l'angle formé de l'extérieur de ce sommet et de l'axe horizontal est de 120 degrés.

[Oratrice]

Je dois maintenant modifier le nombre de répétitions à trois puisqu'un triangle équilatéral a trois côtés congrus. Tout comme dans le code original, j'ajoute mon bloc caché à l'intérieur de ma structure conditionnelle, mais à l'extérieur de ma boucle pour que mon personnage ne disparaisse qu'une fois ma forme complétée. Je répète le même processus pour ma condition : « si ma réponse égale carré ». J'insère une structure de contrôle conditionnelle, un bloc d'opération de comparaison. Le premier terme est encore une fois ma bulle réponse, mais mon deuxième terme est carré.

J'imbrique ma structure de contrôle de répétition, je change le nombre de répétitions à quatre puisqu'un carré a quatre côtés congrus. J'insère les mouvements nécessaires : « Avance de 80 pas » et « Tourne vers la gauche de 90 degrés » qui, encore une fois, est l'angle extérieur du carré à partir de l'axe des X. Je termine avec le bloc d'apparence cachée pour faire disparaître le personnage. Je continue avec la prochaine condition qui est : « Si ma réponse est égale à pentagone ». Comme pour les deux autres situations, je commence avec ma structure de contrôle conditionnelle. J'insère mon bloc de comparaison avec ma bulle réponse comme premier terme et pentagone comme deuxième dans mon égalité.

J'imbrique ma structure de contrôle de répétition dans ma condition, je change le nombre de répétitions à cinq fois, puisque le pentagone régulier a cinq côtés congrus. J'insère les blocs de mouvement : « Avance de 80 pas et tourne à gauche de 72 degrés ». Un pentagone régulier a des angles intérieurs de 108 degrés. Je fais donc le calcul 180 - 108 qui me donne 72 degrés. J'ajoute mon bloc d'apparence « Cache » à la fin pour cacher mon personnage. Finalement, je répète le même processus pour l'hexagone régulier.

Structure de contrôle conditionnelle, bloc de comparaison, terme 1 étant la réponse et terme 2 étant hexagone. J'imbrique la structure de contrôle de répétition, je modifie le nombre de répétitions à six puisque l'hexagone régulier à six côtés congrus. J'insère mes blocs de mouvement : « Avance de 80 pas » ainsi que « Tourne à gauche de 60 degrés ». Pour trouver l'angle extérieur, je fais le même calcul que pour les autres figures. Je peux maintenant ajouter l'arrière-plan du plan cartésien. J'exécute mon code en essayant toutes les réponses possibles.

[Vidéodescription]

Un plan quadrillé apparaît à droite du code.

[Oratrice]

En comparant les deux codes, je remarque que le mien est plus court et plus efficace. Pour ce faire, j'ai imbriqué une structure de contrôle de répétition à l'intérieur de ma structure de contrôle conditionnelle.

[Fin de la vidéodescription]