Vous êtes sur la page 1sur 2

Fonctions en PASCAL

ECE 1 Lycée Dumas

jeudi 15 mars

Principe
Le langage PASCAL dispose d'un certain nombre de fonctions prédénies qu'on a déjà eu l'occa-
sion d'utiliser dans nos programmes, comme la fonction exp ou la fonction abs. Il peut tout de même
être utile d'écrire nous-même de nouvelles fonctions, pour deux raisons : d'une part le répertoire de
fonctions prédénies en PASCAL n'est pas illimité, et il est même assez incomplet (pas de fonction
puissance, par exemple, ni de fonction factorielle, qui serait pourtant bien utile pour els calculs de
probabilités) ; d'autre part parce qu'on peut être amené à vouloir utiliser une fonction qui n'est pas
une fonction usuelle, et dont la dénition ne sera utile qu'à l'intérieur d'un programme.
x2 − 3
Exemple 1 : Soit f la fonction dénie sur R par f (x) = 2 . On veut écrire un programme
x +1
donnant les images par f des entiers compris entre −5 et 5.
xn+1
Exemple 2 : On dénit la suite xn par u0 = 1 et ∀n ∈ N, xn+1 = xn + , où x est
(n + 1)!
un réel xé. On désire écrire un programme calculant xn , pour des valeurs de x et de n choisies
par l'utilisateur. On admet que, si x = 1, la suite xn converge vers le nombre e. On veut écrire un
programme donnant une valeur approchée de e à ε près, utilisant la suite xn .

Syntaxe
On peut dénir des fonctions dans l'en-tête d'un programme, par exemple à la suite des déclara-
tions de variables. Première remarque, les fonctions en PASCAL sont à prendre dans le sens le plus
général possible, c'est-à-dire qu'elles peuvent très bien avoir plusieurs variables, qui ne seront pas
nécessairement des réels, et renvoyer une valeur qui n'est pas non plus un réel. Il est donc nécessaire
de commencer par préciser le nombre d'arguments, leurs types, ainsi que le type du résultat, ce qui
se fait par une ligne de la forme
FUNCTION nomfonction (var1 : type1 ; var2 : type2 . . . ; vark : typek) : typeres ;
Si on reprend les exemples de la factorielle et de la puissance, on aura donc :
FUNCTION puissance (x : real ; p : integer) : real ;
FUNCTION factorielle (n : integer) : integer ;
Remarque 1. Le type du résultat de la fonction doit absolument être un des types simples prédénis
en PASCAL. Par contre, on peut très bien prendre un argument d'un type plus complexe qui a été
déni auparavant, comme un polynôme.
Ensuite, la structure d'une fontion est la même que celle d'un programme. Il y a un BEGIN et
un END avec des instructions entre les deux (et des boucles si nécessaire ; par contre, on n'utilise
pas d'instruction d'entrée-sortie comme Writeln ou Readln à l'intérieur d'une fonction). On peut
également déclarer des variables à l'intérieur d'une fonction si nécessaire (avant le BEGIN, comme
dans le cas d'un programme). Mais attention, ces variables seront des variables locales, c'est-à-dire
qu'elles ne seront utilisables qu'à l'intérieur de la fonction. On peut par contre utiliser dans une

1
fonction des variables globales, c'est-à-dire dénies pour le programme tout entier. Plus vicieux, on
peut très bien donner un même nom à une variable globale et à une variable locale, ou utiliser l'un
des paramètres d'une fonction comme variable globale ou compteur pour une boucle. C'est toutefois
très fortement déconseillé, car cela ne fait qu'engendrer des confusions inutiles.
Autre nécessité quand on écrit une fonction, il faut dénir cette fonction ! Il faudra donc qu'il y
ait dans le corps de la fonction une ligne (et une seule) de la forme
nomfonction := expression ;
L'appel à la fonction dans le corps du programme se fera de la même façon que pour les fonctions
prédénies, mais il faut bien faire attention à avoir des arguments du bon type. Par exemple, si on
a prédéni la fonction puissance avec deux arguments entiers, on peut insérer l'instruction suivante
dans notre programme :
FOR i := 1 TO (puissance (2,5)) DO
La boucle tournera pour i variant de 1 à 25 , c'est-à-dire à 32.

Exemples
Donnons un exemple de fonction brut pour commencer, en reprenant le cas de la puissance :
FUNCTION puissance (x : real ; p : integer) : real ;
VAR
u : real ;
i : integer ;
BEGIN
u := 1 ;
FOR i := 1 TO p DO
x := x*u ;
puissance := x ;
END ;
Le deuxième exemple sera la reprise de l'exemple 1 du premier paragraphe.
PROGRAM tableauvaleurs ;
VAR
i : integer ;
z : real ;
FUNCTION f (x : integer) : real ;
BEGIN
f := (x*x-3)/(x*x+1) ;
END ;
BEGIN
FOR i := -5 TO 5 DO
BEGIN
z := f(i) ;
WriteLn('La valeur de f(',i,' est de ',z) ;
END ;
END.

Exercice
Écrire les programmes répondant aux demandes de l'exemple 2.

Vous aimerez peut-être aussi