Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » Casio Basic Web Interpreter
Krevo_ En ligne Maître du Puzzle Points: 412 Défis: 2 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_


Précédente 1, 2, 3, 4, 5 ··· 7, 8, 9 Suivante
Lephenixnoir En ligne Administrateur Points: 24673 Défis: 170 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.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Scientifix Hors ligne Membre Points: 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_ En ligne Maître du Puzzle Points: 412 Défis: 2 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.

Casio Basic Web Interpreter, c'était le basic Casio dans votre navigateur web !
Scientifix Hors ligne Membre Points: 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
Silaxe Hors ligne Membre Points: 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?
Lephenixnoir En ligne Administrateur Points: 24673 Défis: 170 Message

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


Le prog2 a plutôt une vitesse semblable... ce serait vraiment pratique ça.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Krevo_ En ligne Maître du Puzzle Points: 412 Défis: 2 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.
Casio Basic Web Interpreter, c'était le basic Casio dans votre navigateur web !
Lephenixnoir En ligne Administrateur Points: 24673 Défis: 170 Message

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


Ben oui parce que tu ajoutes des timeout() en différé...
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Krevo_ En ligne Maître du Puzzle Points: 412 Défis: 2 Message

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


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


+1
Casio Basic Web Interpreter, c'était le basic Casio dans votre navigateur web !
Purobaz Hors ligne Membre d'honneur Points: 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_ En ligne Maître du Puzzle Points: 412 Défis: 2 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)
Casio Basic Web Interpreter, c'était le basic Casio dans votre navigateur web !
Lepianoteur Hors ligne Membre Points: 217 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
Lephenixnoir En ligne Administrateur Points: 24673 Défis: 170 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 ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Krevo_ En ligne Maître du Puzzle Points: 412 Défis: 2 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 ..
Casio Basic Web Interpreter, c'était le basic Casio dans votre navigateur web !
Lephenixnoir En ligne Administrateur Points: 24673 Défis: 170 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.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Krevo_ En ligne Maître du Puzzle Points: 412 Défis: 2 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)
Casio Basic Web Interpreter, c'était le basic Casio dans votre navigateur web !
Kikoodx Hors ligne Ancien labélisateur Points: 3039 Défis: 11 Message

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


Ça me donne envie d'essayer...
Le lien est down ?
ouais ouais
Krevo_ En ligne Maître du Puzzle Points: 412 Défis: 2 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/
Casio Basic Web Interpreter, c'était le basic Casio dans votre navigateur web !
Lephenixnoir En ligne Administrateur Points: 24673 Défis: 170 Message

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


C'est mieux, bien joué !
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Kikoodx Hors ligne Ancien labélisateur Points: 3039 Défis: 11 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é
ouais ouais
Hackcell Hors ligne Maître du Puzzle Points: 1532 Défis: 11 Message

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


Sur mon tel sa marche bien... T'utilise un vrai navigateur ??
Précédente 1, 2, 3, 4, 5 ··· 7, 8, 9 Suivante

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 159 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