วันอังคารที่ 26 กุมภาพันธ์ พ.ศ. 2556

พื้นฐานการเขียนโปรแกรมภาษา Erlang ตอนที่ 1

 หลังจากที่ได้อ่านหนังสือเกี่ยว Erlang Programming ของ Francesco Cesarini และ Simon Thompson วันนี้ก็มีโอกาสว่างๆ อัพเดตบล็อกเกี่ยวกับพื้นฐานการเขียนโปรแกรมภาษา Erlang เพื่อเอาไว้ช่วยบันทึกความจำของผมเองว่าเรียนรู้ไปถึงไหนบ้างแล้ว
 สำหรับใครที่ต้องการรู้ประวัติของ Erlang ถ้าต้องการ Download

เริ่มต้นกันก่อนที่ Erlang Shell


คำสั่งพื้นฐานที่จำเป็นใช้ใน Erlang Shell
help().     เรียกดูคำสั่งที่ของ Erlang Shell ทั้งหมด
q().        ออกจาก Erlang Shell
pwd().     ดูว่าเรากำลังทำงานอยู่ในไดเรกทรอรีไหน
cd("C:/Users/Me/WorkingDir").    เปลี่ยนไดเรกทรอรีที่ทำงานไปที่ C:/Users/Me/WorkingDir
ls().        ดูรายการในไดเรกทรอรี
os:cmd("notepad myprog.erl"). เรียกใช้คำสั่งเฉพาะของ OS
c(myprog).    คอมไพล์ Module ต้องมีไฟล์ชื่อ myprog.erl อยู่ในไดเรกทรอรีที่ทำงานอยู่ก่อนคอมไพล์
m(myprog).    ดูรายการ public function ใน Module นี้
myprog:function(arguments).    เรียกในฟังก์ชั่นใน Module
2 + 3 * 4.    ตัวอย่างการเขียน Expression
Variable = expression.    ผูกตัวแปรเข้ากับนิพจน์ ผูกได้เพียงครั้งเดียวเท่านั้น
f(Variable).  ยกเลิกการผูกค่าตัวแปร
f().    ยกเลิกการผูกค่าตัวแปรทั้งหมด

การออกจากการวนรอบและ deadlock ของโปรแกรม
กด Ctrl+G เรียก job control menu เรียกดูคำสั่งที่เกี่ยวข้อง -->h

ตัวเลขใน Erlang
ตัวเลขใน Erlang แบ่งเป็นสองกลุ่มใหญ่คือ เลขจำนวนเต็ม (integers) และเลขทศนิยม (floats) โดยมีวิธีการให้งานตัวเลขดังนี้
1.    เลขจำนวนเต็ม (Integers)
  • จำนวนเต็มบวก จำนวนเต็มลบ เป็นแบบ Arbitrary-precision arithmetric
ตัวอย่าง -1234 0 10 10000000000
  • เลขฐาน มีรูปแบบการเขียนเป็น base#value
ตัวอย่าง 2#1011 -16#FFF
  • รหัสตัวอักษร ASCII มีรูปแบบการเขียนเป็น $Character
ตัวอย่าง $A $a $\n

2.    เลขทศนิยม (Floats)
  • จำนวนจริงขนาด 64-bit
ตัวอย่าง 17.3688 -56.65 1.23456E-10 2.55E5

ตัวดำเนินการทางคณิตศาสตร์
+     unary +        *    multiplication
-    unary –        /    division
+    addition        div    หารเอาผลจำนวนเต็ม
-    subtraction        rem    หารเอาเศษ

Atoms
  • Atoms เป็นการประกาศค่าคงที่ซึ่งมีค่าก็คือตัวของมันเอง
  • การประกาศค่าขึ้นต้นด้วยอักษรตัวเล็กเสมอ (lowercase) หรืออยู่ภายในเครื่องหมาย single quotes (')
  • ใช้อักษรตัวใหญ่ ตัวเลข เครื่องหมาย @ . _ ได้ถ้า atom ขึ้นต้นด้วยอักษรตัวเล็กแล้ว
  • ใช้เครื่องหมายใด ๆ ก็ได้ถ้าอยู่ภายใน single quotes (')
ตัวอย่าง iloveErlang i@erlang 'This is Erlang'

Booleans
  • ไม่มีการแยกชนิดค่า Boolean หรือตัวอักษร (character) ใน Erlang
  • เราใช้ค่าอะตอม true และ false ร่วมกับการเปรียบเทียบทางตรรกศาสตร์
  • Atoms มีลำดับเรียงตามลำดับตัวอักษร
ตัวอย่างการเปรียบเทียบ        ผลลัพธ์
    1==2.                                 false
    1<2.                                   true
    a>z.                                    false
    less<more.                          true

การตรวจสอบค่าที่นำมาทดสอบเป็น boolean หรือไม่
    is_boolean(9+9).    ผลลัพธ์    false
    is_boolean(9==9).    ผลลัพธ์    true

ตัวดำเนินการทางด้านตรรกศาสตร์
and or xor not andalso (คืนค่า false ถ้านิพจน์แรก false ไม่ทดสอบนิพจน์ต่อไป) orelse (คืนค่า true ถ้านิพจน์แรก true ไม่ทดสอบนิพจน์ต่อไป)

Tuples

  • ใช้เก็บข้อมูลไว้เป็นกลุ่ม
  • กำหนดค่าไว้ภายในเครื่องหมาย {...} แต่ละส่วนภายในคั่นด้วยเครื่องหมายจุลภาค (,)
  • ใน tuple ส่วนแรกสุดคือ atom ถูกเรียกว่า tag เอาไว้ช่วยสื่อถึงข้อมูลภายในของ tuple
  • ตัวชี้ (index) ใน tuple ส่วนแรกเริ่มที่ 1
ตัวอย่าง {abc,123} {} {pet,'dog','chiro'}

ฟังก์ชั่นพื้นฐานที่เกี่ยวข้อง

ดูขนาดของ tuple
tuple_size({abc,{def,123},zxy}).        ผลลัพธ์    3

เรียกดูส่วนที่ต้องการ
element(2,{abc,{def,123},zxy}).        ผลลัพธ์    {def,123}

ตั้งค่าใน tuple ในส่วนที่ต้องการ
setelement(2,{abc,{def,123},zxy},def).    ผลลัพธ์    {abc,def,zxy}

Lists
  • ใช้เก็บข้อมูลไว้เป็นกลุ่ม
  • กำหนดค่าไว้ภายในเครื่องหมาย [...] แต่ละส่วนภายในคั่นด้วยเครื่องหมายจุลภาค (,)
  • List และ Tuples มีความแตกต่างกันทางด้านในการนำไปประมวลผล
ตัวอย่าง
    [sunday,monday,tuesday,wednesday,thursday,friday,saturday]
    [{pet,'dog','chiro'},{pet,'cat','kuroiro'}]
    [$h,$e,$l,$l,$o]
    [104,101,108,108,111]
    "hello"

Characters, Strings
  • ตัวอักษรแสดงแทนด้วยตัวเลขจำนวนเต็ม (integers)ข้อความ (Strings) แทนด้วย list ของเลขจำนวนเต็ม โดยค่าของตัวเลขคือรหัส ASCII
  • ค่าตัวเลขของตัวอักษรเขียนโดยมี $ นำหน้าตัวอักษร
ตัวอย่าง
    $A.
    $a + 10.
   
  • การเขียนค่า String
ตัวอย่าง
    [65,66,67].        ผลลัพธ์ "ABC"
    [$A,$B,$C].        ผลลัพธ์ "ABC"

ไม่มีความคิดเห็น:

แสดงความคิดเห็น