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, c'est souvent là que ça se joue.

La même idée en maths et dans un programme

En maths, tu écris f de 3 égale 5: on donne 3 à la fonction f, elle rend 5.

Dans un programme, une fonction fait le même travail. Elle reçoit une valeur, elle calcule, elle renvoie une valeur.

L’appel calcul de 3 pose donc la même question que f de 3: quel nombre sort quand on donne 3 ?

Le calcul écrit à l’intérieur de la fonction ne regarde personne. Celui qui appelle donne un nombre et reçoit un nombre. C’est tout ce qu’il voit.

Écrire une fois, appeler autant de fois qu’on veut

Voici la vraie raison d’écrire une fonction. Le même calcul appliqué à dix valeurs se recopie zéro fois.

Tu écris le calcul une seule fois, sous un nom. Ensuite tu appelles ce nom avec la valeur que tu veux, aussi souvent que tu veux.

Une fonction prix qui calcule un tarif se rappelle avec prix de 2, puis prix de 7, puis prix de 50. Le calcul, lui, n’a été tapé qu’une seule fois.

Le jour où le tarif change, tu modifies ces lignes-là, et les trois appels suivent.

Suivre un appel, ligne par ligne

Pour trouver ce que renvoie un appel, remplace le paramètre par la valeur donnée. Puis lis les lignes du corps dans l’ordre, une par une.

La ligne « renvoyer » marque la sortie. C’est la valeur qui part vers l’endroit d’où l’appel a été fait.

Note après chaque ligne ce que contient la variable. Personne ne suit trois mises à jour de tête sans se tromper une fois sur deux.

Voici où presque tout le monde se trompe

Deux nombres traversent une fonction : celui qu’on lui donne, celui qu’elle renvoie. Beaucoup rendent le premier alors que la question porte sur le second.

C’est la confusion entre l’image et l’antécédent, déjà rencontrée sur f de x, qui revient ici sous une autre écriture.

Le second glissement porte sur l’ordre. On recolle les lignes du corps en une seule expression, et on applique les priorités de calcul.

Les priorités valent à l’intérieur d’une ligne. D’une ligne à la suivante, c’est l’ordre d’écriture qui commande, et lui seul.

Avant de répondre, dis à voix haute quelle valeur tu as donnée et quelle valeur tu cherches.

À retenir

  • Une fonction reçoit une valeur et en renvoie une autre. En maths comme dans un programme.
  • calcul(3) pose la même question que f(3) : quel nombre sort quand on donne 3 ?
  • Les lignes du corps s’exécutent dans l’ordre écrit, une par une, jusqu’à renvoyer.

Un exercice, tout de suite

Cherche d'abord, ouvre la correction ensuite. Se tromper ici ne coûte rien.

Exercice 1

Voici un programme. La fonction calcul est écrite une fois, puis appelée.

fonction calcul(n)

r prend la valeur n + 11

r prend la valeur r × 4

r prend la valeur r - 18

renvoyer r

fin de la fonction

resultat prend la valeur calcul(13)

Quelle valeur contient resultat à la fin du programme ?

Voir la correction

L’appel donne 13 à la fonction. Le paramètre n contient donc 13.

Première ligne : 13 plus 11 égale 24, et r contient 24.

Deuxième ligne : on multiplie le contenu actuel de r. 24 fois 4 égale 96, et r contient 96.

Troisième ligne : 96 moins 18 égale 78, et r contient 78.

La ligne renvoyer envoie ce contenu vers l’appel. resultat contient donc 78.

En maths, le même travail s’écrit f de 13 égale 78.

Vous êtes parent ? Cette page dit ce qu'il faut savoir. Elle ne dit pas si votre enfant le sait. 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.