İçeriğe atla

Brainfuck: Revizyonlar arasındaki fark

düzenleme özeti yok
[kontrol edilmemiş revizyon][kontrol edilmemiş revizyon]
k (Bot değişikliği Ekleniyor: ms:Brainfuck)
Değişiklik özeti yok
'''Brainfuck''' 1993 yılında programcı Urban Müller tarafından yaratılmış bir [[programlama dili]]dir. Yaratılma amacı mümkün olan en küçük boyutlu [[derleyici]]yi üretmektir. Bilinen bazı derleyicileri 200 bayttan küçüktür .Sadece sekiz komutu bulunmakla birlikte Turing-bütün (''Turing-complete'') bir dil olduğundan teorik olarak herhangi bir algoritma bu dilde yazılıp işletilebilir.
 
Brainfuck dili çok basit bir makine modeli ile çalışır,bu modelde her birinin başlangıçtaki değeri 0 olan 30000 hücre ve bu hücreler arasında hareket edebilen bir işaretçi(pointer) bulunur(işaretçi,başlangıçta ilk hücrededir).
 
== Komutlar ==
Her biri sadece tek karakterden oluşan komutları şunlardır;
{| class="wikitable"
!align="center"|Komut
!align="left" |Anlamı
|-
|style="text-align:center"|<code>></code>
||işaretçiyi bir sonraki hücreye kaydır.
|-
|style="text-align:center"|<code><</code>
||işaretçiyi bir önceki hücreye kaydır.
|-
|style="text-align:center"|<code>+</code>
||işaretçinin bulunduğu hücredeki baytı 1 arttır.
|-
|style="text-align:center"|<code>-</code>
||işaretçinin bulunduğu hücredeki baytı 1 azalt.
|-
|style="text-align:center"|<code>.</code>
||işaretçinin bulunduğu hücredeki baytı standart çıktı birimine yaz.
|-
|style="text-align:center"|<code>,</code>
||standart girdi biriminden bir baytlık girdi al ve bunu işaretçinin bulunduğu hücreye yaz.
|-
|style="text-align:center"|<code>[</code>
||eğer işaretçinin bulunduğu hücrenin değeri sıfırsa, <code>]</code> karakterinden sonraki komuta atla.
|-
|style="text-align:center"|<code>]</code>
||eğer işaretçinin bulunduğu hücrenin değeri sıfır değilse, önceki <code>[</code> karakterinden bir sonraki komuta atla.
|}
 
ayrıca bu komutların [[C programlama dili]]ndeki karşılıkları şöyle gösterilebilir;
{|class="wikitable"
!align="center" |komut
!align="left" |C karşılığı
|-
|style="text-align:center"|<code>></code> || <code>++ptr;</code>
|-
|style="text-align:center"|<code><</code> || <code>--ptr;</code>
|-
|style="text-align:center"|<code>+</code> || <code>++(*ptr);</code>
|-
|style="text-align:center"|<code>-</code> || <code>--(*ptr);</code>
|-
|style="text-align:center"|<code>.</code> || <code>putchar(*ptr);</code>
|-
|style="text-align:center"|<code>,</code> || <code>*ptr=getchar();</code>
|-
|style="text-align:center"|<code>[</code> || <code>while (*ptr) {</code>
|-
|style="text-align:center"|<code>]</code> || <code>}</code>
|}
 
 
{{bilgisayar-taslak}}
Anonim kullanıcı