Jump to content
Undeath

Brainfuck [ LIMBAJ de PROGRAMARE ]

Recommended Posts

Nu, nu te-am injurat. Brainfuck este, efectiv, un limbaj de programare.

Face parte din categoria limbajelor de programare ezoterice, adica este mai mult un concept decat un limbaj din care pot iesi aplicatii adevarate.

Concepte brainfuck

Conceptele care guverneaza Brainfuck nu sunt chiar asa de greu de inteles, dar programele sunt mult mai greu de scris sau de citit decat in C sau in alte limbaje.

In primul rand, Brainfuck functioneaza pe baza unor celule de memorie. Fiecare celula contine un numar. La inceput numarul este 0 (zero), dar poate fi incrementat cu operatorul + sau decrementat cu – (minus) teoretic de oricate ori vrei. Se poate sari de la o celula la o alta, invecinata, cu < (se muta la celula din stanga) sau > (se muta la celula din dreapta).

Mai exista doi operatori pentru citire si afisare. Citirea de la tastatura se face cu , (virgula), iar scrierea cu . (punct). Scrierea caracterului inseamna ca se transforma numarul din celula in reprezentarea ASCII (de exemplu pentru 65 va scrie ‘A’). La fel, citirea de la tastatura inseamna ca tasta apasata se transforma in cod ASCII si se “depoziteaza” in celula.

Pe langa aceste 6 semne, alfabetul Brainfuck mai contine si paranteze drepte ( [ si ] ). Aceasta este singura forma de bucla disponibila in Brainfuck. In principiu “[" inseamna ca instructiunea urmatoare este executata doar daca celula curenta NU este goala (nu contine zero), altfel se duce la paranteza inchisa "]” corespondenta.

Puteti sa va ganditi la aceste celule ca la niste borcane cu boabe de fasole. Cu parantezele unghiulare (< si >) va mutati de la un borcan la altul. Cu plus (+) puneti un bob in borcanul la care sunteti, cu (-) scoateti bobul. Cu virgula (,) puneti cate boabe vreti in borcan, iar cu punct (.) numarati si scrieti pe hartie.

Acestia 8 sunt singurii operatori si singurele caractere recunoscute de un eventual compilator de Brainfuck. Orice alte caractere ar trebui ignorate.

Iata o sinteza:

< Merge la celula (borcanul) din stanga.

> Merge la celula (borcanul) din dreapta.

+ Adauga o unitate (un bob) in borcanul curent.

- Scade o unitate (un bob) din borcanul curent.

. Afiseaza caracterul ASCII corespunzator valorii din celula.

, Valoarea citita (tasta apasata) este depusa in celula.

[ Incepe/Continua bucla daca celula nu e goala (!=0).

] Sare la inceputul buclei.

Testeaza Brainfuck

Daca va tenteaza sa va jucati, am scris un interpretor Brainfuck in PHP. Diferenta fata de un eventual interpretor real este ca nu am implementat nicio functie care sa trateze operatorul de citire (virgula), deci functioneaza numai pentru afisare.

Epilog

Brainfuck nu este interesant pentru crearea pentru productie a unor programe, ci pentru antrenarea creierului pentru conceperea algoritmilor. De exemplu, puteti incerca sa realizati mici programele cum ar fi o secventa care simuleaza un IF din limbajele superioare, sau secvente pentru adunarea/scaderea/inmultirea/impartirea a doua numere intregi.

Brainfuck este un limbaj de programare cu reguli foarte stricte. Iti poti antrena talentul in programare folosindu-te numai de aceste reguli pentru crearea de programele cat mai complexe

sursa : Brainfuck - Scoala Web

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...