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 :
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
:
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
et le bloc d’instructions quasiment identique à celui utilisé avec entrées-sorties :
Toutefois, l’analogie entre ces deux constructions a ses limites :
- dans les deux cas, les variables
a
etb
sont des variables locales, internes à la fonction mais la variabled
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 globaled
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.
Page suivante : Réutilisation d’une fonction