Skip to main content

Brainfuck Tartalomjegyzék A nyelv szerkezete Példaprogramok Hello World Két megadott byte összeadása Jegyzetek Források További információk Kapcsolódó szócikkek Navigációs menüellenőrizveBFeredetibőlJavaScript nyelven írt BrainFuck értelmező.Webes BrainFuck értelmező.Másik webes BrainFuck értelmező és gépikódú fordító.halott linkBrainfuck – An Eight-Instruction Turing-Complete Programming LanguageBrainfuck interpreter with integrated debugger (IDE) for Windowsbkil ASCII BF interpretere

Ezoterikus programozási nyelvek


programozási nyelvezoterikus programozási nyelvangolAmigafordítóprogramotASCIIpolyglot












Brainfuck




A Wikipédiából, a szabad enciklopédiából








Ugrás a navigációhoz
Ugrás a kereséshez
















brainfuck
Paradigma
ezoterikus
Jellemző kiterjesztés
.b, .bf
Megjelent
1993
Tervező
Urban Müller
Fejlesztő
Urban Müller
Hatással volt rá

.mw-parser-output .plainlist ulline-height:inherit;list-style:none none;margin:0;padding:0.mw-parser-output .plainlist ul limargin-bottom:0
  • P′′

  • FALSE


Befolyásolt nyelvek
P′′, FALSE



A Brainfuck programozási nyelv egy nyolc utasítást tartalmazó Turing-teljes[1](Turing-complete) ezoterikus programozási nyelv. A Brainfuck szó az angol brain (=agy) és fuck (=szexuálisan közösülni, durván behatolni) szavakból áll össze, ami a programok nehéz megírására utal.


A nyelvet Urban Müller készítette Amiga OS 2.0 alá azzal a céllal, hogy olyan Turing-nyelvet hozzon létre, amire a lehető legkisebb fordítóprogramot meg tudja írni. (Ez eredetileg 240 byte hosszú volt, de híresztelések szerint sikerült később 200 byte alatt megírnia.)


A Turing-teljes nyelvekkel minden lehetséges program megírható. Mivel ez a lehetséges programozási módok közül az egyik legnehezebb, legátláthatatlanabb, ezért kaphatta a nyelv az „agycseszegető” nevet (finoman fordítva).




Tartalomjegyzék





  • 1 A nyelv szerkezete


  • 2 Példaprogramok

    • 2.1 ASCII


    • 2.2 Echo


    • 2.3 Fordít


    • 2.4 TOP-BOT



  • 3 Hello World


  • 4 Két megadott byte összeadása


  • 5 Jegyzetek


  • 6 Források


  • 7 További információk


  • 8 Kapcsolódó szócikkek




A nyelv szerkezete


A Brainfuck nyelvnek egy univerzális byte mutatója van, aminek a neve „pointer”, ami szabadon mozoghat egy 30 000 byte nagyságú tömbben, melynek alapértékei nullák. A pointer a tömb elején indul.


A nyelv nyolc parancsát egy-egy karakter reprezentálja:



















>  
A pointer növelése eggyel
<A pointer csökkentése eggyel
+A pointernél levő byte növelése eggyel
-A pointernél levő byte csökkentése eggyel
.A pointernél levő byte kiírása
,Byte bekérése és a pointernél tárolása
[Ugrás a következő, megfelelő ] jel utánig, ha a pointer alatti byte nulla.
]Ugrás az előző, megfelelő [ jelig.


Példaprogramok


A legtöbb Brainfuck program több száz, vagy több ezer karakterből áll. Íme két extrém pici program, ami igazából semmi hasznosat nem csinál a bemutatáson túl.



ASCII


Az alábbi program kiírja az ASCII karakterkészletet; szerzője Jeffry Johnston, 2001


.+[.+]


Echo


Ez a program minden beadott karaktert kiír addig, míg egy ASCII 255 karaktert nem kap.


,+[-.,+]


Fordít


A beadott karaktereket kiadja ellensorrendben (enter/soremel=10).


+[>,----------]<-[+++++++++++.<-]

A következő példa ugyanazt csinálja mint az előző, de csak akkor működik, ha a fordító/interpreter az entert 0-vá alakítja (így nem kell sem levonni, sem hozzáadni 10-et, mint az előbb).


>,[>,]<[.<]


TOP-BOT


Egy szimpla polyglot, amit 'a' és 'b' karakterrel hajtunk [80x25].
A program Turbo Pascal és BrainFuck nyelven is lefordul, és az eredménye azonos)


