ผลต่างระหว่างรุ่นของ "Brainfxxx"

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา
แถว 5: แถว 5:
 
== ภาษา BF ==
 
== ภาษา BF ==
  
โมเดลของคอมพิวเตอร์ของภาษานี้จะมีหน่วยความจำที่ในแต่ละช่องเก็บข้อมูลขนาด 8 บิต จำนวน 30,000 ช่อง เมื่อเริ่มทุกช่องมีค่าเป็น 0 และพอยน์เตอร์สำหรับชี้ตำแหน่ง  คำสั่งในภาษานี้มีทั้นสิ้น 8 คำสั่ง ดังตารางด้านล่าง:
+
โมเดลของคอมพิวเตอร์ของภาษานี้จะมีหน่วยความจำที่ในแต่ละช่องเก็บข้อมูลขนาด 8 บิต จำนวน 30,000 ช่อง เมื่อเริ่มทุกช่องมีค่าเป็น 0 และพอยน์เตอร์สำหรับชี้ตำแหน่ง  คำสั่งในภาษานี้มีทั้นสิ้น 8 คำสั่ง แต่ละคำสั่งเป็นตัวอักษรหนึ่งตัวดังตารางด้านล่าง:
  
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
! style="text-align:center;"|Character
+
! style="text-align:center;"|ตัวอักษร
!align="left"|Meaning
+
!align="left"|ความหมาย
 
|-
 
|-
 
|style="text-align:center"|<code>&gt;</code>
 
|style="text-align:center"|<code>&gt;</code>
||increment the data pointer (to point to the next cell to the right).
+
||เพิ่มค่าของพอยน์เตอร์ (ขยับไปยังช่องทางขวา)
 
|-
 
|-
 
|style="text-align:center"|<code>&lt;</code>
 
|style="text-align:center"|<code>&lt;</code>
||decrement the data pointer (to point to the next cell to the left).
+
||ลดค่าของพอยน์เตอร์ (ขยับไปทางซ้าย)
 
|-
 
|-
 
|style="text-align:center"|<code>+</code>
 
|style="text-align:center"|<code>+</code>
||increment (increase by one) the byte at the data pointer.
+
||เพิ่มค่าของข้อมูลที่พอยน์เตอร์ชี้อยู่ขึ้นหนึ่ง
 
|-
 
|-
 
|style="text-align:center"|<code>-</code>
 
|style="text-align:center"|<code>-</code>
||decrement (decrease by one) the byte at the data pointer.
+
||ลดค่าของข้อมูลที่พอยน์เตอร์ชี้อยู่ลงหนึ่ง
 
|-
 
|-
 
|style="text-align:center"|<code>.</code>
 
|style="text-align:center"|<code>.</code>
||output the byte at the data pointer.
+
||พิมพ์ข้อมูลที่พอยน์เตอร์ชี้อยู่ (ดูรายละเอียดด้านล่าง)
 
|-
 
|-
 
|style="text-align:center"|<code>,</code>
 
|style="text-align:center"|<code>,</code>
||accept one byte of input, storing its value in the byte at the data pointer.
+
||อ่านข้อมูลหนึ่งตัวอักษรแล้วเก็บที่ตำแหน่งที่พอยน์เตอร์ชี้อยู่
 
|-
 
|-
 
|style="text-align:center"|<code>[</code>
 
|style="text-align:center"|<code>[</code>
||if the byte at the data pointer is zero, then instead of moving the [[Program Counter|instruction pointer]] forward to the next command, [[Branch (computer science)|jump]] it ''forward'' to the command after the ''matching'' <code>]</code> command.
+
||ถ้าข้อมูลที่พอยน์เตอร์ชี้อยู่มีค่าเป็น 0 ให้กระโดดไปยังคำสั่งที่อยู่ถัดจากวงเล็บ ] ที่จับคู่กับมัน
 
|-
 
|-
 
|style="text-align:center"|<code>]</code>
 
|style="text-align:center"|<code>]</code>
||if the byte at the data pointer is nonzero, then instead of moving the instruction pointer forward to the next command, jump it ''back'' to the command after the ''matching'' <code>[</code> command.
+
||(จับคู่กับวงเล็บเปิด)ถ้าข้อมูลที่พอยน์เตอร์ชี้อยู่มีค่าไม่เท่ากับ 0 ให้กระโดดกลับไปทำงานที่คำสั่งถัดจากวงเล็บ [ ที่จับคู่กับมัน
 
|}
 
|}
  

รุ่นแก้ไขเมื่อ 00:01, 17 พฤษภาคม 2556

ภาษา Brainfuck (ต่อไปจะเรียกสั้น ๆ ว่า BF) เป็นภาษาโปรแกรมประหลาดภาษาหนึ่ง ที่ออกแบบในปี 1993 โดย Urban Müller

ในข้อนี้เราจะเขียนโปรแกรมภาษา BF ให้ทำงานต่าง ๆ ก่อนอื่นมารู้จักภาษานี้กันก่อน

ภาษา BF

โมเดลของคอมพิวเตอร์ของภาษานี้จะมีหน่วยความจำที่ในแต่ละช่องเก็บข้อมูลขนาด 8 บิต จำนวน 30,000 ช่อง เมื่อเริ่มทุกช่องมีค่าเป็น 0 และพอยน์เตอร์สำหรับชี้ตำแหน่ง คำสั่งในภาษานี้มีทั้นสิ้น 8 คำสั่ง แต่ละคำสั่งเป็นตัวอักษรหนึ่งตัวดังตารางด้านล่าง:

ตัวอักษร ความหมาย
> เพิ่มค่าของพอยน์เตอร์ (ขยับไปยังช่องทางขวา)
< ลดค่าของพอยน์เตอร์ (ขยับไปทางซ้าย)
+ เพิ่มค่าของข้อมูลที่พอยน์เตอร์ชี้อยู่ขึ้นหนึ่ง
- ลดค่าของข้อมูลที่พอยน์เตอร์ชี้อยู่ลงหนึ่ง
. พิมพ์ข้อมูลที่พอยน์เตอร์ชี้อยู่ (ดูรายละเอียดด้านล่าง)
, อ่านข้อมูลหนึ่งตัวอักษรแล้วเก็บที่ตำแหน่งที่พอยน์เตอร์ชี้อยู่
[ ถ้าข้อมูลที่พอยน์เตอร์ชี้อยู่มีค่าเป็น 0 ให้กระโดดไปยังคำสั่งที่อยู่ถัดจากวงเล็บ ] ที่จับคู่กับมัน
] (จับคู่กับวงเล็บเปิด)ถ้าข้อมูลที่พอยน์เตอร์ชี้อยู่มีค่าไม่เท่ากับ 0 ให้กระโดดกลับไปทำงานที่คำสั่งถัดจากวงเล็บ [ ที่จับคู่กับมัน


การทำงานของภาษานี้ประกอบด้วย