Page 1 of 1

Erreur syntaxe en attachant une formule à une liste

Unread postPosted: 16 Jan 2016, 00:21
by Barahir
Bonjour à tous,

J'obtiens une erreur syntaxe qui me renvoie à la ligne de code suivante en exécutant un programme en Ti-Basic sur ma Ti-83+ (ligne 30 dans le programme principal) :
Code: Select all
"{15+6L₂(1)+int((L₂(1)-1)/3),2-6L₂(2)-int(1/3(L₂(2)-1→ʟCOORR


Cependant, au lieu de me renvoyer à la ligne de code à l'intérieur du programme, la calculatrice affiche l'instruction sur l'écran d’accueil (voir le fichier joint). Encore plus étrange, lorsque j'appuie simplement sur :f105: pour exécuter cette instruction, aucune erreur syntaxe ne survient, et je peux ensuite vérifier que la liste a bien été attachée à la formule.

J'ai donc essayé de déterminer l'origine du bug à l'aide de pauses, et je me suis rendu compte que le programme crashait à l'appel d'une seconde liste (que je met dans Ans) (ligne 38 dans le programme principal) :
Code: Select all
ʟθRECT


Attachée elle aussi à une formule en fonction de la première liste (ligne 32 dans le programme principal) :
Code: Select all
"{2,⁻1,ʟCOORR(1),ʟCOORR(2),4,4→ʟθRECT


