9.5.4 Pour utiliser une chaîne comme nom de variable ou comme nom de fonction : #

Utilisation de Xcas

Modérateur : xcasadmin

alb
Messages : 1229
Inscription : ven. août 28, 2009 3:34 pm

9.5.4 Pour utiliser une chaîne comme nom de variable ou comme nom de fonction : #

Message par alb » dim. juil. 07, 2019 7:57 am

# permet d’utiliser une chaîne de caractères comme nom de variable ou comme nom de fonction ou comme nom d’instruction ou comme nom de répertoire.
# est surtout utile dans un programme.
# a comme argument une chaîne ou le nom d’une variable qui contient une chaîne ou une expression renvoyant une chaîne.
# transforme la chaîne en une expression mais n’évalue pas cette expression. Donc, pour faire une affectation, on ne doit pas écrire #"a:=2", mais on peut écrire #"a":=2 (voir aussi expr 9.5.6).
On tape :

a:="abc";#a:=3

ou :
#"abc":=3

On obtient :
La variable abc contient 3 abc ne semble pas affectee

On tape :
b:="ifactor";(#b)(54)

ou :
(#"ifactor")(54) erreur grammaticale

On obtient :
2*3^3

parisse
Messages : 5081
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: 9.5.4 Pour utiliser une chaîne comme nom de variable ou comme nom de fonction : #

Message par parisse » dim. juil. 07, 2019 11:00 am

C'est probablement a cause de la compatibilite Python, je vais regarder...

parisse
Messages : 5081
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: 9.5.4 Pour utiliser une chaîne comme nom de variable ou comme nom de fonction : #

Message par parisse » dim. juil. 07, 2019 1:12 pm

C'est effectivement la compatibilite Python qui empeche # de fonctionner. Une solution consiste a taper en debut de programme (ou en 1ere ligne d'une commande sur plusieurs lignes) //, ceci desactive la compatibilite Python. Ainsi

Code : Tout sélectionner

//
#"abc":=3; abc;
fonctionne

alb
Messages : 1229
Inscription : ven. août 28, 2009 3:34 pm

Re: 9.5.4 Pour utiliser une chaîne comme nom de variable ou comme nom de fonction : #

Message par alb » dim. juil. 07, 2019 9:05 pm

ok par exemple:

Code : Tout sélectionner

//
seq(#("u"+k),k,1,7);
makemat((j,k)->#("a"+(j+1)+(k+1)),3,3);
ou encore:

Code : Tout sélectionner

//
essai():={
  local k;
  pour k de 1 jusque 7 faire
    #("u"+k):=k^2
  fpour
  return 0
}:;

alb
Messages : 1229
Inscription : ven. août 28, 2009 3:34 pm

Re: 9.5.4 Pour utiliser une chaîne comme nom de variable ou comme nom de fonction : #

Message par alb » lun. juil. 08, 2019 6:10 am

juste une question, pourquoi ne peut-on pas faire:

Code : Tout sélectionner

//
seq(#("u"+k),k,1,7):=seq(k^2,k,1,7)

parisse
Messages : 5081
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: 9.5.4 Pour utiliser une chaîne comme nom de variable ou comme nom de fonction : #

Message par parisse » lun. juil. 08, 2019 7:16 pm

Parce que le membre de gauche de := n'est pas evalue. Il faut faire une boucle.

Répondre