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 :
* 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 ! =)
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)
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)
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