< Programmation

Les termes procédure et fonction désignent tous deux des sous-programmes. Un sous-programme est constitué, comme un programme, d'une suite d'instructions. Cette suite d'instructions réalise une fonction simple ou complexe, utilisée généralement à divers endroit du code du programme principal.

Programme sans sous-programme

Pour présenter l'intérêt d'utiliser un sous-programme, voici un exemple de code :

prix : RÉEL
quantité : ENTIER
total_ttc : RÉEL = 0.00
tva : RÉEL = 19.60

-- achat de 3 articles à 10,50€ HT chacun
prix ← 10.50
quantité ← 3
total_ttc ← total_ttc + tva * ( prix * quantité )

-- achat de 2 articles à 21,30€ HT chacun
prix ← 21.30
quantité ← 2
total_ttc ← total_ttc + tva * ( prix * quantité )

-- achat d'1 article à 2,40€ HT
prix ← 2.40
quantité ← 1
total_ttc ← total_ttc + tva * ( prix * quantité )

Pour les 3 achats de l'exemple, le calcul est répété à chaque fois. Ce qui n'est pas pratique pour la maintenance du code : si la formule n'est pas la bonne (une erreur est toujours possible) ou si la formule doit être modifiée (autre mode de calcul), il faudra changer le code en plusieurs endroits pour un même type de calcul.

Une procédure

Le premier intérêt d'utiliser un sous-programme est de regrouper le code commun et éviter d'avoir plusieurs endroits du code à modifier pour un seul changement d'algorithme, de formule, ...

L'exemple utilisant une procédure devient :

total_ttc : RÉEL = 0.00
tva : RÉEL = 19.60

DÉBUT PROCEDURE acheter(prix: RÉEL , quantité : ENTIER)
    total_ttc ← total_ttc + tva * ( prix * quantité )
FIN

acheter(10.50, 3)  -- achat de 3 articles à 10,50€ HT chacun

acheter(21.30, 2)  -- achat de 2 articles à 21,30€ HT chacun

acheter(2.40, 1)  -- achat d'1 article à 2,40€ HT

Cette deuxième version du code est beaucoup plus claire que la première : les détails du calcul ont été déplacés dans une procédure nommée "acheter" à deux arguments :

  • Le prix de l'article,
  • La quantité achetée.

L'utilisation d'un sous-programme permet donc de clarifier ce que fait le programme, sans s'encombrer des détails de l'algorithme utilisé pour effectuer l'action voulue.

Une fonction

L'exemple précédent modifie une variable globale nommée total_ttc. Ce qui s'appelle un effet de bord : un effet qui ne dépend pas que des paramètres d'entrée (prix et quantité dans l'exemple).

Dans un tel cas, il est préférable d'utiliser une fonction. Une fonction permet de retourner une valeur au programme appelant.

Dans le cas présent, la fonction calcule le prix TTC pour l'achat d'une certaine quantité d'articles, et le retourne au programme appelant. Celui-ci utilise le prix TTC retourné pour l'ajouter au total :

tva : RÉEL = 19.60

DÉBUT FONCTION pric_ttc(prix: RÉEL , quantité : ENTIER)
    RETOURNE tva * ( prix * quantité )
FIN

total_ttc : RÉEL = 0.00

total_ttc ← total_ttc + pric_ttc(10.50, 3)  -- achat de 3 articles à 10,50€ HT chacun

total_ttc ← total_ttc + pric_ttc(21.30, 2)  -- achat de 2 articles à 21,30€ HT chacun

total_ttc ← total_ttc + pric_ttc(2.40, 1)  -- achat d'1 article à 2,40€ HT
Cet article est issu de Wikibooks. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.