Page 1 of 2

Problème Syntaxe nspire cx cas

Unread postPosted: 20 Sep 2014, 15:30
by Libs
Bonjour tout le monde.

Je me suis amusé a faire un petit programme, cependant c'est l'un de mes premiers et ma Nspire m'indique une erreur syntaxe. :'(
Pouvez vous me le corriger et m'expliquer me fautes?
Code: Select all
Define poly2(a,b,c)=
Prgm
:Disp "1 = Determiner la forme canonique"
:Disp "2 = Etudier les variations de la fonction"
:Disp "3 = Resoudre une equation "
:Disp "4 = Resoudre une inequation"
:Disp "5 = Determiner la forme factorise"
:Request "Que faire?",question
:Request "a=",a
:Request "b=",b
:Request "c=",c
:α:=((-b)/(2*a))
:β:=((b^(2)-4*ac)/(4*a^(2)))
:If question=1 Then
:α:=((-b)/(2*a))
:Disp "et"
:β:=((b^(2)-4*ac)/(4*a^(2)))
:Disp"Donc la forme cannonique de f est f(x)=" ,a"(x-",α")^2 +",β
:EndIf
:If question=2 Then
:If a>0  Then
: disp ,a ",a>0 donc la fonction f est decroissante sur l'intervale ]-∞;",β"] et croissante sur l'intervale [",β";+∞]"
:Else
: disp ,a ",a<0 donc la fonction f est croissante sur l'intervale ]-∞;",β"] et decroissante sur l'intervale [",β";+∞]" 
:EndIf
:EndIf
:If question=3 Then
:Δ:=b^(2)-4*a*c
:If Δ>0 Then
:disp"△>0, donc l'equation a 2 sollutions"
:disp "x1 = ((-b-√(△))/(2a)) = "
:y:=((-b-√(Δ))/(2*a))
:disp ,y
:disp "x2 = ((-b+√(△))/(2a)) = " 
:w:=((-b+√(Δ))/(2*a))
:Disp "L'ensemble des solutions est :"
:Disp "S={",y ";",w "}"
:EndIf
:If Δ=0 Then
:Disp"△=0, donc l'equation a une seule solution"
:v:=((-b)/(2*a))
:Disp "x0=",v "D'ou S=",v
:EndIf
:If Δ<0 Then
:Disp "△ est negatif, l'equation n'a donc pas de solution"
:EndIf
:EndIf
:If question=4 Then
:Δ:=b^(2)-4*a*c
:If Δ>0 Then
:Disp"△>0, l'equation a deux solutions"
:disp "x1 = ((-b-√(△))/(2a)) = "
:y:=((-b-√(Δ))/(2*a)) 
:w:=((-b+√(Δ))/(2*a))
:If a>0 Then
:disp"la fonction est positive sur ]-∞;" ,y "] , negative sur [",y ";" ,w ,"] et positive sur ]" ,w "; +∞["
:EndIf
:If a<0 Then
:disp"la fonction est negative sur ]-∞;" ,y "] , positive sur [",y ";" ,w ,"] et negative sur ]" ,w "; +∞["
:EndIf
:EndIf
:If ∆=0 Then
: u:=((-b)/(2*a))
: If a>0 Then
: disp"la fonction est + sur ]-∞;",u "et + sur ]",u";-∞["
:EndIf
:If a<0 Then
:  disp"la fonction est negative sur ]-∞;",u "et negative sur ]",u";-∞["
:EndIf
:EndIf
:If Δ<0 Then
:If a>0 Then
:disp"La fonction est toujours positive "
:EndIf
:If a<0 Then
:disp"La fonction est toujours negative "
:EndIf
:EndIf
:EndIf
:If question=5 Then
: Δ=b^(2)-4a*c
:    t:=((-b-√(Δ))/(2a))
:    s:=((-b+√(Δ))/(2a))
: If Δ>0 Then
:disp "La forme factorise est " ,a"(x-",t")(x-",s")"
:   EndIf
:If Δ=0 Then
:  r:=((-b)/(2*a))
:  disp "La forme factorise est " ,a"(x-",r")^2"
:  If Δ<0 Then
:    disp"pas de factorisation a retenir"
:  EndIf
:EndIf
:EndIf
:EndPrgm


Merci Infiniment :)

Re: Problème Syntaxe nspire cx cas

Unread postPosted: 20 Sep 2014, 15:50
by critor
Lorsque ça t'indique l'erreur de syntaxe, dans l'éditeur cela devrait déplacer le curseur vers l'endroit problématique.

De façon évident déjà tous les "disp ,a" ou "disp ,y" à remplacer par "disp a," et "disp y,".

Re: Problème Syntaxe nspire cx cas

Unread postPosted: 20 Sep 2014, 16:07
by Libs
Merci beaucoup! malheureusement, j'ai toujours une erreur syntaxe ...

