SE CONNECTER
1,2,3... codez ! | Le site de la Fondation La main à la pâte
Module 123 Codez | Programmer | Informatics and Digital Creation

Projet « Cryptographie » – Séance 9 Programmer le chiffrement de César (2)


1, 2, 3, codez ! - Activités cycle 4 - Projet « Cryptographie » - Séance 9 : Programmer le chiffrement de César (2/4)

Discipline dominante

Mathématiques

Résumé

Les élèves modifient leur programme précédent pour introduire une « fonction » (bloc personnalisé).

Notions

« Bonnes habitudes de programmation » :

  • Lorsqu’un même bloc d’instructions doit être utilisé plusieurs fois dans un programme, il est judicieux de l’intégrer dans une fonction..

Matériel

Pour chaque binôme

  •  Un ordinateur possédant une connexion Internet (pour utiliser la version en ligne de Scratch) ou ayant Scratch préinstallé
  •  (facultatif) photocopie de la Fiche 11

Pour la classe

  •  Un vidéoprojecteur, utile lors des mises en commun
  • Photocopie de la Fiche 12

La classe reprend le fil conducteur établi à la Séance 8. En particulier, l’enseignant rappelle qu’il serait préférable de mettre le programme créé précédemment dans une fonction, et d’écrire un programme qui permet de tester cette fonction. Scratch permet de créer ses propres fonctions (dans l’onglet violet « ajouter blocs », commande « créer un bloc »).
 

Note scientifique
Attention : Scratch souffre d’une limitation importante : les fonctions ne peuvent pas retourner de valeur. Si l’on souhaite qu’une fonction renvoie un résultat, il faut avoir créé une variable ad hoc et faire en sorte que la fonction modifie cette valeur. En informatique, de tels sous-programmes (sans valeur de sortie) sont plutôt appelés des « procédures » : nous employons le mot « fonction » (qui est un abus de langage) par souci de cohérence avec les programmes scolaires.

Étape 3 : créer une fonction (1/2) (15 minutes)

Le professeur propose aux élèves de commencer par des petits exercices leur permettant de se familiariser avec la notion de « fonction », et distribue pour cela la Fiche 12.
Nous conseillons d’organiser une mise en commun après chacun des exercices afin de s’assurer que cette nouvelle notion soit bien comprise par les élèves, tout comme la manière de l’implémenter dans Scratch.

Solution des exercices :

 Programme 1 :

  • Ce programme dessine un carré rouge de 100 pixels de coté

 Programme 2 :

Ce programme réalise exactement la même tâche, mais en utilisant une « fonction » (un bloc personnalisé, créé par l’utilisateur).

  •  Ce bloc est défini par l’utilisateur en cliquant sur  « créer un bloc » (onglet violet « Ajouter blocs ». Une fois défini, il peut être appelé par le « programme principal » (déclenché par le drapeau vert).
  •  Pour vérifier que ces 2 premiers programmes font bien la même chose, il peut être utile de repartir d’un écran vierge entre chaque exécution (commande « effacer tout », dans l’onglet vert « Stylo »).
  •  Pour l’instant, l’utilité de passer par ce bloc personnalisé ne saute pas aux yeux !

 Programme 3 :

  •  Ce programme dessine 3 carrés (rouge, vert, bleu), de même dimension, et décalés de 15 degrés.
  •  Ici, on commence à comprendre l’intérêt d’avoir défini un bloc personnalisé : cela évite d’avoir à répéter 3 fois la même suite d’instructions.

 Programme 4 :

  •  Ce programme dessine 3 carrés (rouge, vert, bleu), mais cette fois-ci de dimensions différentes.
  •  Pour faire cela, il faut modifier les options du bloc « dessine_carré » : cliquer avec le bouton droit sur son titre, puis « éditer », cocher « options », et « ajouter une entrée nombre ».
  •  Désormais, ce bloc accepte un « argument » d’entrée. Cette valeur correspond ici à la taille souhaitée du carré. Le programme principal appelle la même fonction 3 fois, en changeant simplement la valeur de cet argument, ce qui a pour effet de dessiner 3 carrés de tailles différentes.

 Programme 5 :

  •  Ce programme demande à l’utilisateur d’entrer une longueur, et affiche le périmètre du carré dont le coté vaut cette longueur.
  •  Note : puisqu’il n’est pas possible, dans Scratch, qu’un bloc personnalisé puisse retourner une valeur (il ne s’agit pas d’une « fonction » à proprement parler, mais d’une « procédure »), nous sommes obligés d’utiliser une astuce : on crée une variable dédiée. Cette variable est manipulée dans la fonction, et peut être ensuite utilisée dans le programme principal.

Notes scientifiques

  •  Pour bien comprendre que la variable créée ne sert qu’à renvoyer le résultat de la « fonction », il est utile de lui donner un nom très proche (mais pas identique) du nom de la fonction. Ainsi, à la lecture du programme, le lien entre les deux devient évident.
  •  Lorsque l’on crée une fonction (ou « bloc »), on peut donner autant d’arguments qu’on le souhaite, et spécifier leur type (nombre, texte, booléen).

Étape 4 : créer une fonction (2/2) (15 minutes)

Les élèves ayant désormais compris le fonctionnement (et l’intérêt) des blocs personnalisés dans Scratch, ils peuvent transformer leur programme créé à la séance précédente pour introduire une fonction, par exemple appelée « Lettre_de_rang ». La variable associée à cette fonction est nommée « Var_lettre_de_rang ».


NB : l’ajout de commentaires est traité en étape 11.

Les élèves enregistrent leur programme.

Bilan intermédiaire

La classe établit un bilan d’étape :

  •  le programme permet de trouver quelle lettre se situe à un rang donné dans l’alphabet ;
  •  Un nouveau concept-clé de la programmation a été vu : la fonction.