### 6.5.16 Pour transformer une chaîne en un nombre, une fonction ou en une commande : expr

Voici , selon la chaîne, les transformations que fait expr :

- expr permet de transformer une chaîne de chiffres ou lettres en un nombre entier ayant comme écriture en base 8,ou 10 ou 16 cette chaîne de chiffres. Il faut bien sûr que l’écriture soit valide et représente un nombre entier dans la base donnée : toutefois expr("019") renvoie le nombre décimale 19.0 (voir aussi 9.5.5).
  Attention
  Si la chaîne commence par 0x, expr transforme cette chaîne en le nombre entier écrit en base 16, sinon,
  si la chaîne commence par 0, expr transforme cette chaîne en le nombre entier écrit en base 8 et sinon
  expr transforme cette chaîne en le nombre entier écrit en base 10.
  On tape :
  expr("123")
  On obtient :
  123
  On tape :
  expr("0123")
  On obtient :
  83
  En effet : 1*82+2*8+3=83 On tape :
  expr("0x12f")
  On obtient :
  303
  En effet 1*162+2*16+15=303
  Remarque On tape :
  expr(char([48,50,56,56]))
  On obtient un nombre flottant :
  288.0
  En effet char([48,50,56,56]) renvoie "0288".
  Or un nombre entier commençant par 0 est un nombre écrit en octal, du coup il ne doit pas contenir de chiffre supérieur ou égal à 8. Ici le nombre a des chiffres égaux à 8, il est donc réinterprété (après détection d’erreur de saisie en octal) comme un nombre flottant.
  On tape :
  expr(char([48,50,55,55]))
  On obtient un nombre exact car l’écriture "0277" est valide :
  191
  En effet char([48,50,55,55]) renvoie "0277" et 0277 est l’écriture en base 8 de 191 (7+8*7+64*2=191).
  On tape :
  expr(char([48,48,50,51]))
  On obtient un nombre exact car l’écriture "0023" est valide :
  19
  En effet char([48,50,55,55]) renvoie "0023" et 0023 est l’écriture en base 8 de 19 (3+2*8=19).
- expr permet aussi de transformer une chaîne de chiffres représentant un nombre décimal en ce nombre.
  On tape :
  expr("123.4567")
  On obtient :
  123.4567
  On tape :
  expr("123e-5")
  On obtient :
  0.00123
- expr permet de transformer une chaîne de chiffres représentant un nombre rationel en ce nombre.
  On tape :
  expr("123/6")
  On obtient :
  41/2
- expr permet de transformer une chaîne représentant une expression réelle en ce réel.
  On tape :
  expr("sqrt(2)+pi")
  On obtient :
  sqrt(2)+pi
- expr permet de transformer une chaîne représentant un complexe réelle en ce complexe.
  On tape :
  expr("(1+2i)/(1-i)")
  On obtient :
  (-1+3*i)/2
- expr permet de transformer une chaîne représentant la définition d’une fonction en cette fonction.
  On tape :
  f:=expr("x->x`^`2+sqrt(2)");f(2)
  On obtient en vert //Succès:
  (x)->x`^`2+sqrt(2),4+sqrt(2)
- expr permet aussi de transformer une chaîne de caractères pouvant être interprétée comme une commande.
  On tape :
  expr("a:=1")
  On obtient :
  1 et, la variable a contient 1

Remarque2
On peut aussi utiliser la commande convert en utilisant l’une des options integer, rational, float, real, complex, symbol, identifier pour trandformer une chaîne de caractères en un nombre entier, rationnel, décimal, réel, complexe ou en une expression ou un nom de variable.