J'ai vérifié, il ne semble pas y avoir d'erreur syntaxe et je ne touche pas aux listes après leurs définitions. Quelqu'un aurait-il une idée sur l'origine du bug?
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Le code complet, si vous voulez essayer de comprendre :
Le programme principal :
Show/Hide spoilerAfficher/Masquer le spoiler
Code: Select all
//---------------Réglage de l'écran---------------
0:prgmGRAPHWIN
//
//---------------Affichage du quadrillage---------------
For(A,0,18,6
For(B,0,38,19
Line(20+A+B,⁻3,20+A+B,⁻59
Line(20,⁻3-A-B,76,⁻3-A-B
End
End
Line(19,⁻2,19,⁻60
Line(77,⁻60,19,⁻60
Line(19,⁻2,77,⁻2
Line(77,⁻60,77,⁻2
//
//---------------Définition de variables---------------
//  B: joueur qui joue
0→B
//  L1: extremums des cases parcourables
{1,9,1,9→ʟXTRM
//  [A]: matrice représentant le plateau 9*9
{9,9→dim([A]
Fill(0,[A]
//  [B]: matrice représentant le plateau 3*3
{3,3→dim([B]
Fill(0,[B]
//  ʟCOORM: coordonnées de la case dans la matrice
"{int((ʟXTRM(1)+ʟXTRM(2))/2),int(0.5(ʟXTRM(3)+ʟXTRM(4→ʟCOORM
//  ʟCOORR: les coordonnées du coin supérieur gauche de la case en action dans le repère
"{15+6ʟCOORM(1)+int((ʟCOORM(1)-1)/3),2-6ʟCOORM(2)-int(1/3(ʟCOORM(2)-1→ʟCOORR
//  ʟθRECT: paramètres pour prgmRECTGNL pour afficher le curseur
"{2,⁻1,ʟCOORR(1),ʟCOORR(2),4,4→ʟθRECT
//
//---------------Lancement du jeu---------------
While 1
//  A: getKey
0→A
ʟθRECT
prgmRECTNGL
Repeat A=105
0→A
Repeat A≠0
getKey→A
End
ʟθRECT
prgmRECTNGL
If A=24 and ʟXTRM(1)<ʟCOORM(1
ʟCOORM(1)-1→ʟCOORM(1
If A=25 and ʟXTRM(3)<ʟCOORM(2
ʟCOORM(2)-1→ʟCOORM(2
If A=26 and ʟXTRM(2)>ʟCOORM(1
ʟCOORM(1)+1→ʟCOORM(1
If A=34 and ʟXTRM(4)>ʟCOORM(2
ʟCOORM(2)+1→ʟCOORM(2
ʟθRECT
prgmRECTNGL
End
End


prgmPTCOOR :
Show/Hide spoilerAfficher/Masquer le spoiler
Code: Select all
Ans→θP2C
If 0=ʟθP2C(1
Then
{15+6ʟθP2C(2)+int((ʟθP2C(2)-1)/3),2-6ʟθP2C(3)-int(1/3(ʟθP2C(3)-1
Return
Else
{(ʟθP2C(2)-20-int((ʟθP2C(2)-20)/19))/6,1/6(ʟθP2C(3)+3+int(1/19(ʟθP2C(3)+3
Return
End



prgmRECTNGL :
Show/Hide spoilerAfficher/Masquer le spoiler
Code: Select all
Ans→ʟθRECT
//Afficher
If 0=ʟθRECT(1
Then
//  le pixel
If 1=ʟθRECT(2
Then
For(θ,ʟθRECT(3),ʟθRECT(3)+ʟθRECT(5
For(Z,ʟθRECT(4),ʟθRECT(4)+ʟθRECT(5
Pxl-On(θ,Z
End
End
//  le point
Else
For(θ,ʟθRECT(3),ʟθRECT(3)+ʟθRECT(5
For(Z,ʟθRECT(4),ʟθRECT(4)-ʟθRECT(5),⁻1
Pt-On(θ,Z
End
End
End
//Effacer
Else
If 1=ʟθRECT(1
Then
//  le pixel
If 1=ʟθRECT(2
Then
For(θ,ʟθRECT(3),ʟθRECT(3)+ʟθRECT(5
For(Z,ʟθRECT(4),ʟθRECT(4)+ʟθRECT(5
Pxl-Off(θ,Z
End
End
//  le point
Else
For(θ,ʟθRECT(3),ʟθRECT(3)+ʟθRECT(5
For(Z,ʟθRECT(4),ʟθRECT(4)-ʟθRECT(5),⁻1
Pt-Off(θ,Z
End
End
End
//Inverser
Else
//  le pixel
If 1=ʟθRECT(2
Then
For(θ,ʟθRECT(3),ʟθRECT(3)+ʟθRECT(5
For(Z,ʟθRECT(4),ʟθRECT(4)+ʟθRECT(5
Pxl-Change(θ,Z
End
End
//  le point
Else
For(θ,ʟθRECT(3),ʟθRECT(3)+ʟθRECT(5
For(Z,ʟθRECT(4),ʟθRECT(4)-ʟθRECT(5),⁻1
Pt-Change(θ,Z
End
End
End
End
End

Re: Erreur syntaxe en attachant d'une formule à une lis

Unread postPosted: 16 Jan 2016, 00:24
by Hamza.S
c'est à cause des guillemets, pour les listes c'est juste {
quand ça commence par " il faut utiliser les Str (Chn)

Re: Erreur syntaxe en attachant d'une formule à une lis

Unread postPosted: 16 Jan 2016, 10:55
by Barahir
Hamza.S wrote:c'est à cause des guillemets, pour les listes c'est juste {
quand ça commence par " il faut utiliser les Str (Chn)


Les guillemets permettent d'attacher une formule à une liste. Considère le code suivant :
Code: Select all
{1,2,3→L₁
"2L₁→L₂
Disp L₂
{4,5,6→L₁
Disp L₂
Le programme affichera d'abord {2,4,6} au premier Disp puis {8,10,12} au second.

Un autre exemple :
Code: Select all
{1,2,3→L₁
"{3L₁(2),2L₁(3),L₁(1→L₂
Disp L₂
{4,5,6→L₁
Disp L₂
Le programme affichera d'abord {6,6,1} au premier Disp puis {15,12,4} au second.

Re: Erreur syntaxe en attachant une formule à une liste

Unread postPosted: 16 Jan 2016, 11:15
by Hamza.S
je ne connaissait pas cette astuce merci j'ai apprit quelque chose.
par contre j'ai remarqué quelque chose sur le capture écran il manque le petit ʟ après le sto
tu as écrit ça :
Code: Select all
"{15+6L₂(1)+int((ʟCOORM(1)-1)/3),2-6ʟCOORM(2)-int(1/3(ʟCOORM(2)-1→COORR

ça ne devrait pas être ça par hasard?
Code: Select all
"{15+6L₂(1)+int((ʟCOORM(1)-1)/3),2-6ʟCOORM(2)-int(1/3(ʟCOORM(2)-1→ʟCOORR

Re: Erreur syntaxe en attachant une formule à une liste

Unread postPosted: 16 Jan 2016, 11:36
by Barahir
Hamza.S wrote:je ne connaissait pas cette astuce merci j'ai apprit quelque chose.
par contre j'ai remarqué quelque chose sur le capture écran il manque le petit ʟ après le sto
tu as écrit ça :
Code: Select all
"{15+6L₂(1)+int((ʟCOORM(1)-1)/3),2-6ʟCOORM(2)-int(1/3(ʟCOORM(2)-1→COORR

ça ne devrait pas être ça par hasard?
Code: Select all
"{15+6L₂(1)+int((ʟCOORM(1)-1)/3),2-6ʟCOORM(2)-int(1/3(ʟCOORM(2)-1→ʟCOORR


C'est quelque chose que je n'arrive pas à expliquer non plus, j'avais mis cette ligne de code dans le programme au début pour économiser un octet, le ʟ n'étant pas nécessaire :
Code: Select all
"{15+6L₂(1)+int((ʟCOORM(1)-1)/3),2-6ʟCOORM(2)-int(1/3(ʟCOORM(2)-1→COORR
Mais étant donné que ça ne marchait pas, j'ai rajouté le ʟ, au cas où il serait à l'origine du bug. Sauf que le message d'erreur me renvoie toujours au code initial, et ce même après un ClrAllLists ou même un reset de toutes les données.

Re: Erreur syntaxe en attachant une formule à une liste

Unread postPosted: 19 Jan 2016, 17:22
by Bisam
As-tu essayé de mettre toutes les parenthèses et guillemets manquants pour vérifier que ce n'est pas bêtement une erreur du parseur ?