Bonjour, j'ai un souci avec le programme suivant sur Xcas: je veux calculer avec les 10 premiers de la suite Un=3*Un-1 et de premier terme 1 mais il ne s'exécute pas, merci d'avance.
local n,u;
n=0;
u=1;
display(u);
for n=0 to 9
{n=n+1;
u=3*u;
display u;}
Et si on parlait français ? Une proposition parmi d'autres:
Termes(n):={
local u,k;
u:=1;
afficher("u(0)=1");
pour k de 1 jusque n faire
u:=3*u-1;
afficher("u("+k+")="+u);
fpour
retourne "c'est fini !" // retourner la liste des 10 termes serait plus intéressant
}
Pour ceux qui ne connaissent pas encore
Xcas suivre ces étapes:
1/ copier-coller ce code source dans l'éditeur de programmes Menu Prg->Nouveau programme
2/ l'interpréter en appuyant sur OK
3/ pour l'exécuter on se place dans une nouvelle ligne de commandes en-dessous et on tape
Termes(10) puis on valide
Merci; je ne comprends pas votre remarque"si on parlait français?"
Cela dit, curieuse est la notation "+k+" ; j'ai bien fait de demander votre aide, car ni en algobox ni en python etc , je n'avais "croisé" cette notation ou façon de noter.
si je veux afficher le message voici le terme de la suite , j'écris
display ou afficher("le terme de la suite est u("+k+")="+u);
Désolé pour la remarque
. Cela voulait dire: "et si on écrivait l'algo en français ?". C'est surtout pour montrer la similitude avec du pseudo-code.
Pour l'usage du plus voici un passage de l'aide (paragraphe 6.5.11):
+ est un opérateur préfixé ou infixé qui a comme paramètre une séquence d'objets comprenant une chaîne de caractères.
+ concaténe ces objets en une chaîne de caractères.
Exemple:
c:=5;"abcd"+c+"e" renvoie la chaîne abcd5e
purge(c);"abcd"+c+"e" renvoie la chaîne abcdce
Je vois que tu connais bien les langages de programmation. Dans un langage fonctionnel ce qui est important c'est ce que retourne la fonction, les matheux disent l'image par la fonction. Voici un programme beaucoup plus intéressant car il retourne la liste des termes et on peut récupérer n'importe quel élément de cette liste. Par exemple:
Termes(n):={
local u,L,k;
u:=1;
L:=[u] // L est une liste qui contient le premier terme (initialisation)
afficher("u(0)=1");
pour k de 1 jusque n faire
u:=3*u-1;
L:=append(L,u); // à chaque tour on ajoute le terme suivant
afficher("u("+k+")="+u);
fpour
retourne L // la valeur de retour est la liste des n éléments
}
PT:=Termes(10);
PT[0] renvoie le premier élément de la liste
PT[3] renvoie le quatrième élément de la liste, etc ...
somme(PT) renvoie la somme des 10 premiers termes.
Merci; non , je suis débutant;
Ok pour la notation +k+ ; cela m'a perturbé car ici, l'incrémentation du k est invisible voire implicite contrairement à d'autres langages(algobox par exemple) et sa force c'est qu'il nous renvoie non pas k mais le k correspondant à chaque étape et y "concatène" u , on aura u(0) u(1) etc
Merci
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :