Déclaration et appel de fonctions

Principes généraux et compléments



Déclaration d'une fonction


function NomDeLaFonction ( liste des paramètres ) : type;
  Déclaration des variables locales
begin
  Instructions (dont une instruction de retour) 
end;

Différences avec la déclaration d'une procédure:

Appel de fonction

Un appel de fonction s'écrit:


   NomDeLaFonction ( liste des paramètres effectifs )

Comme pour les procédures, le nombre de paramètres effectifs doit être égal au nombre de paramètres formels et le type d'un paramètre effectif quelconque doit être compatible avec celui du paramètre formel de même position.

Différences avec un appel de procédure

Les fonctions prédéfinies

Comme tous les langages, Pascal offre une multitude de fonctions prédéfinies. Ces fonctions réalisent en générale des opérations très fréquement utilisées afin de faciliter la tâche du programmeur. On y trouve en particulier les fonctions mathématiques (exemples) et les fonctions de manipulation de chaine de caractères (exemples).

En Pascal, elles sont réparties dans différentes unités de code. Pour pouvoir les utiliser dans une unité d'un projet, le nom de ces unités doit figurer dans la liste des unités importées, c'est à dire après uses.

Par défaut, Lazarus importe huit unités dans une unité associée à un formulaire (figure).

Comme toutes les fonctions préféfinies ne figurent pas dans ces huit unités, il faut dans certains cas étendre la liste des unités importées.

Prenons par exemple la fonction floor. Cette fonction retourne la partie entière d'un nombre. Elle figure dans l'unité Math.pas (fonctions mathématiques). Pour pouvoir utiliser floor dans une unité, il faut donc ajouter Math dans la liste des unités importées par celle-ci (figure )

Expressions et appels de fonctions

Comme nous l'avons déjà dit, un appel de fonction est une expression dont la valeur est celle retournée par la fonction.

Cela nous permet d'élargir la notion d'expression valide abordée dans le premier cours.

Pour cela, il nous suffit de rajouter la règle suivante:

Un appel de fonction est une expression valide de type T , si les paramètres effectifs sont compatibles avec les paramètres formels de la fonction et que cette fonction retourne un résultat de type T.

Cette nouvelle règle, en conjonction avec les règles déjà vues nous permet de construire des expressions faisant intervenir des fonctions. Voici quelques exemples utilisant les fonctions prédéfinies:

Expression Type Valeur
10+Random(2) Integer 10, 11 ou 12
'Age:' + IntToStr(51) String 'Age : 51'
LeftStr('Thirion',Length('Thirion')-1) String 'Thirio'