Les fonctions en programmation

Sous-programmes de type fonction

FONCTION est un mot qui recouvre plusieurs concepts. En classe de seconde, et plus particulièrement dans un même cours (en l’occurrence celui de maths), les élèves en étudient deux. Comble de la confusion ? Pas vraiment. Les fonctions définies en algorithmique ont tout de même un lien avec les fonctions mathématiques

fonctions

 

Généralités

Avant de s’attarder sur la programmation, rappelons brièvement ce qu’est une fonction numérique. C’est une application qui, sur son ensemble de définition, associe à tout nombre une image et une seule.

En principe, un élève de seconde connaît quelques rudiments d’Excel. Profitons-en pour illustrer le propos à partir de cet outil. Un tableur propose un certain nombre de fonctions, qui s’écrivent dans la bien nommée barre de fonctions. Par exemple, SOMME associe à une plage de valeurs une et une seule « image », c’est-à-dire la somme de tous les nombres contenus dans la plage sélectionnée. Ici, on ne parle pas d’ensemble de définition mais si dans votre sélection se trouvent des caractères alphabétiques au lieu de nombres, vous aurez droit à un message d’erreur. Vous décelez des similitudes ? Très bien.

Les fonctions d’Excel sont déjà programmées. Les équipes de Microsoft ont fait le job. Mais vous aussi, vous pouvez en programmer. C’est possible avec Excel si vous connaissez le Visual Basic mais ce n'est pas le langage privilégié dans le secondaire. On utilise plutôt Python (voir la page sur les fonctions avec Python) ou tout simplement le code de la calculatrice.

 

Définition

Une fonction est un sous-programme ou bloc d’instructions écrit pour réaliser une tâche particulière. Elle a obligatoirement un nom.

Habituellement, on ne parle pas de variables mais d’arguments de la fonction. Une fonction peut d’ailleurs n’avoir aucun argument.

 

Intérêts

Une même fonction peut être incluse dans plusieurs programmes, ou plusieurs fois dans un même programme.

De plus, le fait de créer des blocs rend la lecture des algorithmes beaucoup plus aisée.

Mais généralement, dans le secondaire, les fonctions tiennent tout simplement lieu de programmes. C’est-à-dire qu’une fois maîtrisée la structuration d’un algorithme avec la calculatrice (entrées, traitement, sorties) on s’en affranchit avec des logiciels qui autorisent des programmes plus concis, davantage centrés sur le traitement. En effet, l’entrée est simplement l’affectation de valeurs aux paramètres (arguments) et le traitement fait partie de l’étape de sortie.

 

En langage naturel

Dans le secondaire, on utilise le langage « naturel », c’est-à-dire une façon simple et intuitive de comprendre et de coder un algorithme. Bien sûr, ce type de formulation est uniquement pédagogique car la pratique d’un outil informatique exige de programmer dans un code reconnu.

En langage naturel, on peut utiliser l’instruction retourne pour renvoyer le résultat d’une fonction. Cette instruction, cohérente avec les langages de Python et Xcas, peut être contournée mais nous l’emploierons pour être plus clair.

 

Exemple 1

Soit la fonction affine \(f\) définie sur \(\mathbb{R}\) par \(f(x) = 2x+7.\) On souhaite écrire une fonction qui permette d’entrer une valeur \(x\) et d’obtenir \(f(x).\)

fonction f(x)
retourne (x × 2 + 7)

Remarque : il n’y a qu’un argument (x) et une seule ligne suffit pour le traitement et pour la sortie.

 

Exemple 2 (avec condition)

Soit \(f(x) = 2x + 7\) mais seulement si \(x < 0.\) Sinon, \(f(x) = 3x + 7.\)

fonction f(x)
Si x < 0
   alors retourne (x × 2 + 7)
   sinon retourne (x × 3 + 7)
fin si

Exemple 3 (avec deux arguments)

Écrivons l'expression d'une fonction destinée à calculer le volume d’un cylindre.

Rappel de la formule : \(V = \pi\,r^2\,h\)

La fonction a donc deux arguments, le rayon \(r\) et la hauteur \(h.\)

fonction cylindre(r, h)
retourne (π × × h)

Programmons à présent cette fonction avec Scilab. Ce logiciel a toutes les qualités : il est gratuit, multi-plateformes, ne nécessite pas l’emploi d’un éditeur externe, et surtout il permet tout autant d’introduire l’algorithmique aux débutants que d’effectuer des calculs de haute volée. Comme Excel, il comporte des fonctions déjà programmées.

La fonction a été écrite dans l’éditeur puis collée dans la fenêtre de console qui est reproduite ci-dessous.

Elle a ensuite été lancée avec un exemple (rayon de 1 et hauteur de 2). Le résultat apparaît en dernière ligne (\(2π\)).

programme

Comme vous le constatez au passage, Scilab n'exige pas l’emploi d’une commande retourne et le nombre \(π\) s’écrit %pi.

 

prisonnier