### 6.16.3 Sommet et feuille d’une expression : `sommet feuille op`

Un opérateur est une fonction infixée : par exemple ’+’ est un opérateur et ’sin’ est une fonction.
On peut représenter une expression par un arbre. Le sommet de l’arbre est soit un opérateur, soit une fonction et les feuilles de l’arbre sont les arguments de l’opérateur ou de la fonction (voir aussi 6.39.12).
La fonction `sommet` (resp `feuille` (ou `op`)) renvoie le sommet (resp la liste des feuilles) d’une expression.
On tape :

`sommet(sin(x+2))`

On obtient :

`’sin’`

On tape :

`sommet(x+2*y)`

On obtient :

`’+’`

On tape :

`feuille(sin(x+2))`

Ou on tape :

`op(sin(x+2))`

On obtient :

`x+2`

On tape :

`feuille(x+2*y)`

Ou on tape :

`op(x+2*y)`

On obtient :

`(x,2*y)`

Remarque
Lorsque l’utilisateur définit une fonction par un programme par exemple la fonction `pgcd`.
On tape :

`pgcd(a,b):={local r; while (b!=0) {r:=irem(a,b);a:=b;b:=r;} return a;}`

Puis on tape :

`sommet(pgcd)`

On obtient :

`’program’`

Puis on tape :

`feuille(pgcd)[0]`

On obtient :

`(a,b)`

Puis on tape :

`feuille(pgcd)[1]`

On obtient :

`(0,0) ou (15,25) si l’on vient d’exécuter pgcd(15,25)`

Puis on tape :

`feuille(pgcd)[2]`

On obtient :

`Le corps du programme : {local r;....return(a);}`