Programmation/Procédures et fonctions

Un livre de Wikilivres.

Cette page est considérée comme une ébauche à compléter . Si vous possédez quelques connaissances sur le sujet, vous pouvez les partager en éditant dès à présent cette page (en cliquant sur le lien « modifier »).

Ressources suggérées : Aucune (vous pouvez indiquer les ressources que vous suggérez qui pourraient aider d'autres personnes à compléter cette page dans le paramètre « ressources » du modèle? engendrant ce cadre)

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[modifier | modifier le wikicode]

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.

Règle d'or de la programmationlink={{{link}}}

Le copier-coller est une très mauvaise façon de programmer.

Une procédure[modifier | modifier le wikicode]

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[modifier | modifier le wikicode]

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).

Règle d'or de la programmationlink={{{link}}}

Évitez d'utiliser des variables globales pour stocker un résultat temporaire.

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