Page 1 sur 1

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

Publié : dim. juil. 07, 2019 7:57 am
par alb
# 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

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

Publié : dim. juil. 07, 2019 11:00 am
par parisse
C'est probablement a cause de la compatibilite Python, je vais regarder...

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

Publié : dim. juil. 07, 2019 1:12 pm
par parisse
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

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

Publié : dim. juil. 07, 2019 9:05 pm
par alb
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
}:;

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

Publié : lun. juil. 08, 2019 6:10 am
par alb
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)

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

Publié : lun. juil. 08, 2019 7:16 pm
par parisse
Parce que le membre de gauche de := n'est pas evalue. Il faut faire une boucle.