Skip to main content

برین‌فاک دستورها مثال‌ها منابع منوی ناوبریhttp://www.muppetlabs.com/~breadbox/bf/http://pferrie.host22.com/misc/brainfck.htm

زبان‌های برنامه‌نویسی ساخته‌شده در ۱۹۹۳ (میلادی)زبان‌های برنامه‌نویسی غیر انگلیسیزبان‌های برنامه‌نویسی محرمانه


انگلیسیزبان برنامه‌نویسی محرمانهکامپایلرشمارنده برنامهزبان برنامه‌نویسی سی












برین‌فاک




از ویکی‌پدیا، دانشنامهٔ آزاد






پرش به ناوبری
پرش به جستجو











Brainfuck
پارادایم
محرمانه، ساخت‌یافته، دستوری
طراحی‌شده توسطاربن مولر
ظهوریافته در۱۹۹۳
پسوندهای نام پرونده
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!
++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.




منابع




  1. 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


  2. http://pferrie.host22.com/misc/brainfck.htm. پارامتر |عنوان= یا |title= ناموجود یا خالی (کمک)









برگرفته از «https://fa.wikipedia.org/w/index.php?title=برین‌فاک&oldid=26526199»













منوی ناوبری


























(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"););

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. јануар Садржај Догађаји Рођења Смрти Празници и дани сећања Види још Референце Мени за навигацијуу