Code: Select all
Define poly2(a,b,c)=
Prgm
:Disp "1 = Determiner la forme canonique"
:Disp "2 = Etudier les variations de la fonction"
:Disp "3 = Resoudre une equation "
:Disp "4 = Resoudre une inequation"
:Disp "5 = Determiner la forme factorise"
:Request "Que faire?",question
:Request "a=",a
:Request "b=",b
:Request "c=",c
:α:=((-b)/(2*a))
:β:=((b^(2)-4*ac)/(4*a^(2)))
:If question=1 Then
:α:=((-b)/(2*a))
:Disp "et"
:β:=((b^(2)-4*ac)/(4*a^(2)))
:Disp"Donc la forme cannonique de f est f(x)="a,"(x-"α,")^2 +"β,
:EndIf
:If question=2 Then
:If a>0  Then
: disp a, ",a>0 donc la fonction f est decroissante sur l'intervale ]-∞;"β,"] et croissante sur l'intervale ["β,";+∞]"
:Else
: disp a, ",a<0 donc la fonction f est croissante sur l'intervale ]-∞;"β,"] et decroissante sur l'intervale [",β";+∞]" 
:EndIf
:EndIf
:If question=3 Then
:Δ:=b^(2)-4*a*c
:If Δ>0 Then
:disp"△>0, donc l'equation a 2 sollutions"
:disp "x1 = ((-b-√(△))/(2a)) = "
:y:=((-b-√(Δ))/(2*a))
:disp ,y
:disp "x2 = ((-b+√(△))/(2a)) = " 
:w:=(-b+√(Δ))(2*a)
:Disp "L'ensemble des solutions est "
:Disp "S={"y, ";"w, "}"
:EndIf
:If Δ=0 Then
:Disp"△=0, donc l'equation a une seule solution"
:v:=((-b)/(2*a))
:Disp "x0="v, "D'ou S="v,
:EndIf
:If Δ<0 Then
:Disp "△ est negatif, l'equation n'a donc pas de solution"
:EndIf
:EndIf
:If question=4 Then
:Δ:=b^(2)-4*a*c
:If Δ>0 Then
:Disp"△>0, l'equation a deux solutions"
:disp "x1 = ((-b-√(△))/(2a)) = "
:y:=((-b-√(Δ))/(2*a)) 
:w:=((-b+√(Δ))/(2*a))
:If a>0 Then
:disp"la fonction est positive sur ]-∞;" y, "] , negative sur ["y, ";" w,"] et positive sur ]" w, "; +∞["
:EndIf
:If a<0 Then
:disp"la fonction est negative sur ]-∞;"y, "] , positive sur ["y, ";" w,"] et negative sur ]" w, "; +∞["
:EndIf
:EndIf
:If ∆=0 Then
: u:=((-b)/(2*a))
: If a>0 Then
: disp"la fonction est positive sur ]-∞;"u, "et positive sur ]"u,";-∞["
:EndIf
:If a<0 Then
:  disp"la fonction est negative sur ]-∞;"u,"et negative sur ]"u,";-∞["
:EndIf
:EndIf
:If Δ<0 Then
:If a>0 Then
:disp"La fonction est toujours positive "
:EndIf
:If a<0 Then
:disp"La fonction est toujours negative "
:EndIf
:EndIf
:EndIf
:If question=5 Then
: Δ=b^(2)-4a*c
:    t:=((-b-√(Δ))/(2a))
:    s:=((-b+√(Δ))/(2a))
: If Δ>0 Then
:disp "La forme factorise est "a, "(x-"t,")(x-"s,")"
:   EndIf
:If Δ=0 Then
:  r:=((-b)/(2*a))
:  disp "La forme factorise est " ,a"(x-",r")^2"
:  If Δ<0 Then
:    disp"pas de factorisation a retenir"
:  EndIf
:EndIf
:EndIf
:EndPrgm

Re: Problème Syntaxe nspire cx cas

Unread postPosted: 20 Sep 2014, 16:08
by critor
Et donc? Tu n'as toujours pas dit où se place le curseur lorsque l'erreur est signalée.

Re: Problème Syntaxe nspire cx cas

Unread postPosted: 20 Sep 2014, 16:19
by Libs
Ah oui. Désolé. Le curseur se déplace sur le If question=2 Then

Re: Problème Syntaxe nspire cx cas

Unread postPosted: 20 Sep 2014, 16:26
by critor
Si tu fais Ctrl+B dans l'éditeur de programmes, après avoir validé l'écran signalant une erreur, le curseur se déplace vers la ligne problématique.

D'où sort ton programme ?
Parce qu'il y a nombre de problèmes par rapport à la syntaxe TI-Nspire.

Même si on supprime les erreurs, il sera encore loin de fonctionner correctement.

Ca ressemble à une mauvaise (pour le moment) adaptation d'un code prévu pour une autre machine.


En attendant, dès le début:
Code: Select all
:Disp"Donc la forme cannonique de f est f(x)="a,"(x-"α,")^2 +"β,

Pas de virgule en fin de ligne.

Re: Problème Syntaxe nspire cx cas

Unread postPosted: 20 Sep 2014, 16:31
by Libs
critor wrote: De façon évident déjà tous les "disp ,a" ou "disp ,y" à remplacer par "disp a," et "disp y,".


Je débute le TI basic, mais je programe au autoit. J'ai crée le programme moi même en me disant que c'etais le meilleurs moyen d'apprendre a maitriser le basic et de m'arranger en 1ere.

