Aller au contenu

Algorithmique · Fiche pratique

Cheatsheet : Définir, appeler et comprendre une fonction

Paramètres, arguments, retour, portée et effets sur les données.

Par · Cours gratuit

Une fonction regroupe un traitement sous un nom. Sa définition décrit ses instructions ; son appel demande de les exécuter. Le résultat retourné est une valeur que l'appelant peut réutiliser : ce n'est pas la même chose qu'un affichage.

Cette fiche présente une fonction à plusieurs entrées, un appel complet puis un exemple d'effet sur des données. Les valeurs de chaque exemple sont fixées pour pouvoir vérifier le résultat à la main.

1. Paramètre, argument, corps et retour

Le paramètre est le nom écrit dans la définition. L'argument est la valeur transmise lors d'un appel. Avec compute_total(250, 3, 100), les trois valeurs deviennent respectivement price, quantity et delivery. L'ordre des arguments positionnels compte.

Le corps contient les instructions. L'appelant est la partie du programme qui demande l'exécution. Un retour termine l'appel et lui fournit le résultat. Une fonction qui affiche un nombre ne fournit pas automatiquement ce nombre comme résultat.

Relier les mots à l’exemple
TermeExempleRôle
Définitioncompute_total(price, quantity, delivery)Annonce la règle et les trois paramètres
Appelcompute_total(250, 3, 100)Fournit les arguments dans cet ordre
Corpsprice × quantity + deliveryCalcule un total en centimes
Retour850Valeur disponible pour l’appelant

2. Une fonction complète et son utilisation

Le contrat reçoit un prix unitaire en centimes, une quantité entière non négative et des frais en centimes. Les montants sont non négatifs. Le résultat est price × quantity + delivery. Cette règle ajoute les frais même lorsque la quantité vaut zéro : ne lui attribuez pas une politique commerciale implicite.

En Python, return fournit directement le résultat. En MATLAB, le nom de sortie est déclaré à gauche du signe égal dans la ligne function ; le corps affecte ce nom. Enregistrez la fonction MATLAB dans compute_total.m, puis le script d'appel dans use_compute_total.m, dans le même dossier.

De l’appel au résultat
MomentValeur connue
Entrée dans l’appelprice = 250 ; quantity = 3 ; delivery = 100
Produitprice × quantity = 750
Ajout des frais750 + 100 = 850
Retourtotal reçoit 850 chez l’appelant

Calculer une commande avec trois arguments

250 centimes × 3 articles + 100 centimes de frais doivent produire 850 centimes.

// example.pseudo
// compute_total
FUNCTION compute_total(price, quantity, delivery)
    RETURN price * quantity + delivery
END FUNCTION
total <- compute_total(250, 3, 100)
PRINT total

Résultat expliqué. L’appelant reçoit 850. Pour compute_total(250, 0, 100), la même règle donne 100, et non zéro.

3. Portée locale, alias et modification

La portée d'un nom est la région où il peut être utilisé. Un nom local à une fonction appartient à son exécution. Mais un nom local peut désigner une donnée partagée : la localité du nom ne protège pas automatiquement le contenu.

Une liste Python est mutable : ses éléments peuvent être remplacés. Après alias = original, les deux noms désignent la même liste, pas deux copies. Dans l'exemple numérique MATLAB, l'appelant conserve la valeur de son vecteur ; le résultat modifié lui est retourné séparément.

La fonction suivante exige au moins un élément. Elle remplace le premier et retourne la suite obtenue. Le pseudo-code annonce la modification logique ; les versions précisent les effets observés chez l'appelant.

Remplacer le premier élément

L’entrée est [1, 2], la nouvelle première valeur est 9. L’effet sur les noms de l’appelant est différent selon le langage.

// example.pseudo
// replace_first
// Requires at least one element.
FUNCTION replace_first(values, replacement)
    values[0] <- replacement
    RETURN values
END FUNCTION

Résultat expliqué. Python affiche trois listes [9, 2] car les noms désignent la même liste. MATLAB conserve [1 2] dans original et alias et donne [9 2] dans updated.

4. Choisir une interface compréhensible

Une interface de fonction précise les données reçues, le résultat et les effets autorisés. Distinguez modifier une donnée existante et réaffecter un nom à une nouvelle valeur. Une réaffectation locale ne remplace pas à elle seule le nom de l'appelant.

Un affichage aide à observer, mais mélange l'usage de l'écran avec le calcul. Pour réutiliser une règle dans un autre traitement, retournez d'abord la valeur puis affichez-la seulement là où c'est nécessaire.

Erreur à éviter. En Python, une fonction sans return explicite renvoie None. En MATLAB, return quitte le script ou la fonction ; il ne s’écrit pas return suivi du résultat.

Que vaut compute_total(100, 0, 50) ? Peut-on remplacer les arguments par (100, 50, 0) sans changer le problème ?

Le premier appel renvoie 50 centimes. Le second renvoie 5 000 centimes : il demande 50 articles sans frais. Les arguments sont associés aux paramètres par leur position.

Télécharger cette fiche en PDF · Toutes les fiches par thème