mirror of
https://github.com/adambard/learnxinyminutes-docs.git
synced 2024-12-23 17:41:41 +00:00
Brainfuck French translation added
This commit is contained in:
parent
9fe68559c0
commit
9f2d4d8027
87
fr-fr/brainfuck-fr.html.markdown
Normal file
87
fr-fr/brainfuck-fr.html.markdown
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
---
|
||||||
|
language: brainfuck
|
||||||
|
filename: learnbrainfuck-fr.bf
|
||||||
|
contributors:
|
||||||
|
- ["Prajit Ramachandran", "http://prajitr.github.io/"]
|
||||||
|
- ["Mathias Bynens", "http://mathiasbynens.be/"]
|
||||||
|
translators:
|
||||||
|
- ["Baptiste Fontaine", "http://bfontaine.net"]
|
||||||
|
lang: fr-fr
|
||||||
|
---
|
||||||
|
|
||||||
|
Brainfuck (sans majuscule à part au début d’une phrase) est un langage
|
||||||
|
Turing-complet extrêmement simple avec seulement 8 commandes.
|
||||||
|
|
||||||
|
```
|
||||||
|
Tout caractère en dehors de "><+-.,[]" (en dehors des guillements) est ignoré.
|
||||||
|
|
||||||
|
Brainfuck est représenté par un tableau de 30 000 cellules initialisées à 0 et
|
||||||
|
un pointeur de données pointant sur la cellule courante.
|
||||||
|
|
||||||
|
Il y a huit commandes :
|
||||||
|
+ : Incrémente la valeur de la cellule courante de un.
|
||||||
|
- : Décrémente la valeur de la cellule courante de un.
|
||||||
|
> : Déplace le pointeur de données sur la cellule suivante (à droite).
|
||||||
|
< : Déplace le pointeur de données sur la cellule précédente (à gauche).
|
||||||
|
. : Affiche la valeur ASCII de la cellule courante (par ex. 65 = 'A').
|
||||||
|
, : Lit un caractère et le place dans la cellule courante.
|
||||||
|
[ : Si la valeur dans la cellule courante vaut 0, saute au ] correspondant.
|
||||||
|
Sinon, continue avec la commande suivante.
|
||||||
|
] : Si la valeur dans la cellule courante vaut 0, continue avec la commande
|
||||||
|
suivante. Sinon, retourne au [ correspondant.
|
||||||
|
|
||||||
|
[ et ] forment une boucle « tant que » (« while »). Ils doivent évidemment
|
||||||
|
aller par paires.
|
||||||
|
|
||||||
|
Regardons quelques programmes simples en brainfuck.
|
||||||
|
|
||||||
|
++++++ [ > ++++++++++ < - ] > +++++ .
|
||||||
|
|
||||||
|
Ce programme affiche la lettre 'A'. Il commence par incrémenter la première
|
||||||
|
cellule à 6. Il entre ensuite dans une boucle et se déplace sur la seconde
|
||||||
|
cellule. Il l’incrémente 10 fois, retourne sur la première cellule, et la
|
||||||
|
décrémente. Cette boucle est exécutée 6 fois (ce qui correspond aux 6
|
||||||
|
décrémentations de la première cellule pour la faire atteindre 0, ce qui fait
|
||||||
|
sortir de la boucle).
|
||||||
|
|
||||||
|
À ce moment-là, nous sommes sur la première cellule, qui a une valeur de 0,
|
||||||
|
tandis que la seconde cellule a une valeur de 60. Nous nous déplaçons sur
|
||||||
|
celle-ci, l’incrémentons 5 fois, pour une valeur de 65, et affichons sa valeur.
|
||||||
|
En ASCII, 65 correspond à 'A' donc le programme affiche 'A' dans le terminal.
|
||||||
|
|
||||||
|
, [ > + < - ] > .
|
||||||
|
|
||||||
|
Ce programme lit un caractère sur l’entrée standard et le copie dans la
|
||||||
|
première cellule. Il commence ensuite une boucle : il bouge sur la seconde
|
||||||
|
cellule, incrémente sa valeur, retourne sur la première et décrémente sa
|
||||||
|
valeur. Il continue jusqu’à ce que cette valeur soit à 0, et que la seconde
|
||||||
|
cellule contienne l’ancienne valeur de la première. Comme nous sommes sur la
|
||||||
|
première cellule à la fin de la boucle, il bouge sur la seconde et affiche sa
|
||||||
|
valeur en ASCII.
|
||||||
|
|
||||||
|
Souvenez-vous que les espaces sont uniquement pour favoriser la lisibilité,
|
||||||
|
vous pourriez tout aussi aisément écrire le programme comme ceci :
|
||||||
|
|
||||||
|
,[>+<-]>.
|
||||||
|
|
||||||
|
Essayez et devinez ce que ce programme fait :
|
||||||
|
|
||||||
|
,>,< [ > [ >+ >+ << -] >> [- << + >>] <<< -] >>
|
||||||
|
|
||||||
|
Ce programme prend deux nombres en entrée, et les multiplie.
|
||||||
|
|
||||||
|
Il commence par lire deux entrées, puis commence une boucle externe, qui a une
|
||||||
|
condition sur la première cellule. Il bouge ensuite sur la seconde, et commence
|
||||||
|
une boucle interne sur celle-ci, en incrémentant la troisième cellule. Il y a
|
||||||
|
cependant un problème : à la fin de la boucle interne, la valeur de la seconde
|
||||||
|
cellule est à zéro. Dans ce cas, la boucle interne ne fonctionnera pas une
|
||||||
|
seconde fois. Pour régler le problème, nous incrémentons aussi la quatrième
|
||||||
|
cellule, puis recopions sa valeur dans la seconde cellule.
|
||||||
|
À la fin, la troisième cellule contient le résultat de la multiplication.
|
||||||
|
```
|
||||||
|
|
||||||
|
Et voilà ce qu’est le brainfuck. Pas très dur, hein ? Pour le fun, vous pouvez
|
||||||
|
écrire vos propres programmes en brainfuck, ou écrire un interpréteur brainfuck
|
||||||
|
dans un autre langage. L’interpréteur est relativement simple à implémenter,
|
||||||
|
mais si vous êtes un masochiste, essayez d’écrire un interpréteur brainfuck en…
|
||||||
|
brainfuck.
|
Loading…
Reference in New Issue
Block a user