Fonctions dans un programme
Écrire une fonction dans un programme, et voir la fonction mathématique derrière.
Avant celle-ci
Cette notion s'appuie sur 2 autres, parfois d'un niveau plus bas. Si ça coince ici, la cause est souvent une notion d'avant.
- Boucles imbriquées (3e)
- Notion de fonction (3e)
La même machine en maths et dans un programme
En maths, f de 3 égale 5 veut dire : on donne 3 à la fonction f, elle rend 5.
Dans un programme, c’est la même machine. L’appel calcul de 3 donne 3 à la fonction calcul. Elle exécute ses lignes, puis renvoie un nombre.
Celui qui appelle ne voit pas le calcul : il donne un nombre, il en reçoit un.
Écrire une fois, appeler souvent
Une fonction évite de recopier un calcul. On l’écrit une fois, sous un nom, puis on l’appelle autant de fois qu’on veut.
| Appel | Nombre renvoyé |
|---|---|
| prix de 2 | 13 |
| prix de 7 | 38 |
| prix de 10 | 53 |
Ici, la fonction prix calcule 5 × n + 3 : 5 euros la place, plus 3 euros de frais.
Si le tarif change, on modifie le calcul à un seul endroit, et les trois appels suivent.
Suivre un appel, ligne par ligne
Voici une fonction calcul : r prend la valeur n + 7, puis r × 3, puis r − 4, et la fonction renvoie r. Pour savoir ce que renvoie calcul(5), remplace n par 5, puis exécute les lignes une par une.
| Ligne exécutée | Contenu après la ligne |
|---|---|
| appel calcul(5) | n vaut 5 |
| r prend la valeur n + 7 | r vaut 12 |
| r prend la valeur r × 3 | r vaut 36 |
| r prend la valeur r − 4 | r vaut 32 |
Chaque ligne part de ce que contient r à ce moment-là. La ligne « renvoyer r » envoie 32 là où la fonction a été appelée.
De tête, trois changements de suite se mélangent vite. Le tableau les garde.
Les lignes ne se recollent pas
Lire les lignes d’une fonction, c’est là que presque tout le monde se trompe : on les recolle en un seul calcul, et la multiplication passe devant.
| Ligne par ligne | Recollé en un calcul |
|---|---|
| 5 plus 7 égale 12 | 5 plus 7 fois 3 moins 4 |
| 12 fois 3 égale 36 | égale 5 plus 21 moins 4 |
| 36 moins 4 égale 32 | égale 22 |
La fonction renvoie 32. Le calcul recollé donne 22 : il multiplie 7 par 3 avant d’avoir ajouté 5.
Les priorités de calcul comptent à l’intérieur d’une ligne. D’une ligne à l’autre, c’est l’ordre d’écriture qui compte.
Donner ou renvoyer : remonter la fonction
Deux nombres passent par une fonction : celui qu’on lui donne et celui qu’elle renvoie. Avant de répondre, dis lequel la question cherche.
Pour trouver le nombre à donner, remonte les lignes de la dernière à la première, en défaisant chacune : on ajoute ce qui était retiré, on divise ce qui était multiplié.
Avec calcul : 32 plus 4 égale 36, puis 36 divisé par 3 égale 12, puis 12 moins 7 égale 5. Il fallait donner 5.
À retenir
- En maths comme dans un programme, une fonction reçoit une valeur et en renvoie une autre.
- calcul(5) pose la même question que f(5) : quel nombre sort quand on donne 5 ?
- Les lignes s’exécutent une par une, dans l’ordre écrit, jusqu’à « renvoyer ».
Deux exercices, tout de suite
Cherche d'abord, ouvre la correction ensuite. Se tromper ici ne coûte rien.
Exercice 1
Voici un programme. La fonction mystere est écrite une fois, puis appelée.
fonction mystere(n)
r prend la valeur n + 9
r prend la valeur r × 6
renvoyer r
fin de la fonction
resultat prend la valeur mystere(13)
Quelle valeur contient resultat à la fin du programme ?
Voir la correction
L’appel donne 13 à la fonction, donc n vaut 13. On exécute ensuite les lignes dans l’ordre.
| Ligne exécutée | Contenu après la ligne |
|---|---|
| appel mystere(13) | n vaut 13 |
| r prend la valeur n + 9 | r vaut 22 |
| r prend la valeur r × 6 | r vaut 132 |
Première ligne : 13 plus 9 égale 22. Deuxième ligne : 22 fois 6 égale 132.
La ligne renvoyer envoie 132 à l’appel : resultat contient 132. En maths, on écrirait f de 13 égale 132.
Exercice 2
Voici un programme. La fonction calcul est écrite une fois, puis appelée.
fonction calcul(n)
r prend la valeur n + 4
r prend la valeur r × 2
r prend la valeur r − 9
renvoyer r
fin de la fonction
resultat prend la valeur calcul(14)
Quelle valeur contient resultat à la fin du programme ?
Voir la correction
L’appel donne 14 à la fonction, donc n vaut 14.
| Ligne exécutée | Contenu après la ligne |
|---|---|
| appel calcul(14) | n vaut 14 |
| r prend la valeur n + 4 | r vaut 18 |
| r prend la valeur r × 2 | r vaut 36 |
| r prend la valeur r − 9 | r vaut 27 |
Première ligne : 14 plus 4 égale 18. Deuxième ligne, on multiplie ce que contient r maintenant : 18 fois 2 égale 36. Troisième ligne : 36 moins 9 égale 27.
La ligne renvoyer envoie ce nombre à l’appel. Donc resultat contient 27. En maths, on écrirait f de 14 égale 27.
Vous êtes parent ? Cette page dit ce qu'il faut savoir. Votre enfant le sait-il ? C'est la question à laquelle Canopée répond dans son atelier : une notion ne compte comme acquise que le jour où l'élève réussit seul, sans indice, et qu'elle tient encore plusieurs jours plus tard. L'atelier ouvre aujourd'hui la sixième ; le parcours de troisième arrivera avec la prépa brevet 2027. Voir comment.
Votre enfant prépare le brevet ? Le diagnostic gratuit le situe en vingt minutes sur trois exercices d'un vrai sujet, sans compte ni adresse e-mail.