Seuls les membres ayant 30 points peuvent parler sur le chat.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » Casio Basic Web Interpreter
Krevo_Hors ligneMaître du PuzzlePoints: 326 Défis: 0 Message

Casio Basic Web Interpreter

Posté le 29/08/2014 15:06


Je vous présente ici mon projet "Casio Basic Web Interpreter" qui a débuté en 2014 et dont le développement se poursuis encore actuellement.

Il s'agit d'un interpréteur pour le langage basic des calculatrices Casio.
Le truc c'est que c'est un interpréteur en mode web, le rendu (=écran de la calculatrice) se fait sur un canvas HTML5.

Donc c'est ici => Casio Basic Web Interpreter



ATTENTION : ce que je partage avec vous est dans une version "alpha", il manque encore beaucoup de choses...
J'ai mis pleins de programmes en exemple.

En vrac la liste des instructions supportées :

[color1] Plot
[color1] PlotOn
PlotOff
PlotChg
[color1] PxlOn
PxlOff
PxlChg
PxlTest
[color1] Line
[color1] [sketchMode2] F-Line
[color1] [sketchMode2] Horizontal
[color1] [sketchMode2] Vertical
[color1] [sketchMode2] Circle
Plot/Line-Color color1
S-L-Normal
S-L-Dot
S-L-Broken
S-L-Thick
S-L-Normal
S-L-Thin
Cls
ClrText
ClrGraph
BG-Pict
BG-None
StoPict
RclPict
AxesOn
AxesOff
LabelOn
LabelOff
Isz
Dsz
Lbl
Goto
Prog
Return
Stop
Mcl
Range
ViewWindow
Menu
Locate
Text
expr->variable
expr->variableStart~variableEnd
variable
"string"
?->variable
"string"?->variable
Ran#
RanInt#
GetKey
MOD(
Int
Intg
Frac
Deg
Rad
Grad
sin
cos
tan
Rec
Pol
Ans
+
-
*
/
=> (If)
If/Then/Else/IfEnd
<=
>=
=
<> (or !=)
<
>
And/Or/Xor/Not
(expr)
-expr
Do/LpWhile
While/WhileEnd
For/Next
Break

{1,2,3,4}->List n
List n->List m
List Ans
x->Dim List n
Dim List n
Filen
Seq(
x->List n[expr]
List n
List n[expr]
ClrList
ClrList n
Sum list
Prod list
Mean(list
Median(list
Max(list
Min(list
SortA(list
SortD(list
Fill(value,list)
Augment(list,list)
Cuml list
?List list
Percent list
RanInt#(min,max,nb)
RanList#(int)

[[1,2,3][4,5,6]...]->Mat n
Mat n
Mat Ans
{l,c}->Dim Mat n
Dim Mat i
x->Mat n[expr,expr]
Mat n[expr,expr]
Mat n->Mat m

1 color can be Black, Blue, Red, Magenta, Green, Cyan or Yellow
2 sketchMode can be SketchNormal, SketchThick, SketchBroken, SketchDot, SketchThin


Vous trouverez les sources sur GitHub.

A bientôt.
Krevo_


Pages : Précédente1, 2, 3, 4, 5, 6, 7Suivante
LephenixnoirHors ligneAdministrateurPoints: 15767 Défis: 136 Message

Citer : Posté le 29/08/2014 15:54 | #


Il y a quelques différences avec la police d'origine aussi.
Si ça t'intéresse, il existe un pdf avec toute la police au pixel.
ScientifixHors ligneMembrePoints: 762 Défis: 30 Message

Citer : Posté le 29/08/2014 16:43 | #


Tu comptes présenter une version bêta quand ?
Si tu veux tu peux nous faire part de l'avancement de ton projet dans la revue des projet
JE SERAI ABSENT POUR 2 ANS A+

Je suis fan de Mathématiques et de Sciences en général (d'où mon nom ). Consultez mes programmes en rapport avec les Maths
--------------------------------------------------------

Calculatrice : Graph 75
Krevo_Hors ligneMaître du PuzzlePoints: 326 Défis: 0 Message

Citer : Posté le 29/08/2014 16:57 | #


alpha, bêta, ... c'est juste des noms. Après ça dépend ce que l'on met derrière.
Je compte rajouter des instructions au fil de l'eau .... et vous tenir au courant de semaine en semaine.

J'ai une vague "roadmap" en tête qui ressemble à ceci (dans l'ordre ou presque) :

- une réelle distinction écran texte / écran graphique (parce que là les chaines de caractères imprimés et les plot/line se superpose sur le même écran)
- un scroll de l'écran texte (l'ajout d'une ligne doit faire monter ce qu'il y avait déjà) v0.1.3
- ajout de ? pour recevoir de l'input utilisateur v0.1.5
- ajout de [EXE] (touche "entrée"), pour valider son input v0.1.5
- ajout pause affichage : ◢
- ajout de [EXE], pour continuer quand c'était en pause
- ajout déplacement curseur (j'ai de vieux programme comme "Démineur" basé sur un Plot x,y◢ ) , valid et recup coordonnées
- ajout affectation à un ensemble de variable genre 1->A~Z
- gestion programmes / sous-programmes (appel "Prog x", Return, ...)
- ....

C'est pas les tâches qui manquent.

Découvrez mon projet principal : Casio Basic Web Interpreter, le basic Casio dans votre navigateur web !
ScientifixHors ligneMembrePoints: 762 Défis: 30 Message

Citer : Posté le 29/08/2014 17:04 | #


Super !! le plus important c'est que toutes les commandes de programmation soient supportées par ton interpréteur et que l'interface soit la plus pratique possible pour la programmation on PC.
Sur le côté de l'écran de saisi, tu pourrais mettre des icônes de caractères pour qu'on puisse directement cliquer dessus afin qu'ils soint ajoutés au code. Ou des petits menu comme ceux accessibles sur la calculatrice ...
En tout cas, continu c'est super
JE SERAI ABSENT POUR 2 ANS A+

Je suis fan de Mathématiques et de Sciences en général (d'où mon nom ). Consultez mes programmes en rapport avec les Maths
--------------------------------------------------------

Calculatrice : Graph 75
SilaxeHors ligneMembrePoints: 809 Défis: 12 Message

Citer : Posté le 29/08/2014 17:10 | #


Est-ce que les fonctions et l'affichage graphique ont la même vitesse que sur calculatrice?
LephenixnoirHors ligneAdministrateurPoints: 15767 Défis: 136 Message

Citer : Posté le 29/08/2014 17:11 | #


Le prog2 a plutôt une vitesse semblable... ce serait vraiment pratique ça.
Krevo_Hors ligneMaître du PuzzlePoints: 326 Défis: 0 Message

Citer : Posté le 29/08/2014 17:48 | #


J'ai remarqué un bug (au moins sous Chrome) si je clique plusieurs fois sur "prog 2" ça accélère l'execution ... pour l'instant je vous le laisse comme ça.

A la base j'ai mis un setTimeout(...) javascript avec 10ms, ce qui en théorie nous donne 1 instruction executés toutes les 10ms, soit environ 100 instructions par seconde.

A terme, je mettrais des boutons de réglages de la vitesse d'execution.
Découvrez mon projet principal : Casio Basic Web Interpreter, le basic Casio dans votre navigateur web !
LephenixnoirHors ligneAdministrateurPoints: 15767 Défis: 136 Message

Citer : Posté le 29/08/2014 18:12 | #


Ben oui parce que tu ajoutes des timeout() en différé...
Krevo_Hors ligneMaître du PuzzlePoints: 326 Défis: 0 Message

Citer : Posté le 29/08/2014 18:38 | #


Lephenixnoir a écrit :
Ben oui parce que tu ajoutes des timeout() en différé...


+1
Découvrez mon projet principal : Casio Basic Web Interpreter, le basic Casio dans votre navigateur web !
PurobazHors ligneMembre d'honneurPoints: 2690 Défis: 110 Message

Citer : Posté le 29/08/2014 19:25 | #


Nice
I'll be back !
pour plus de fun
mes programmes fun
de technique
mes projets
et de Swag
les projets que je soutiens
Krevo_Hors ligneMaître du PuzzlePoints: 326 Défis: 0 Message

Citer : Posté le 31/08/2014 22:14 | #


Dernières modifs :
1. J'ai désactivé les multiplications sans opérateur * car cele faisait un bug : "B-2" était reconnu comme "B*-2" ce qui est plutôt embêtant.. j'avais modifier un peu vite la grammaire, cela nécessite + d'attention. J'y reviendrais.
2. Les goto vers un label postérieur (c'est à dire non encore rencontré) ne marchaient pas. Ceci est corrigé. Ça manque encore de msg d'erreurs clair en règle générale....


Ajouté le 04/09/2014 à 14:48 :
J'ai mis en ligne une version v0.1.5 avec :


?->var
"chaine"?->var


J'ai ajouté :
- un bouton "Stop" à coté du bouton "Execute"
- un lien vers une liste d'instructions déjà implémentées.

Ajouté le 05/11/2018 à 22:53 :
Bonjour,

Après une longue ... très longue pause, j'ai repris un peu le développement de mon programme.
Toujours situé à l'adresse http://basic.crevola.org/.

Je viens de rajouter :
- la multiplication sans opérateur * (exemple: 2B, 5(3+1), ....)
- les boucles Do/LpWhile et While/WhileEnd
- l'interprétation des symboles ≥,≤,≠,◢,⇒ et → (ce qui vous laisse le choix d'utiliser ces symboles ou leurs équivalents textuels respectivement >=, <=, <>, _, => et -> .... et accessoirement permet de copier/coller des exemples provenant de célèbre(s) site(s) web )

(Problèmes actuels :
- les réponses de type "chiffre" devraient être alignés à droite de l'écran et non à gauche
- les "syntax errors" ne précisent pas l'emplacement de l'erreur.
- les boucles Do/LpWhile et While/WhileEnd ne respectent pas le timeout de 10ms .. et sont donc paradoxalement trop rapides.
- pleins d'instructions manquantes ... mais ça c'est normal car il reste du travail)
Découvrez mon projet principal : Casio Basic Web Interpreter, le basic Casio dans votre navigateur web !
LepianoteurHors ligneMembrePoints: 214 Défis: 0 Message

Citer : Posté le 05/11/2018 23:11 | #


Génial si tu avance encore sur ton projet fait le savoir c'est intéressant
*pat pat pat pat pat pat tap tap pat* je pianote
LephenixnoirHors ligneAdministrateurPoints: 15767 Défis: 136 Message

Citer : Posté le 06/11/2018 07:18 | #


Oh j'y repensais il n'y a pas si longtemps, joli hasard ! xD

Effectivement c'est une belle machinerie. *-* Je n'arrive pas à valider les entrées avec "?", comment faut-il s'y prendre ?
Krevo_Hors ligneMaître du PuzzlePoints: 326 Défis: 0 Message

Citer : Posté le 06/11/2018 07:59 | #


Merci à tous pour vos commentaires, remarques et encouragements.

Lephenixnoir a écrit :
. *-* Je n'arrive pas à valider les entrées avec "?", comment faut-il s'y prendre ?


Normalement, tu dois taper tes chiffres puis faire 'Entrée' sur ton clavier. Si vraiment ça marche pas, j'enquêterai ..
Découvrez mon projet principal : Casio Basic Web Interpreter, le basic Casio dans votre navigateur web !
LephenixnoirHors ligneAdministrateurPoints: 15767 Défis: 136 Message

Citer : Posté le 06/11/2018 08:16 | #


Eh bien, ici dans Firefox 63 sous Linux, ça ne marche pas il semblerait.

Si ça peut t'aider, chaque fois que j'entre un chiffre ou que j'appuie sur Entrée, la console affiche une erreur ReferenceError: event is not defined dans le fichier cbi.js, ligne 85 (je suppose qu'il y a un mélange avec e, enfin j'ai déjà rencontré ça...). Les chiffres sont écrits quand même, mais Entrée ne marche pas.
Krevo_Hors ligneMaître du PuzzlePoints: 326 Défis: 0 Message

Citer : Posté le 06/11/2018 09:11 | #


Ok, merci des précisions. A l'instant, Firefox 63 sur Windows 10 même problème. (Ok sous Chrome et Edge) Je vais arranger ça...

Ajouté le 06/11/2018 à 09:24 :
... ok j'ai corrigé le bug. Merci pour ce retour. Effectivement, c'était n'importe quoi (mélange entre e et event)
Découvrez mon projet principal : Casio Basic Web Interpreter, le basic Casio dans votre navigateur web !
KikoodxHors ligneMembrePoints: 1365 Défis: 7 Message

Citer : Posté le 06/11/2018 12:35 | #


Ça me donne envie d'essayer...
Le lien est down ?
Krevo_Hors ligneMaître du PuzzlePoints: 326 Défis: 0 Message

Citer : Posté le 06/11/2018 12:57 | #


Kikoodx a écrit :
Ça me donne envie d'essayer...
Le lien est down ?


En principe non, c'est pas down. Le lien c'est toujours http://basic.crevola.org/
Découvrez mon projet principal : Casio Basic Web Interpreter, le basic Casio dans votre navigateur web !
LephenixnoirHors ligneAdministrateurPoints: 15767 Défis: 136 Message

Citer : Posté le 06/11/2018 12:59 | #


C'est mieux, bien joué !
KikoodxHors ligneMembrePoints: 1365 Défis: 7 Message

Citer : Posté le 06/11/2018 13:31 | #


Bon...
Sur mon téléphone ça me renvoie ERR_NAME_NOT_RESOLVED
Je vais essayer sur mon RPi

Ajouté le 06/11/2018 à 13:46 :
Ne fonctionne pas sur mon Raspberry Pi non plus...
Je pense que je suis cassé
HackcellHors ligneMembrePoints: 1140 Défis: 6 Message

Citer : Posté le 06/11/2018 18:51 | #


Sur mon tel sa marche bien... T'utilise un vrai navigateur ??
I usually spend meow time cosplaying as a diligent student...
So it can get pretty stressful.
That's exactly why PC is such a happy place for meow to be ⭐
Pages : Précédente1, 2, 3, 4, 5, 6, 7Suivante

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2019 | Il y a 45 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd