Brainfuck: Revizyonlar arasındaki fark

Vikipedi, özgür ansiklopedi
[kontrol edilmemiş revizyon][kontrol edilmemiş revizyon]
İçerik silindi İçerik eklendi
Thijs!bot (mesaj | katkılar)
k Bot değişikliği Ekleniyor: ms:Brainfuck
Değişiklik özeti yok
1. satır: 1. satır:
'''Brainfuck''' 1993 yılında programcı Urban Müller tarafından yaratılmış bir [[programlama dili]]dir. 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''' 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}}
{{bilgisayar-taslak}}

Sayfanın 09.28, 6 Şubat 2008 tarihindeki hâli

Brainfuck 1993 yılında programcı Urban Müller tarafından yaratılmış bir programlama dilidir. Yaratılma amacı mümkün olan en küçük boyutlu derleyiciyi ü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;

Komut Anlamı
> işaretçiyi bir sonraki hücreye kaydır.
< işaretçiyi bir önceki hücreye kaydır.
+ işaretçinin bulunduğu hücredeki baytı 1 arttır.
- işaretçinin bulunduğu hücredeki baytı 1 azalt.
. işaretçinin bulunduğu hücredeki baytı standart çıktı birimine yaz.
, standart girdi biriminden bir baytlık girdi al ve bunu işaretçinin bulunduğu hücreye yaz.
[ eğer işaretçinin bulunduğu hücrenin değeri sıfırsa, ] karakterinden sonraki komuta atla.
] eğer işaretçinin bulunduğu hücrenin değeri sıfır değilse, önceki [ karakterinden bir sonraki komuta atla.

ayrıca bu komutların C programlama dilindeki karşılıkları şöyle gösterilebilir;

komut C karşılığı
> ++ptr;
< --ptr;
+ ++(*ptr);
- --(*ptr);
. putchar(*ptr);
, *ptr=getchar();
[ while (*ptr) {
] }