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.
Menu
Calculatrices
Graph 35 à 100
Graph 25+Pro/25+E/25+E II
Graph 35+USB/75(+E)/85/95 SD
Graph 100(+)
Classpad 300/330(+)
fx-CG 10/20 (Prizm)
Classpad 400(+E)
Graph 90+E
fx-92+ SC
Liens
¤ Transférer un programme sur
sa calculatrice

¤ Vous cherchez une fonction ?
Utilitaires >> Graph 35+USB/75(+E)/85/95 SD >> Divers >> Brainfuck
Brainfuck
Version : 1.0 Taille : 836 octets Ajouté le : 2014-09-27 16:03 Modifié le : 2014-09-27 16:19
Auteur et posteur :
GildevHors ligneMembrePoints: 54 Défis: 0 Message
Planète Casio - Programme Casio - Brainfuck - gildev - Calculatrices
Nombre de visites sur cette page : 6435
Score au progrank : 35
Pas encore de note !
Vous devez être connecté(e) pour noter (inscription).
1137 téléchargements | Soumettre un test


Votre calculatrice doit posséder les chaines de caractères (Str) et Menu pour utiliser ce programme. Si vous avez une Graph 85 (SD), mettez-la à jour.
Description :

Fichier 1 : Interpréteur
Fichier 2 : Code source commenté (la coloration syntaxique du Pascal ne marche pas trop mal avec)

Plop tout le monde !

J'apporte aujourd'hui ma deuxième contribution sur Planète-Casio, avec cette fois-ci un interpréteur Brainfuck !
Vous avez peut-être déjà entendu parler de ce langage de programmation, dit ésotérique et minimaliste car composé de seulement 8 instructions. Malgré son minimalisme, c'est un langage dit "Turing-complet" (traduction littérale de l'anglais), ce qui signifie que vous pouvez écrire n'importe quel programme informatique avec ces 8 instructions (vraiment n'importe quel programme, même très complexe, bien qu'il faille être un peu fou pour le faire).

Explications du langage
Explications du langage
Si vous ne comprenez pas mes explications caothiques, ce qui est fortement compréhensible, je vous invite à aller voir chez Wikipedia. Vous trouverez également beaucoup d'autres sites parlant du Brainfuck sur internet.

Le langage se présente sous la forme d'un tableau de 30 000 cases valant 1 octet chacune (vous ne pouvez donc aller au-dessus de 255 dans une case). Vous avez un pointeur à votre disposition que vous pouvez déplacer comme bon vous semble sur n'importe quelle case du tableau. Maintenant que vous connaissez le fonctionnement général de ce langage, voici les instructions à votre disposition :

+ : Incrémente la valeur de la case pointée
- : Décrémente la valeur de la case pointée
> : Déplace le pointeur d'une case vers la droite
< : Déplace le pointeur d'une case vers la gauche
, : Demande à l'utilisateur d'entrer un caractère, son code ASCII sera stocké dans la case pointée
. : Imprime le caractère correspondant au code ASCII de la case pointée
[ : Si la valeur de la case pointée est égale à 0, saute directement au "]" suivant correspondant, sinon exécute les instructions qui suivent
] : Si la valeur de la case pointée est différente de 0, saute directement au "[" précédent correspondant, sinon exécute les instructions qui suivent

Une petite précision sur "[" et "]", ces instructions vont toujours ensemble et on préfèrera parler de "boucles". En arrivant au début de la boucle, si la valeur de la case pointée est égale à 0, on saute toutes les instructions à l'intérieur de la boucle, sinon on exécute les instructions dans la boucle et une fois arrivé au "]" correspondant, on revient au début de la boucle.


Voici le fonctionnement de mon interpréteur, qui est quelque peu différent des règles de base :
* Le tableau fait 100 cases, mais cela peut être facilement changé en modifiant la ligne
100->Dim List 1
et en remplaçant le "100" par la taille de tableau que vous souhaitez.
* L'instruction "," ne stocke pas le code ASCII du caractère entré dans la case pointée, il stocke directement le nombre entré dans la case, ce qui est, je trouve, bien plus simple. L'instruction "." fonctionne de la même façon et n'affiche pas le caractère correspondant au code ASCII stocké dans la case pointée, mais affiche directement la valeur de la case pointée. Ces deux règles rendent impossible l'affichage de texte avec cet interpréteur, cela sera peut-être modifié dans une prochaine version.
* Comme dans la version originale du Brainfuck, si la valeur d'une case est supérieure à 255, elle vaudra 0, et si la valeur d'une case est inférieure à 0, elle vaudra 255. Ça tourne en boucle. Même principe pour la position du pointeur, une fois arrivé à l'une des deux extrémités du tableau, le pointeur pointera à l'autre extrémité du tableau.
* Vous ne pouvez afficher que 5 valeurs avec "." dans votre programme Brainfuck.