Pourrais tu me corriger mes fautes? Merci d'avance.

Re: Problème Syntaxe nspire cx cas

Unread postPosted: 20 Sep 2014, 16:41
by critor
Si c'est bien la dernière version ci-dessus, encore une autre virgule à virer en fin de ligne:
Code: Select all
:Disp "x0="v, "D'ou S="v,


Une autre virgule à virer tout court:
Code: Select all
:disp ,y


Ensuite, la calculatrice râle ici à cause du delta-majuscule qui a une signification particulière selon le contexte:
Code: Select all
If ∆=0 Then

Utilise un delta-minuscule pour contourner ce problème sans avoir à modifier tous les autres delta de ton code:
Code: Select all
If δ=0 Then


Il ne devrait plus y avoir d'erreur maintenant, mais ce n'est pas prêt de marcher.

Re: Problème Syntaxe nspire cx cas

Unread postPosted: 20 Sep 2014, 17:05
by Libs
Merci beaucoup

Re: Problème Syntaxe nspire cx cas

Unread postPosted: 20 Sep 2014, 18:00
by Bisam
Voici un code corrigé, indenté, et qui, de plus, devrait faire ce que tu en attends.
J'ai aussi corrigé les fautes d'orthographe et les erreurs mathématiques, tant qu'à faire...
Enfin, j'ai raccourci quelques morceaux qui se répétaient.
Code: Select all
Define poly2(a,b,c)=
Prgm
:Local α, β, δ, x1, x2
:Disp "Étude de f(x)=", a, "x² +", b, "x +", c
:Disp "Choisissez ce que vous voulez faire :"
:Disp "1 = Déterminer la forme canonique"
:Disp "2 = Étudier les variations de la fonction"
:Disp "3 = Résoudre l'équation f(x)=0"
:Disp "4 = Déterminer le signe de f(x) (pour résoudre une inéquation)"
:Disp "5 = Déterminer la forme factorisée"
:Request "Que faire?", question
:δ:=b^(2)-4*a*c
:α:=((-b)/(2*a))
:β:=(δ/(4*a^(2)))
:If δ>0 Then
:  x1:=((-b-√(δ))/(2*a))
:  x2:=((-b+√(δ))/(2*a))
:EndIf
:If question=1 Then
:  Disp "α=", α, "et β=", β
:  Disp "Donc la forme canonique de f est f(x)=", a, "*(x - ", α, ")^2 +", β
:ElseIf question=2 Then
:  If a>0 Then
:    Disp "a=", a, ">0 donc la fonction f est décroissante sur l'intervalle ]-∞;", β, "] et croissante sur l'intervalle [", β, ";+∞["
:  Else
:    Disp "a=", a, "<0 donc la fonction f est croissante sur l'intervalle ]-∞;", β, "] et décroissante sur l'intervalle [", β, ";+∞["
:  EndIf
:ElseIf question=3 or question=4 Then
:  If δ>0 Then
:    Disp "△>0, donc l'équation a 2 solutions"
:    Disp "x1 = ((-b-√(△))/(2a)) = ", x1
:    Disp "x2 = ((-b+√(△))/(2a)) = ", x2
:    If question=3 Then
:      Disp "L'ensemble des solutions de l'équation f(x)=0 est "
:      Disp "S={", x1, ";", x2, "}"
:    Else
:      If a>0 Then
:        Disp "La fonction est positive sur ]-∞;", x1, "] , négative sur [", x1, ";", x2, "] et positive sur ]", x2, "; +∞["
:      ElseIf a<0 Then
:        Disp "La fonction est négative sur ]-∞;", x1, "] , positive sur [", x1, ";", x2, "] et négative sur ]", x2, "; +∞["
:      EndIf
:    EndIf
:  ElseIf δ=0 Then
:    Disp "△=0, donc l'équation a une seule solution"
:    Disp "x0=", α
:    If question=3 Then
:      Disp "L'ensemble des solutions de l'équation f(x)=0 est "
:      Disp "S={", α, "}"
:    Else
:      If a>0 Then
:        Disp "La fonction est toujours positive et s'annule uniquement en x=", α
:      ElseIf a<0 Then
:        Disp "La fonction est toujours négative et s'annule uniquement en x=", α
:      EndIf
:    EndIf
:  Else
:    Disp "△<0 : l'équation f(x)=0 n'a donc aucune solution réelle"
:    If question=4 Then
:      If a>0 Then
:        Disp "La fonction est toujours strictement positive"
:      ElseIf a<0 Then
:        Disp "La fonction est toujours strictement négative"
:      EndIf
:    EndIf
:  EndIf
:ElseIf question=5 Then
:  If δ>0 Then
:    Disp "La forme factorisée est ", a, "*(x - ", x1, ")*(x - ", x2, ")"
:  ElseIf δ=0 Then
:    Disp "La forme factorisée est ", a, "*(x - ", α, ")^2"
:  Else
:    Disp "Pas de factorisation à retenir"
:  EndIf
:EndIf
:EndPrgm


Pour l'utiliser, il suffit de taper poly2(1,5,6) par exemple...