L'algorithmique au collège
Les fonctions informatiques
Les algorithmes appris au collège sont assez simples et ne permettent souvent que de réaliser une seule action (déplacer un objet, tracer une figure etc…). Mais les programmes informatiques de la vie courante, eux, sont conçus pour réaliser plusieurs actions différentes !
Les fonctions, souvent étudiées en 3ème, permettent de décomposer un programme suivant les différentes tâches qu’il doit effectuer.
A quoi servent les fonctions ?
Lorsqu’on crée un programme un peu plus élaboré, il est nécessaire de décomposer les tâches à effectuer en plusieurs tâches simples, pour y voir plus clair et structurer le programme.
Par exemple, un logiciel de traitement de texte a de nombreuses fonctionnalités :
- afficher le texte tapé à l’écran,
- mettre du texte en couleur, gras, souligné…
- imprimer le résultat,
- vérifier l’orthographe
Même un moteur de recherche, sur lequel à priori on ne fait qu’une seule chose (des recherches) :
- permet à l’utilisateur de taper du texte,
- effectue la recherche dans une base de données, en filtrant les résultats les moins pertinents,
- affiche les pages de résultats…
A chacune de ces tâches peut correspondre une fonction informatique.
Par définition, en informatique, une fonction est une séquence d’instructions qui réalisent une tâche.
Ainsi, un programmeur peut créer ses propres fonctions, ou (plus souvent) réutiliser les fonctions créées par d’autres programmeurs.
En fait, les suites d’instructions que vos enfants créent depuis leurs débuts en algorithmique sont en quelques sorte des fonctions ! Mais ici, il va être question de réutiliser ces suites d’instructions pour faire d’autres algorithmes encore plus élaborés.
Créer et utiliser une fonction
En programmation par blocs, il existe généralement un bloc permettant de créer une fonction.
Dans Algoblocs
Supposons qu’on ait une suite d’instructions permettant de dessiner une étoile :
|
|
Si on veut en faire une fonction, il suffit d’ajouter un bloc de la rubrique « Fonctions » et d’y placer notre suite d’instructions. On nomme cette fonction comme on veut (ici, « dessiner une étoile »).
Cela crée un bloc « dessiner une étoile » dans la rubrique « Fonctions » qu’on peut réutiliser un peu partout, par exemple pour dessiner 3 étoiles de couleurs différentes.
Dans Scratch
Il faut utiliser la rubrique « Ajouter bloc » et créer un nouveau bloc. Voici un exemple :
Avec Python
Avec un langage, comme Python, on utilise le mot clef def, suivi du nom de la fonction puis des parenthèses (nous verrons leur utilité dans la partie suivante !).
Voici comment on crée une fonction qui affiche la table de 3 :
def tablede3():
n = 1
while n <11 :
print (n * 3)
n = n +1
Les arguments
Dans les exemples que nous avons pris, la fonction fait toujours la même chose. Il est possible de changer son comportement avec les arguments.
Dans algoblocs
Prenons cette fonction dans Algoblocs qui dessine un carré de côté 100 pixels. Nous allons lui permettre de dessiner des carrés de taille différente.
|
|
En cliquant sur l’icône représentant un engrenage, on peut demander que cette fonction prenne un argument en entrée. Nous allons laisser le nom par défaut, « x » :
On se retrouve avec un bloc « x » dans la rubriques « Variables ». Ce bloc contiendra un nombre différent à chaque fois qu’on utilisera la fonction. Nous allons l’utiliser pour déterminer le côté du carré que la fonction va tracer.
Pour plus d’informations sur les variables, consultez cette autre fiche.
Le bloc fonction permet maintenant d’accueillir un nombre, qui permettra de donner une valeur à x :
Ainsi, en utilisant cette fonction avec un nombre différent, on peut dessiner des carrés de tailles différentes :
|
|
Dans Scratch
Dans Scratch, on ajoute des arguments après avoir cliqué sur « Créer un bloc ». Il suffit de faire apparaitre le menu « Options ».
En Python
En Python, on donne le nom des arguments dans les parenthèses qui suivent le nom de la fonction. Voici une fonction qui affiche la table de multiplication d’un nombre appelé x.
def table(x):
n = 1
while n <11 :
print (n * x)
n = n +1
Ainsi, table(4) affichera la table de 4, table(10) affichera la table de 10…