program TopBot;
uses
Crt;
var
Top: char;
Bot: char;
Ch: char;
i: word;
begin
Top := #47; >>>+++ +++[<++++ ++++[<+<+>>-]>-] <<-<-->
Bot := #46;
repeat [
for i := 1 to 80 do >++++ ++++[<..... .....>-]
Write(Top);
for i := 1 to 1919 do >> ++++ +++++[<+++ ++++[<+++ +++[<<.. ...>>-] >-] >-]
Write(Bot); << +++ [<<.... .....>>-] <<..>>

Ch := ReadKey; >>>,[<+<+<+>>>-]
Write(Ch);
case Ch of +++++ +++++ [>+++++ +++++[<<-<->>>-]<-]
'a': Inc(Top); +< +++[>[-]<-]>[<<<<+>>>>-]<
'b': Inc(Bot); +< ++ [>[-]<-]>[<<<<+>>>>-]<
#27: Top := #0; +++[<---- ----->-] +< [>[-]<-]>[<<[-]<[-]>>>-]<<
end;
until Top = #0; ]
end.


Hello World


++++++++++
[
>+++++++
>++++++++++
>+++
>+
<<<<-
]
>++. 'H'
>+. 'e'
+++++++. 'l'
. 'l'
+++. 'o'
>++. ' '
<<+++++++++++++++. 'W'
>. 'o'
+++. 'r'
------. 'l'
--------. 'd'
>+. '!'

Egy sorban:


++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.


Két megadott byte összeadása


, 		#0 feltöltése
> pointer növelése
, #1 feltöltése

[ ciklus kezd (ha a pointer alatti byte 0
akkor hagyja ki a következő zárójel bezár
utánig a kódot)
- #1 csökkentése
< pointer csökkentése
+ #0 növelése
> pointer növelése
] ciklus vége

< pointer csökkentése
. #0 kiírása

Egy sorban:


,>,[-<+>]<.


Jegyzetek



  1. BME EET: BF, 2009. január 17. [2012. június 27-i dátummal az eredetiből archiválva]. (Hozzáférés: 2012. július 1.)




Források



További információk


  • JavaScript nyelven írt BrainFuck értelmező.

  • Webes BrainFuck értelmező.


  • Másik webes BrainFuck értelmező és gépikódú fordító.[halott link]

  • Brainfuck – An Eight-Instruction Turing-Complete Programming Language

  • Brainfuck interpreter with integrated debugger (IDE) for Windows

  • bkil ASCII BF interpretere


Kapcsolódó szócikkek


  • Ezoterikus programozási nyelv

  • Malbolge programozási nyelv


  • InformatikaInformatikai portál
    • összefoglaló, színes tartalomajánló lap








A lap eredeti címe: „https://hu.wikipedia.org/w/index.php?title=Brainfuck&oldid=21395885”













Navigációs menü


























(RLQ=window.RLQ||[]).push(function()mw.config.set("wgPageParseReport":"limitreport":"cputime":"0.180","walltime":"1.701","ppvisitednodes":"value":1073,"limit":1000000,"ppgeneratednodes":"value":0,"limit":1500000,"postexpandincludesize":"value":10420,"limit":2097152,"templateargumentsize":"value":2273,"limit":2097152,"expansiondepth":"value":12,"limit":40,"expensivefunctioncount":"value":1,"limit":500,"unstrip-depth":"value":0,"limit":20,"unstrip-size":"value":12299,"limit":5000000,"entityaccesscount":"value":1,"limit":400,"timingprofile":["100.00% 1664.272 1 -total"," 7.12% 118.441 1 Sablon:Programozási_nyelv_infobox"," 3.04% 50.535 1 Sablon:Infobox/Kép"," 2.32% 38.618 1 Sablon:Halott_link"," 1.96% 32.679 14 Sablon:Infobox/Általános"," 1.95% 32.490 1 Sablon:Fix"," 1.95% 32.408 1 Sablon:Jegyzetek"," 1.77% 29.523 2 Sablon:Category_handler"," 1.69% 28.097 9 Sablon:Wikidata"," 1.69% 28.045 2 Sablon:References"],"scribunto":"limitreport-timeusage":"value":"0.052","limit":"10.000","limitreport-memusage":"value":1549295,"limit":52428800,"cachereport":"origin":"mw1254","timestamp":"20190823064036","ttl":2592000,"transientcontent":false););"@context":"https://schema.org","@type":"Article","name":"Brainfuck","url":"https://hu.wikipedia.org/wiki/Brainfuck","sameAs":"http://www.wikidata.org/entity/Q244627","mainEntity":"http://www.wikidata.org/entity/Q244627","author":"@type":"Organization","name":"Contributors to Wikimedia projects","publisher":"@type":"Organization","name":"Wikimedia Foundation, Inc.","logo":"@type":"ImageObject","url":"https://www.wikimedia.org/static/images/wmf-hor-googpub.png","datePublished":"2004-03-09T17:33:33Z","dateModified":"2019-06-03T17:01:13Z"(RLQ=window.RLQ||[]).push(function()mw.config.set("wgBackendResponseTime":153,"wgHostname":"mw1244"););

Popular posts from this blog

ParseJSON using SSJSUsing AMPscript with SSJS ActivitiesHow to resubscribe a user in Marketing cloud using SSJS?Pulling Subscriber Status from Lists using SSJSRetrieving Emails using SSJSProblem in updating DE using SSJSUsing SSJS to send single email in Marketing CloudError adding EmailSendDefinition using SSJS

Кампала Садржај Географија Географија Историја Становништво Привреда Партнерски градови Референце Спољашње везе Мени за навигацију0°11′ СГШ; 32°20′ ИГД / 0.18° СГШ; 32.34° ИГД / 0.18; 32.340°11′ СГШ; 32°20′ ИГД / 0.18° СГШ; 32.34° ИГД / 0.18; 32.34МедијиПодациЗванични веб-сајту

19. јануар Садржај Догађаји Рођења Смрти Празници и дани сећања Види још Референце Мени за навигацијуу