Les fonctions
CHAPITRE 8
160
n’avons pas prévu de « formalisme » concernant cette allocation dynamique de mémoire.
Sachez que, de toute façon, il s’agit de mécanismes analogues à ceux qui seront utilisés pour
les objets et qui, quant à eux, seront étudiés en détail. Nous verrons d’ailleurs qu’une fonction peut renvoyer la référence à un objet.
Enfin, pour être complet, signalons que certains langages permettent également à une fonction de renvoyer une référence sur une valeur d’un type de base. Là encore, les choses sont
rendues délicates par le fait qu’on ne peut pas renvoyer de référence à quelque chose de local,
donc de non rémanent...
4.3 Appels imbriqués
Jusqu’ici, nous avons appelé une fonction depuis un programme. Mais, comme on peut s’y
attendre, une fonction peut, à son tour, appeler une autre fonction, comme dans ce schéma :
Programme
fonction f (....)
fonction g (.....)
.....
.....
.....
f(...)
g(.....)
.....
.....
.....
Une telle situation ne présente aucune difficulté, hormis le cas particulier où une fonction
s’appelle elle-même et que nous traiterons au paragraphe 7, page 164.
Voici un exemple utilisant cette possibilité pour réaliser une fonction de tri d’un tableau
d’entiers qui utilise elle-même une fonction d’échange de deux valeurs. Il s’agit d’une adaptation du programme du paragraphe 5 du chapitre 7, page 119, utilisant la fonction échange
présentée au paragraphe 2.3, page 150 :
fonction tri (entier t[], nbElem) // rappel : t est transmis par référence
{ entier i, j
répéter pour i:=1 à nbElem-1
répéter pour j:=i+1 à nbElem
si (t[i] > t[j]) alors échange (t[i], t[j])
}
fonction échange (référence entier a, référence entier b)
{ entier c
c := a
a := b
b := c
}
Fonction de tri d’un tableau, utilisant une autre fonction échange
CHAPITRE 8
160
n’avons pas prévu de « formalisme » concernant cette allocation dynamique de mémoire.
Sachez que, de toute façon, il s’agit de mécanismes analogues à ceux qui seront utilisés pour
les objets et qui, quant à eux, seront étudiés en détail. Nous verrons d’ailleurs qu’une fonction peut renvoyer la référence à un objet.
Enfin, pour être complet, signalons que certains langages permettent également à une fonction de renvoyer une référence sur une valeur d’un type de base. Là encore, les choses sont
rendues délicates par le fait qu’on ne peut pas renvoyer de référence à quelque chose de local,
donc de non rémanent...
4.3 Appels imbriqués
Jusqu’ici, nous avons appelé une fonction depuis un programme. Mais, comme on peut s’y
attendre, une fonction peut, à son tour, appeler une autre fonction, comme dans ce schéma :
Programme
fonction f (....)
fonction g (.....)
.....
.....
.....
f(...)
g(.....)
.....
.....
.....
Une telle situation ne présente aucune difficulté, hormis le cas particulier où une fonction
s’appelle elle-même et que nous traiterons au paragraphe 7, page 164.
Voici un exemple utilisant cette possibilité pour réaliser une fonction de tri d’un tableau
d’entiers qui utilise elle-même une fonction d’échange de deux valeurs. Il s’agit d’une adaptation du programme du paragraphe 5 du chapitre 7, page 119, utilisant la fonction échange
présentée au paragraphe 2.3, page 150 :
fonction tri (entier t[], nbElem) // rappel : t est transmis par référence
{ entier i, j
répéter pour i:=1 à nbElem-1
répéter pour j:=i+1 à nbElem
si (t[i] > t[j]) alors échange (t[i], t[j])
}
fonction échange (référence entier a, référence entier b)
{ entier c
c := a
a := b
b := c
}
Fonction de tri d’un tableau, utilisant une autre fonction échange
