### 6.14.2 Pour évaluer une expression : eval

eval sert à évaluer une expression.
eval a un ou deux argument(s) : une expression et éventuellement le niveau souhaité de l’évaluation.
Il faut savoir que Xcas évalue toujours les expressions, sans avoir besoin de la commande eval : le niveau d’évaluation est indiqué dans la case eval de la Configuration du CAS du menu Cfg et vaut par défaut vaut 25.
La commande eval est surtout utile lorsqu’on veut évaluer une sous-expression dans l’éditeur d’expressions.
On tape :

a:=2

On obtient :

2

On tape :

eval(2+3*a)

ou

2+3*a

On obtient :

8

On tape :

purge(r);purge(p);a:=1+i*r
r:=p+1;p:=-4;

on peut alors avoir différentes évaluation de a selon le niveau dévaluation demandé :

- on tape :
  a
  On obtient :
  1-3*i
- on tape :
  eval(a,1)
  On obtient :
  1+(i)*r
- on tape :
  eval(a,2)
  On obtient :
  1+(i)*(p+1)
- on tape :
  eval(a,3)
  On obtient :
  1-3*i

Remarque
Pour les objets géométriques, en plus de l’évaluation exacte (au niveau 25 par dévaut), Xcas rajoute une évaluation numérique (au niveau 1) au moment de l’affichage pour pouvoir représenter les objets géométriques dependant de paramètres définis par assume ou par une affectation numérique.

Voici différents exemples :

- On tape :

      purge(r);
      R:=point(1+i*r);
      r:=-3;

  Le niveau correspondant à R:=point(1+i*r); affichera dans tous les cas le point et sa légende car l’évaluation numérique pour l’affichage de ce niveau est faite au moment de l’affichage donc après que r ait été défini.
- On tape :

      purge(r);
      purge(p);
      R:=point(1+i*r);
      r:=p+1;
      p:=-4;

  Le point R n’apparait pas car l’évaluation numérique au moment de l’affichage n’est faite qu’au niveau 1. Ainsi r est remplacé par p mais p n’est pas remplacé donc la commande R:=point(1+i*r); n’affiche rien.
- On tape

      purge(r);
      R:=point(1+i*r):;
      r:=-3;
      eval(R,1);

  La commande eval(R,1) renvoie point(1+(i)*r) et dessine le point R et sa légende. En effet la réponse est évaluée formellement au niveau 1 ce qui donne la réponse point(1+i*r) puis pour la représentation graphique, point(1+i*r) est évalué numériquement (sans toucher aux légendes) ce qui permet d’afficher le point. La légende n’ apparait pas, lorsqu’on évalue un objet géométrique, mais ici, lorsqu’on fait eval(R,1), R est évalué en un objet géométrique, mais l’objet géométrique lui-même n’est pas évalué. Donc eval(R,1) dessine le point R et sa légende.
- On tape

      purge(r);
      purge(p);
      R:=point(1+i*r):;
      r:=p+1;
      p:=-4;
      eval(R,1);

  La commande eval(R,1) renvoie point(1+(i)*r), mais ne dessine pas le point R. En effet la réponse est évaluée formellement au niveau 1 ce qui donne la réponse point(1+i*r) puis pour la représentation graphique, point(1+i*r) est évalué numériquement au niveau 1 ce qui ne permet pas d’afficher le point.
- On tape :

      purge(r);
      R:=point(1+i*r):;
      r:=-3;
      eval(R,2);

  La commande eval(R,2) renvoie point(1,-3) et le dessin du point R sans sa légende. En effet, quand on fait eval(R,2), alors R est évalué en un objet géométrique, et cet l’objet géométrique est lui-même évalué et donc la légende disparait.
- On tape :

      purge(r);
      purge(p);
      R:=point(1+i*r):;
      r:=p+1;
      p:=-4;
      eval(R,2);

  La commande eval(R,2) renvoie point(1,p+1) et le dessin du point R sans sa légende. En effet, quand on fait eval(R,2), alors R est évalué en un objet géométrique, et cet l’objet géométrique est lui-même évalué et donc la légende disparait.