Sous-programmes : procédures et fonctions - 2


Une fonction est une sous-routine qui renvoie un résultat (nombre, chaîne de caractères, etc.)

Imaginez que vous ayez commandé un produit dans une boutique en ligne. D'un point de vue programmation, vous avez appelé un certain sous-programme, et contrairement à une procédure, ce sous-programme doit renvoyer un résultat - livrer le produit que vous avez commandé. Ces sous-programmes sont appelés fonctions.
Une fonction est formatée de la même manière qu'une procédure : fonction <nom de la fonction> (liste des paramètres sous forme de <nom de variable> :<son type> séparés par des points-virgules) : <type de valeur de retour> ; commencer <corps de fonction> fin;
La différence entre une fonction et une procédure est qu'une fonction doit retourner une valeur. Pour ce faire, vous devez utiliser le nom de la fonction comme variable ou la variable spéciale Résultat : fonction Somme(a, b:entier) : entier ; commencer Somme := a + b; fin; ou fonction Somme(a, b:entier) : entier ; commencer Résultat := a + b; fin;
Une fonction qui renvoie la moyenne arithmétique de deux entiers ressemblerait à ceci : fonction moyenne(a, b : entier) : réel ; commencer   moyenne := (a + b) / 2; fin; Reste à comprendre comment appeler cette fonction dans le programme principal :
Vous ne devez pas appeler une fonction de la même manière que vous appelez une procédure : moyenne(10, 5); La valeur retournée par la fonction sera perdue. C'est comme si les produits de la boutique en ligne n'étaient donnés à personne, mais jetés. Il est peu probable que le client l'aime.

Il est plus correct de sauvegarder le résultat dans une variable (ou de l'afficher à l'écran) : a := moyenne(10, 5);

ou

writeln(moyenne(10, 5));

Les programmeurs utilisent souvent des fonctions booléennes qui renvoient des valeurs booléennes : vrai ou faux (Vrue ou False)
Ces fonctions sont utiles pour   vérifier certaines propriétés.
Considérons deux exemples d'écriture d'une fonction logique qui vérifie la régularité d'un nombre
bool isEven(int n) { retour (n % 2 == 0); }
bool estPair(int n) { si (n % 2 == 0) retourner vrai ; autre renvoie Faux ; }
1)  ; Meilleur moyen :
résultat de l'expression
n % 2 == 0
sera vrai (True) ou faux (False)
Pas besoin d'écrire une instruction conditionnelle !
2) Ne faites pas ça !
Vous pouvez l'écrire comme ça, mais cela s'avérera être un enregistrement plus long, donc il vaut mieux ne pas le faire

Et la dernière note sur le travail avec les fonctions et les procédures : le nombre de fonctions et de procédures dans le programme n'est pas limité. De plus, un sous-programme peut appeler un autre sous-programme et même lui-même.