Comment utiliser l'interpréteur :
Pour écrire votre programme en Brainfuck, vous devez éditer le code de l'interpréteur sur votre calculatrice et écrire votre programme dans Str 1, c'est-à-dire entre les deux guillemets qui se trouvent au début du code, c'est-à-dire sur la deuxième ligne du code (le programme Brainfuck peut être écrit sur plusieurs lignes à l'intérieur de Str 1 pour une meilleure visibilité). Cela permet de pouvoir sauvegarder votre programme et éventuellement d'en écrire plusieurs, vous pouvez tout gérer.
Une fois l'exécution de votre programme Brainfuck terminée, à l'écran seront affichées les valeurs des 15 premières cases du tableau, ainsi qu'une flèche qui montrera la case actuellement pointée à la fin du programme. Juste en dessous du tableau seront affichées les valeurs affichées par "." (5 maximum encore une fois, désolé si ce n'est pas très clair ).

Exemples de programmes Brainfuck
Exemples de programmes Brainfuck
Transférer la valeur entrée de la case 1 dans la case 2 :
, [ - > + < ]

Ajouter les deux valeurs entées et afficher le résultat :
, > , [ - < + > ] < .

Multiplier les deux valeurs entrées et afficher le résultat :
, > , <
[ - > > > + < < < ]
> > > [ - < < [ - > + < < + > ] > [ - < + > ] > ]
< < < .


Détails techniques
Détails techniques
* Utilise Str 1 pour stocker le programme Brainfuck et Str 2 pour stocker l'instruction actuellement lue
* Utilise la List 1 pour le tableau et la List 2 pour les valeurs à afficher avec "."
* Utilise la variable P comme pointeur (Pointer), la variable D pour le nombre de valeurs à afficher (Display), la variable C pour la position de l'instruction actuellement lue (Counter), la variable A comme compteur temporaire, les variables F et G pour les boucles d'affichage


Todo List
À faire :
* J'appelle cet interpréteur "semi-débugueur", car il affiche à la fin du programme la valeur des 15 premières cases ainsi que la case actuellement pointée. J'aimerai faire un interpréteur "débugueur", qui montre chaque état du tableau & pointeur à chaque instruction.
* Permettre l'affichage de caractères ASCII avec "." et pas uniquement des nombres.


Si vous avez des quelconques remarques, questions, suggestions, je suis preneur ! Merci et amusez-vous bien ! =)


Commentaires :


-florian66-Hors ligneAncien rédacteurPoints: 2384 Défis: 20 Message
Posté le 29-09-2014 à 13:07 | #
Beau programme
LegolasHors ligneAncien rédacteurPoints: 3266 Défis: 104 Message
Posté le 29-09-2014 à 13:11 | #
Il faut que j'essaie !
-florian66-Hors ligneAncien rédacteurPoints: 2384 Défis: 20 Message
Posté le 29-09-2014 à 13:13 | #
Moi aussi ça a aoe bien il me faudrait en add in
LimachiHors ligneYoutuberPoints: 2798 Défis: 67 Message
Posté le 29-09-2014 à 13:29 | #
Encore un interpréteur de brainfuck, ce langage est tellement dur mais amusant
(petit défi que j'avais fait avec le camarade valden de chez TiPlanet: faire le plus court/léger programme en brainfuck pour afficher 42)
SmashmasterHors ligneAncien modérateurPoints: 4561 Défis: 253 Message
Posté le 29-09-2014 à 13:51 | #
Limachi a écrit :
(petit défi que j'avais fait avec le camarade valden de chez TiPlanet: faire le plus court/léger programme en brainfuck pour afficher 42)

Je n'ai pas trouvé plus court pour le moment :
+++++++[- >+++++++<]>+++.--.
LimachiHors ligneYoutuberPoints: 2798 Défis: 67 Message
Posté le 29-09-2014 à 15:04 | #
bon bah, je crois que smash a gagné (si tu as utilisé la racine carré de 49 comme base, je crois que tu as le code que j'avais trouvé)
GildevHors ligneMembrePoints: 54 Défis: 0 Message
Posté le 30-09-2014 à 19:35 | #
Merci pour vos commentaires, faudrait que j'essaye de le faire marcher avec les caractères ASCII.

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