Une sous-routine est une partie distincte du programme qui a un nom et résout sa propre tâche distincte. Le sous-programme est situé au début du programme principal et peut être lancé (appelé) depuis le programme principal en spécifiant le nom
L'utilisation de sous-programmes vous permet d'éviter la duplication de code, au cas où vous auriez besoin d'écrire le même code à différents endroits du programme.
Les bibliothèques importées dans un programme (par exemple, la bibliothèque mathématique math) sont constituées de sous-programmes qui ont déjà été compilés par quelqu'un. Les programmeurs n'ont pas besoin de réfléchir aux algorithmes qu'ils implémentent, mais simplement de les appliquer, en pensant uniquement à ce qu'ils font exactement. C'est un gain de temps considérable. Il n'est pas nécessaire d'écrire un algorithme qui a déjà été écrit par quelqu'un d'autre.
Chaque routine
ne doit faire qu'une seule chose : soit simplement calculer quelque chose, soit générer des données, soit faire autre chose.
Il existe deux types de sous-programmes : les
procédures et les
fonctions
Les sous-programmes effectuent certaines actions, telles que l'affichage du résultat à l'écran sous une certaine forme (un exemple simple, l'instruction
writeln() est un sous-programme standard qui imprime sur informations à l'écran)
Les sous-routines de fonctions
retournent un résultat (nombre, chaîne de caractères, etc.) que nous pouvons utiliser dans le programme principal.
Essayons d'écrire une procédure simple :
Supposons que nous ayons besoin d'afficher la chaîne "Erreur" à l'écran chaque fois qu'une erreur peut se produire dans le code en raison de la faute de l'utilisateur (par exemple, lorsqu'il saisit des données incorrectes)
Cela peut être fait en écrivant l'opérateur
writeln('Erreur');
Et maintenant, imaginez qu'une telle ligne doive être insérée à de nombreux endroits dans le programme. Bien sûr, vous pouvez simplement l'écrire partout. Mais cette solution a deux inconvénients.
1) cette chaîne sera stockée en mémoire plusieurs fois
2) si nous voulons changer la sortie en cas d'erreur, nous devrons changer cette ligne tout au long du programme, ce qui est plutôt gênant
Dans de tels cas, des procédures sont nécessaires.
Un programme avec une procédure pourrait ressembler à ceci :
...
en utilisant l'espace de noms std ;
procédure printError(); // description de la procédure
commencer
writeln('Erreur'); // corps de la procédure - commandes que la procédure exécutera
fin;
// programme principal
commencer;
...
erreur de l'imprimante(); // lance la procédure d'exécution. Nous spécifions simplement le nom de la procédure que nous voulons exécuter.
...
erreur de l'imprimante();
...
fin.
La procédure commence par le mot procédure
. Après le nom de la procédure, des parenthèses sont écrites, qui indiquent les variables et leurs types dont dépend l'exécution de la procédure. Par exemple :
var a, b, réponse : entier ;
procédure Somme(a, b : entier);
commencer
réponse := a + b;
fin ;
Toutes les instructions exécutées dans une procédure sont mises en retrait.
Les procédures sont écrites avant le programme principal
Pour exécuter une procédure, dans le programme principal, vous devez l'appeler par son nom et n'oubliez pas d'écrire des parenthèses !
Vous pouvez appeler une procédure dans un programme autant de fois que vous le souhaitez.