برینفاک دستورها مثالها منابع منوی ناوبریhttp://www.muppetlabs.com/~breadbox/bf/http://pferrie.host22.com/misc/brainfck.htm
زبانهای برنامهنویسی ساختهشده در ۱۹۹۳ (میلادی)زبانهای برنامهنویسی غیر انگلیسیزبانهای برنامهنویسی محرمانه
انگلیسیزبان برنامهنویسی محرمانهکامپایلرشمارنده برنامهزبان برنامهنویسی سی
برینفاک
پرش به ناوبری
پرش به جستجو
پارادایم | محرمانه، ساختیافته، دستوری | ||
---|---|---|---|
طراحیشده توسط | اربن مولر | ||
ظهوریافته در | ۱۹۹۳ | ||
پسوندهای نام پرونده | b. و bf. | ||
|
برینفاک (به انگلیسی: Brainfuck) یک زبان برنامهنویسی محرمانه است که دستورهای بسیار کمی دارد. این برنامه در سال ۱۹۹۳ توسط اربن مولر با هدف طراحی زبانی با کوچکترین کامپایلر ممکن طراحی شد.[۱] کامپایلرهای برینفاک معمولاً کمتر از ۲۰۰ بایت حجم دارند و یک کامپایلر ۱۰۰ بایتی نیز برای آن وجود دارد.[۲] همانگونه که از نام این زبان برمیآید، فهمیدن دستورهای برینفاک عمدتاً دشوار است.
دستورها
برینفاک متشکل از تنها ۸ دستور (و یک شمارنده برنامه یا Instruction Pointer) است. دستورهای برینفاک اینها هستند:
کاراکتر | معنا |
---|---|
< | یکی به اشارهگر داده میافزاید (تا به سلول بعدی سمت راست اشاره کند). |
> | یکی از اشارهگر داده میکاهد (تا به سلول قبلی سمت چپ اشاره کند). |
+ | یکی به بایت محل اشارهگر میافزاید. |
- | یکی از بایت محل اشارهگر میکاهد. |
. | بایت محل اشارهگر را به خروجی میدهد. |
, | یک بایت ورودی میگیرد و آن را در بایت مورد اشاره اشارهگر ذخیره میکند. |
[ | اگر بایت در محل مورد اشاره اشارهگر صفر بود، به جای بردن شمارنده برنامه به جلو به دستور بعدی، به دستور بعد از ] متناظر میپرد. |
] | اگر بایت در محل مورد اشاره اشارهگر غیرصفر بود، به جای بردن شمارنده برنامه به جلو به دستور بعدی، به دستور قبل از [ متناظر میپرد. |
معادل این دستورها در زبان برنامهنویسی سی چنین هستند: (ptr
از نوع unsigned char*
است)
دستور برینفاک | معادل زبان سی |
---|---|
(شروع برنامه) | char array[infinitely large size] = 0; char *ptr=array; |
> | ++ptr; |
< | --ptr; |
+ | ++*ptr; |
- | --*ptr; |
. | putchar(*ptr); |
, | *ptr=getchar(); |
[ | while (*ptr) |
] |
|
مثالها
- برنامه Hello World
این برنامه عبارت Hello World را خروجی میدهد:
[ This program prints "Hello World!" and a newline to the screen, its
length is 106 active command characters [it is not the shortest.]
This loop is a "comment loop", it's a simple way of adding a comment
to a BF program such that you don't have to worry about any command
characters. Any ".", ",", "+", "-", "<" and ">" characters are simply
ignored, the "[" and "]" characters just have to be balanced.
]
++++++++ Set Cell #0 to 8
[
>++++ Add 4 to Cell #1; this will always set Cell #1 to 4
[ as the cell will be cleared by the loop
>++ Add 2 to Cell #2
>+++ Add 3 to Cell #3
>+++ Add 3 to Cell #4
>+ Add 1 to Cell #5
<<<<- Decrement the loop counter in Cell #1
] Loop till Cell #1 is zero; number of iterations is 4
>+ Add 1 to Cell #2
>+ Add 1 to Cell #3
>- Subtract 1 from Cell #4
>>+ Add 1 to Cell #6
[<] Move back to the first zero cell you find; this will
be Cell #1 which was cleared by the previous loop
<- Decrement the loop Counter in Cell #0
] Loop till Cell #0 is zero; number of iterations is 8
The result of this is:
Cell No : 0 1 2 3 4 5 6
Contents: 0 0 72 104 88 32 8
Pointer : ^
>>. Cell #2 has value 72 which is 'H'
>---. Subtract 3 from Cell #3 to get 101 which is 'e'
+++++++..+++. Likewise for 'llo' from Cell #3
>>. Cell #5 is 32 for the space
<-. Subtract 1 from Cell #4 for 87 to give a 'W'
<. Cell #3 was set to 'o' from the end of 'Hello'
+++.----.----. Cell #3 for 'rl' and 'd'
>>+. Add 1 to Cell #5 gives us an exclamation point
>++. And finally a newline from Cell #6
در اینجا برای خوانا کردن این کد، فاصلهها و کامنتهای زیادی اضافه شدهاند. برینفاک همهٔ کاراکترهای غیر از +-<>[],.
را نادیده میگیرد. برنامهٔ بالا به صورت خلاصه چنین میشود:
- نوشتار IRAN به زبان برین فاک
+++++-++++[>+++++++++>><++++-+++++++>++++++++<<<-]>+.>++.>+.<----.
- نوشتار Hello World!
++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
منابع
↑ http://www.muppetlabs.com/~breadbox/bf/. پارامتر|عنوان= یا |title=
ناموجود یا خالی (کمک).mw-parser-output cite.citationfont-style:inherit.mw-parser-output qquotes:"""""""'""'".mw-parser-output code.cs1-codecolor:inherit;background:inherit;border:inherit;padding:inherit.mw-parser-output .cs1-lock-free abackground:url("//upload.wikimedia.org/wikipedia/commons/thumb/6/65/Lock-green.svg/9px-Lock-green.svg.png")no-repeat;background-position:right .1em center;padding-right:1em;padding-left:0.mw-parser-output .cs1-lock-limited a,.mw-parser-output .cs1-lock-registration abackground:url("//upload.wikimedia.org/wikipedia/commons/thumb/d/d6/Lock-gray-alt-2.svg/9px-Lock-gray-alt-2.svg.png")no-repeat;background-position:right .1em center;padding-right:1em;padding-left:0.mw-parser-output .cs1-lock-subscription abackground:url("//upload.wikimedia.org/wikipedia/commons/thumb/a/aa/Lock-red-alt-2.svg/9px-Lock-red-alt-2.svg.png")no-repeat;background-position:right .1em center;padding-right:1em;padding-left:0.mw-parser-output div[dir=ltr] .cs1-lock-subscription a,.mw-parser-output div[dir=ltr] .cs1-lock-limited a,.mw-parser-output div[dir=ltr] .cs1-lock-registration abackground-position:left .1em center;padding-left:1em;padding-right:0.mw-parser-output .cs1-subscription,.mw-parser-output .cs1-registrationcolor:#555.mw-parser-output .cs1-subscription span,.mw-parser-output .cs1-registration spanborder-bottom:1px dotted;cursor:help.mw-parser-output .cs1-hidden-errordisplay:none;font-size:100%.mw-parser-output .cs1-visible-errorfont-size:100%.mw-parser-output .cs1-subscription,.mw-parser-output .cs1-registration,.mw-parser-output .cs1-formatfont-size:95%.mw-parser-output .cs1-kern-left,.mw-parser-output .cs1-kern-wl-leftpadding-left:0.2em.mw-parser-output .cs1-kern-right,.mw-parser-output .cs1-kern-wl-rightpadding-right:0.2em
↑ http://pferrie.host22.com/misc/brainfck.htm. پارامتر|عنوان= یا |title=
ناموجود یا خالی (کمک)
ردهها:
- زبانهای برنامهنویسی ساختهشده در ۱۹۹۳ (میلادی)
- زبانهای برنامهنویسی غیر انگلیسی
- زبانهای برنامهنویسی محرمانه
(RLQ=window.RLQ||[]).push(function()mw.config.set("wgPageParseReport":"limitreport":"cputime":"0.252","walltime":"0.879","ppvisitednodes":"value":595,"limit":1000000,"ppgeneratednodes":"value":0,"limit":1500000,"postexpandincludesize":"value":12899,"limit":2097152,"templateargumentsize":"value":517,"limit":2097152,"expansiondepth":"value":13,"limit":40,"expensivefunctioncount":"value":4,"limit":500,"unstrip-depth":"value":1,"limit":20,"unstrip-size":"value":13910,"limit":5000000,"entityaccesscount":"value":0,"limit":400,"timingprofile":["100.00% 843.380 1 -total"," 15.74% 132.784 1 الگو:پانویس"," 14.74% 124.282 2 الگو:یادکرد_وب"," 9.34% 78.771 1 الگو:Infobox_programming_language"," 8.12% 68.461 1 الگو:Infobox"," 5.05% 42.602 1 الگو:به_انگلیسی"," 4.75% 40.041 1 الگو:به_زبان_دیگر"," 4.41% 37.188 1 الگو:Lang"," 3.92% 33.072 1 الگو:گرداننده_رده"," 2.00% 16.909 1 الگو:نوار_جانبی"],"scribunto":"limitreport-timeusage":"value":"0.125","limit":"10.000","limitreport-memusage":"value":2663631,"limit":52428800,"cachereport":"origin":"mw1275","timestamp":"20190808210820","ttl":2592000,"transientcontent":false););"@context":"https://schema.org","@type":"Article","name":"u0628u0631u06ccu0646u200cu0641u0627u06a9","url":"https://fa.wikipedia.org/wiki/%D8%A8%D8%B1%DB%8C%D9%86%E2%80%8C%D9%81%D8%A7%DA%A9","sameAs":"http://www.wikidata.org/entity/Q244627","mainEntity":"http://www.wikidata.org/entity/Q244627","author":"@type":"Organization","name":"u0645u0634u0627u0631u06a9u062au200cu06a9u0646u0646u062fu06afu0627u0646 u067eu0631u0648u0698u0647u0654 u0648u06ccu06a9u06ccu200cu0645u062fu06ccu0627","publisher":"@type":"Organization","name":"Wikimedia Foundation, Inc.","logo":"@type":"ImageObject","url":"https://www.wikimedia.org/static/images/wmf-hor-googpub.png","datePublished":"2014-10-27T17:13:55Z","dateModified":"2019-06-30T19:40:41Z"(RLQ=window.RLQ||[]).push(function()mw.config.set("wgBackendResponseTime":121,"wgHostname":"mw1243"););