Page 1 of 2

[Résolu] Conversion BASIC z80 -> BASIC nspire

Unread postPosted: 22 Feb 2016, 18:09
by Ewues.
Bonsoir, j'aurais besoin d'aide. Je débute avec la programmation sur nspire.
Pouvez vous m'aider a traduire cet algorithme a la base écrit sur 83+ vers nspire cx cas.

.8xp : https://www.dropbox.com/s/73oscamhf1bsk3x/MATH.8xp?dl=0

Code: Select all
Lbl 0
ClrHome
Menu("Math","Seuil",1,"Intervalle",2,"Reccurence",3,"Polynom 2nd ^^o",4,"Balayage",5,"Quitter",99)
Lbl 99
ClrHome
Stop
Lbl 1
ClrHome
Input "Pas :",A
Input "Un=",Str1
Input "De .. en ..",K
Str1->{Y1}
0->N
0->U
While U<=A
   N+K->N
   {Y1}(N)->U
End
Disp "Un>=A au rang :",N
Pause
ClrHome
Menu("Choisir","Recommencer",1,"Quitter",0)
Lbl 2
ClrHome
Input "-1<q<1 :",Q
Input "Intervalle :",A
0->S
Q^0->N
While U>A
   N+1->N
   Q^N->U
End
Disp "Rang :",N
Pause
ClrHome
Menu("Choisir","Recommencer",2,"Quitter",0)
Lbl 3
ClrHome
Disp "nEi=A Un"
Disp " "
Input "n=",N
Input "Un: ",Str1
Input "i=",A
0->S
Str1->{Y1}
For(O,A,N)
   {Y1}(O)->U
   S+U->S
End
Disp "Somme: ",S
Pause
ClrHome
Menu("Choisir","Recommencer",3,"Quitter",0)
Lbl 4
Disp "ax^^2+bx+c=0"
Disp " "
Input "a :",A
Input "b :",B
Input "c :",C
B^^2-4AC->D
ClrHome
Disp "Delta=B^^2-4AC :",D>Frac
If D<0
Menu("Donner dans C ?","Oui",A,"Non",B)
Lbl A
(~B+i*sqrt(~D))/(2A)->E
(~B-i*sqrt(~D))/(2A)->F
Disp "Deux solutions :",E>Frac,F>Frac
Pause
Goto C
Lbl B
Disp "Pas de solutions"
Pause
ClrHome
If D=0
Disp "Une solution",~B/(2A)>Frac
If D>0
Then
   (~B-sqrt(D))/(2A)->E
   (~B+sqrt(D))/(2A)->F
   Disp "Deux solutions :",E>Frac,F>Frac
End
Pause
Lbl C
ClrHome
Menu("Choisir","Recommencer",4,"Quitter",0)
Lbl 5
ClrHome
Input "Nbr de decimales: ",N
Input "Borne inf: ",A
Input "f(x) :",Str1
Str1->{Y1}
A->X
1->P
For(I,1,N)
   P/10->P
   While {Y1}(X)<=0
      X+P->X
   End
   X-P->X
End
ClrHome
Disp "Encadrement: ",X,X+P
Pause
Menu("Choisir","Recommencer",5,"Quitter",0)


merci.

Re: conversion BASIC z80 -> BASIC nspire

Unread postPosted: 22 Feb 2016, 18:48
by Hamza.S
bonsoir,

En TI Basic Nspire il n'y a pas de fonction pour faire un menu, il faut voir comment organiser le programme genre utiliser Text et Request (oui le langage TI Basic Nspire est très nul) exemple :
Code: Select all
Menu("Math","Seuil",1,"Intervalle",2,"Reccurence",3,"Polynom 2nd ^^o",4,"Balayage",5,"Quitter",99)

sur Nspire
Code: Select all
Text "1: Seuil \n2: Intervalle \n3: Reccurence..." © \n c'est retour à la ligne
Request "choix ?",choix
If choix=1 then
...
ElseIf choix=2 Then
...
EndIf

il n'y a pas Pause ni ClrHome et les Input(/Prompt) tu les remplaces par Request

