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:
NomDeLaFonction := expression ;
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.
m:= Moyenne (A,B); AfficherNombre (Moyenne (A,B), ZT_Moy) (Moyenne(A,B) + Moyenne(C,D)) / 2Un appel de procédure au contraire, ne peut pas figurer à l'intérieur d'une instruction, ni d'une expression.
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 )
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:
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' |