Algorithmique en seconde : aborder la notion de fonction publié le 27/12/2019  - mis à jour le 03/01/2020

De Scratch vers Python

Approche fonctionnelle : le bloc de fonction de Scratch et la fonction Python

Les notions d’entrées-sorties (fonctions demander et attendre-dire en Scratch et input-print en Python) évoquées plus haut ne relèvent pas de la pensée algorithmique et l’accent mis par le programme sur la notion de fonction permet de s’en libérer complètement (cf document d’accompagnement "Algorithmique et programmation" (mai 2017).

Les blocs de fonctions de Scratch permettent de construire des blocs personnalisés d’instructions, avec paramètres d’entrée :

Création d'un bloc personnalisé sous Scratch

Copie d’écran illustrant la création d’un bloc personnalisé sous Scratch

Ainsi, les élèves ont pu construire un bloc de fonction distance qui fait le calcul de la distance et stocke ce calcul dans la variable d :

Le bloc de fonction distance avec Scracth

Copie d’écran du bloc de fonction distance avec Scracth

L’appel de la fonction est réalisé par l’insertion d’un bloc sous un bloc chapeau et les paramètres d’entrée sont spécifiés directement dans le script avant le clic sur le drapeau vert.

Avec Python, ils ont pu mesurer l’analogie de la construction avec l’en-tête def distance(a, b): qui joue le même rôle que le bloc En-tête du bloc fonction distance et le bloc d’instructions quasiment identique à celui utilisé avec entrées-sorties :

Correspondance entre code Scratch et code Python pour la fonction distance

Diaporama Genially illustrant la correspondance entre les deux langages

Toutefois, l’analogie entre ces deux constructions a ses limites :

  • dans les deux cas, les variables a et b sont des variables locales, internes à la fonction mais la variable d est une variable globale en Scratch alors qu’elle reste interne à la fonction en Python. La possibilité de restreindre la variable à un lutin ne l’empêche pas d’être modifiée au cours d’un script extérieur à la fonction, ce qui peut poser un problème d’intégrité de la variable.
  • En Scratch, il n’existe pas de mot clé return qui permet de renvoyer la valeur de la fonction. Celle-ci est stockée dans la variable globale d avec les risques évoqués plus haut : elle n’est pas "protégée" comme le serait le résultat d’un appel de fonction avec Python.
La fonction distance en langage naturel et son implémentation en Python et en Scratch

Animation illustrant la traduction de la fonction distance en Python et en Scratch

Page suivante : Réutilisation d’une fonction