 
 
 
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.
 
 
