Canopée Toutes les notions de troisième

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.

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.

Trois appels de la fonction prix : prix de 2 renvoie 13, prix de 7 renvoie 38, prix de 10 renvoie 53.
AppelNombre renvoyé
prix de 213
prix de 738
prix de 1053

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.

Tableau de trace de l’appel calcul de 5 : n vaut 5 ; après r prend la valeur n plus 7, r vaut 12 ; après r prend la valeur r fois 3, r vaut 36 ; après r prend la valeur r moins 4, r vaut 32. La fonction renvoie 32.
Ligne exécutéeContenu après la ligne
appel calcul(5)n vaut 5
r prend la valeur n + 7r vaut 12
r prend la valeur r × 3r vaut 36
r prend la valeur r − 4r 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.

Deux colonnes. Ligne par ligne : 5 plus 7 égale 12, puis 12 fois 3 égale 36, puis 36 moins 4 égale 32. Recollé en un calcul : 5 plus 7 fois 3 moins 4, qui donne 22.
Ligne par ligneRecollé en un calcul
5 plus 7 égale 125 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.

Tableau de trace de l’appel mystere de 13 : n vaut 13 ; après r prend la valeur n plus 9, r vaut 22 ; après r prend la valeur r fois 6, r vaut 132. La fonction renvoie 132.
Ligne exécutéeContenu après la ligne
appel mystere(13)n vaut 13
r prend la valeur n + 9r vaut 22
r prend la valeur r × 6r 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.

Tableau de trace de l’appel calcul de 14 : n vaut 14 ; après r prend la valeur n plus 4, r vaut 18 ; après r prend la valeur r fois 2, r vaut 36 ; après r prend la valeur r moins 9, r vaut 27. La fonction renvoie 27.
Ligne exécutéeContenu après la ligne
appel calcul(14)n vaut 14
r prend la valeur n + 4r vaut 18
r prend la valeur r × 2r vaut 36
r prend la valeur r − 9r 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.