Listes avec Xcas

Bonjour
Qui m'expliquer ce bug, auquel que je ne comprends rien.
Pour "programmer" la suite des nombres impairs avec une "liste" dans xcas, je pensais avoir donné des ordres parfaits avec :
f(n):  local}  k,L; 
L[0]:=1; 
Pour  k de  1  à  n {
L[k]:= 2+L[k-1];$
f pour retourne L[n];
};
Et bien non car voilà la réaction de la machine :
$1) OK$ : réponse; succès de la compilation ...
$2) f(3)$ entrée: réponse: $STO (1,L[0])$ dans $f(3)$ valeur argument incorrecte

Pour quelle raison je n'ai pas "$L[3]$ dans $(f(3)$" comme je l'ai gentiment demandé ?
Merci.

[Pour insérer du code sur le forum, utiliser le bouton "Code" (5ème par la droite au dessus de la fenêtre d'édition). AD]

Réponses

  • Salut LOU16,

    Je dirais d'abord à xcas que L est une liste en l'initialisant par L:=NULL.
    Puis, pour k variant de 1 à n, faire L:=L,2k-1.
  • Bonjour Gai Requin

    Merci, mais le "2k-1" ne correspond pas à ce que je veux faire , à savoir obtenir une liste $L$ qui évolue la manière suivante:
    $(1),\: (1,1+2),\: (1,3, 3+2),\: ....$
    Avec "Algobox", ces instructions ne m'ont jamais posé de problème.

    Edit; OK cela marche avec $L:=\text{ NULL}$ Je ne voyais pas où déclarer que $L$ était une liste et pensais qu'écrire $L[0]:=... $ suffisait à donner à $L$ ce statut .
    Cela dit, je ne comprends toujours pas le message d'erreur $"\text{STO}\: (1,L[0]) \:\text{dans}\: f(3)".$
  • Je ne connais pas bien xcas mais on doit pouvoir faire ceci.
    On initialise L en tant que liste par L:=[1] puis, pour k variant de 1 à n-1, on rajoute l'élément L[k-1]+2 à L.
    On doit pouvoir traduire en xcas le code maple ci-dessous qui affiche les n premiers entiers naturels impairs.
    Remarque : Pour xcas, le premier élément d'une liste L non vide est L[0], alors que c'est L[1] pour maple !
    f := proc (n) local k, L; L := [1]; for k from 2 to n do L := [op(L), L[k-1]+2] end do; L; end proc
    f(3);
    [1,3,5]
    

    Edit : J'ai vu ton Edit après avoir envoyé ce message.
    Bonne bidouille avec xcas ! ;-)
  • Ben l'erreur, c'est que si xcas ne sait pas que L est une liste, il ne peut pas stocker 1 dans L[0].
  • salut,
    je ferais
    fonction ListeTermes(n) // retourne la liste des n premiers nombres impairs
      local v,k,L;
      v:=1;
      L:=[v]; // u entre crochets ne passe pas sur ce forum
      pour k de 1 jusque n-1 faire
        v:=v+2;
        L.append(v); // ou L:=append(L,v)
      fpour
      retourne L
    ffonction:;
    
    debug(ListeTermes(5)) permet de suivre l'evolution des variables

    le code qui bug ici
    fonction ListeTermes(n) // retourne la liste des n premiers nombres impairs
      local u,k,L;
      u:=1;
      L:=[ u]; // u entre crochets ne passe pas sur ce forum
      pour k de 1 jusque n-1 faire
        u:=u+2;
        L.append(u); // ou L:=append(L,u)
      fpour
      retourne L
    ffonction:;
    
Connectez-vous ou Inscrivez-vous pour répondre.