Programmation/Procédures et fonctions
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
modifierPour 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
modifierLe 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
modifierL'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