Code: Select all
Input "Pas :",A
Input "Un=",Str1
Input "De .. en ..",K
Str1->{Y1}

sur Nspire (CX) CAS tu peux directement stocker ta suite à ta variable par exemple
Code: Select all
Request "Un=",un

Re: conversion BASIC z80 -> BASIC nspire

Unread postPosted: 22 Feb 2016, 18:49
by Ewues.
merci, je te tiendrais au courant de l'avancement de mon programme :)

Re: conversion BASIC z80 -> BASIC nspire

Unread postPosted: 22 Feb 2016, 19:09
by Hamza.S
J'en ai oublié un :
Code: Select all
{Y1}(O)->U

je ne connais pas assez le Basic z80 mais il me semble calcul Y1(O)
si je ne me trompe pas je te conseille de faire
Code: Select all
Request "Un=",un
expr("u(n):="&string(un))

comme ça tu pourras directement calculer u(n) en remplaçant n par un nombre
sinon il y a la méthode avec la barre tel que "sachant que" | qui se trouve dans :nsct: :nseq:

Re: conversion BASIC z80 -> BASIC nspire

Unread postPosted: 23 Feb 2016, 15:23
by Ewues.
Je ne vois pas ce qui cloche là ... Quand je fait :nsct: + :nsb: pour enregistrer, ça affiche ce message:

Image

Re: conversion BASIC z80 -> BASIC nspire

Unread postPosted: 23 Feb 2016, 15:33
by Hamza.S
le message d'erreur vient du Goto suivi d'un nombre c'est une écriture pure des (e)z80
tu n'es pas obligé d'utiliser Goto et Lbl puisque tes parties sont dans des blocs de conditions.

Re: conversion BASIC z80 -> BASIC nspire

Unread postPosted: 23 Feb 2016, 16:01
by Bisam
Les "Goto" en Basic Nspire doivent être suivis d'un nom d'étiquette... qui doit commencer par une lettre (mais peut comporter un ou plusieurs chiffres ensuite, et/ou d'autres lettres, etc.).
Cependant, si tu peux les éviter, par exemple en utilisant des sous-programmes, fais-le.

Re: conversion BASIC z80 -> BASIC nspire

Unread postPosted: 23 Feb 2016, 16:14
by Ewues.
Encore une erreur ....

cette ligne sert a rentrer la fontion donnée dans Str1
Code: Select all
Input "Un=",Str1

la fonction est ensuite mise dans Y1
Code: Select all
Str1->{Y1}

le (N) correspond a la variable que j'ai mis dans la fonction... si je met 3x²-12x+1, sa sera en fonction de x donc {Y1}(X)
Code: Select all
{Y1}(N)->U


sur nspire j'ai un probleme, ceci ne fonctionne pas et c'est confus
Code: Select all
Request "Un=",un
expr("u(n):="&string(un))


voila ce que j'ai rentré:
Code: Select all
Request "Pas : ?",pa
Request "Un = ?",un
Request "De combien en combien ?",cb
0→n
0→u
While u≤pas
n+cb→n
expr("u(n):="&string(un))→u
EndWhile
Disp "Un ≥ A au rang : ",n

Re: conversion BASIC z80 -> BASIC nspire

Unread postPosted: 23 Feb 2016, 16:28
by Hamza.S
Code: Select all
Request "Un=",un
expr("u(n):="&string(un))

c'est pour définir ta suite
Code: Select all
expr("u(n):="&string(un))→u

par contre cette écriture risque de renvoyer une erreur, utilise y ou une autre lettre pour définir ta fonction puisque tu utilises u
exemple :
Code: Select all
Request "Pas : ?",pas
Request "Un = ?",un
Request "De combien en combien ?",cb
expr("y(n):="&string(un))
0→n
0→u
While u≤pas
  n+cb→n
  y(n)→u
EndWhile
Disp "Un ≥ A au rang : ",n

Re: conversion BASIC z80 -> BASIC nspire

Unread postPosted: 23 Feb 2016, 16:52
by Ewues.
Image

hum ?