Les fonctions
CHAPITRE 8
164
Par ailleurs, certains langages objet ne disposent théoriquement pas de fonctions indépendantes, ni d’ailleurs de programme isolé, contrairement à ce qui se passe en programmation
procédurale. On n’y trouve que des classes, disposant de méthodes. Cependant, il faut généralement que l’exécution commence quelque part (voir remarque ci-après). C’est pourquoi
il existe, dans une classe donnée, une méthode de nom précis, ayant en plus la particularité
d’être une « méthode de classe », c’est-à-dire utilisable sans avoir besoin d’être appliquée à
un objet particulier. En définitive, sous un formalisme différent et quelque peu trompeur, on
retrouve quand même la notion de fonction principale. On trouvera des illustrations de cet
aspect dans la rubrique « Côté langages ».
Remarque
Même dans un programme « piloté » par les événements, il faudra bien « initialiser quelque
chose » : une première fenêtre offerte à l’utilisateur, un menu... Il faudra donc bien, là encore,
disposer de l’équivalent d’une fonction principale, même si, dans ce cas, celle-ci ne joue plus
un rôle de coordination des autres fonctions aussi évident que dans le cas d’un programme
procédural.
7 La récursivité
On parle de récursivité ou d’appels récursifs lorsqu’une fonction comporte un appel à ellemême, comme dans :
fonction f (...)
{ ....
f(...)
.....
}
Cette technique, utilisable dans la plupart des langages actuels, requiert que les variables
locales soient rémanentes. Considérons cet exemple de fonction de calcul de factorielle :
// programme utilisant la fonction fac
entier n
écrire «donnez un entier positif : »
lire n
écrire «Voici sa factorielle : », fac(n)
// la fonction fac
entier fonction fac (entier n)
{ si n>1 alors retourne fac(n-1) * n
sinon retourne 1
}
donnez un entier positif : 8
Voici sa factorielle : 40320
Exemple d’utilisation d’une fonction récursive de calcul de factorielle
Précédent

- 187/370

Suivant