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

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา
แถว 37: แถว 37:
 
|}
 
|}
  
 +
ภาษา BF สามารถแปลงให้เป็นภาษา C ได้ไม่ยากด้วยวิธีการแปลงด้านล่าง กำหนดให้ <code>ptr</code> มี type เป็น <code>unsigned char*</code> และชี้ที่อาร์เรย์ในหน่วยความจำที่เริ่มต้นมีค่าเป็น 0
 +
{|class="wikitable"
 +
|-
 +
! style="text-align:center;"|คำสั่ง
 +
! style="text-align:left;" |คำสั่งในภาษา C
 +
|-
 +
|style="text-align:center;"|(Program Start) || <code>char array[30000];<br />char *ptr=array;</code>
 +
|-
 +
|style="text-align:center;"|<code>&gt;</code> || <code>++ptr;</code>
 +
|-
 +
|style="text-align:center;"|<code>&lt;</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>
 +
|}
  
  
 
การทำงานของภาษานี้ประกอบด้วย
 
การทำงานของภาษานี้ประกอบด้วย

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

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

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

ภาษา BF

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

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

ภาษา BF สามารถแปลงให้เป็นภาษา C ได้ไม่ยากด้วยวิธีการแปลงด้านล่าง กำหนดให้ ptr มี type เป็น unsigned char* และชี้ที่อาร์เรย์ในหน่วยความจำที่เริ่มต้นมีค่าเป็น 0

คำสั่ง คำสั่งในภาษา C
(Program Start) char array[30000];
char *ptr=array;
> ++ptr;
< --ptr;
+ ++*ptr;
- --*ptr;
. putchar(*ptr);
, *ptr=getchar();
[ while (*ptr) {
] }


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