C3.2 Lire et modifier des codes donnés, y compris des codes comprenant des événements influencés par un dénombrement prédéfini ou un sous-programme et d’autres structures de contrôle, et décrire l’incidence de ces changements sur les résultats et l’efficacité.

Habileté : lire du code


La lecture du code consiste à interpréter les blocs ou les commandes afin d’en déduire le sens. Cela permet à l’élève de faire des prédictions liées 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 qu’il n’est pas question ici de la lecture du code par l’ordinateur, mais plutôt de la lecture du code par l’élève qui le vérifie.

La lecture d’un code faisant appel à des sous-programmes nécessite une certaine pratique et une compréhension de la structure générale du code en question. Par exemple, en lisant la séquence qui suit :

image Blocs de codage attachés les uns aux autres. Bloc d’évènement : quand drapeau vert cliqué. Bloc de variable de ma liste : supprimer tous les éléments de la liste « liste de la taille de souliers. » Mes blocs : recueil de données. Mes blocs : trier la liste en ordre croissant.

l’élève pourra déduire que le code supprimera les éléments d’une liste, fera un recueil de données et triera les données en ordre croissant. Cependant, une grande quantité d’information est omise dans ce code, car les blocs en rose font appel à des sous-programmes. L’élève doit d’abord arrêter la lecture du code principal pour consulter le sous-programme en question afin de comprendre le sens du code.

Habileté : modifier du code


La culture de la programmation informatique est une culture de partage, et plusieurs logiciels sont créés en se basant sur du code existant. La modification d’un code permet d’abord à l’élève de partir d’une séquence de code existante et fonctionnelle pour bâtir quelque chose de nouveau. La modification d’un code peut aussi avoir comme but de le simplifier, ou de démontrer qu’il y a plus d’une façon de représenter une même situation avec du code. On pourrait aussi parler ici 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, il est possible que l’élève cherche à mettre une série de données en ordre croissant, mais ne connaisse pas la façon de procéder. L’élève effectue une recherche sur Internet et trouve un code qui comprend des éléments de réponse à son problème. L’élève peut prendre ce code et le modifier afin de répondre à ses besoins. Certaines plateformes de codage offrent même la possibilité de prendre une copie du code pour faire ce qu’on appelle un remix, avec un remerciement automatique vers la personne qui a programmé le code original.

Bouton « remix » : merci à « ettorac » pour le projet original « septième tendances centrales ».

Dans le logiciel de codage Scratch, le bouton Remix permet de créer un nouveau projet avec du code existant assemblé par quelqu'un d'autre. Lorsqu'on utilise cette option, une mention est automatiquement attribuée à l'utilisatrice ou l'utilisateur original du code.

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 à un code existant en faisant des prédictions relativement à 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, lorsque l’élève tente de rendre un code plus efficace avec des sous-programmes, une erreur peut facilement apparaître à plusieurs endroits. Dans l’exemple du code qui suit, l’élève a choisi de créer un bloc pour définir sa séquence de calcul de la moyenne.

image Blocs de codage attachés les uns aux les autres. Bloc de variable : mettre « numéro de la liste » à un. Bloc de variable : mettre « somme » à zéro. Bloc de contrôle : répéter « longueur de « liste de la taille de souliers » à « somme ». » Bloc de variable : ajouter « élément « numéro de la liste » de « liste de la taille de souliers » à « somme ». » Bloc de variable : ajouter un à « numéro de la liste ». Répéter. Bloc d’apparence : dire « regrouper « la moyenne de la taille de souliers de la classe est » et « somme » divisé par « longueur de « liste de la taille de souliers ». »

Il serait d’abord possible de poser des questions à l’élève sur ses choix dans la définition de ce bloc. Par exemple :

  • Comment ton programme changerait-il si le bloc « dire » était dans le code principal au lieu du sous-programme?
  • Est-ce mieux de mettre les variables à 0 au début du code principal ou au début du sous-programme? Comment ce changement changerait-il le comportement de ton programme?
  • Quel est l’avantage d’isoler le code pour la moyenne dans un sous-programme au lieu de le placer dans le code principal?

À noter que les réponses à toutes ces questions varieront considérablement d’élève en élève étant donné la diversité de façons de représenter une même situation avec du code.