RGSS & Ruby Lesson - Chapter 2
หน้า 1 จาก 1
RGSS & Ruby Lesson - Chapter 2
RGSS & Ruby Lesson - Chapter 2
บทที่สองนี้เราจะพูดถึงคำสั่งพื้นฐานต่างๆ รวมถึงประเภทของตัวแปร ซึ่งมีความจำเป็นอย่างยิ่งในการเขียนสคริปต์ที่ซับซ้อนยิ่งขึ้น
1. ตัวแปร และ ค่าคงที่ (Variables and Constants)
ตัว
แปรนั้นเป็นสิ่งที่จำเป็นอย่างยิ่งในการเขียนโปรแกรมใดๆก็ตาม
รวมถึงรูบี้สคริปต์เช่นกัน ส่วนค่าคงที่นั้น ขึ้นอยู่กับแต่ละโปรแกรม
ตัวแปรคืออะไร?
ตัว
แปรคือ “ชื่อ” ของข้อมูลที่เราจัดเก็บไว้ใน memory ของโปรแกรม
ในกรณีที่เราต้องการเก็บข้อมูลอะไรไว้ และเรียกใช้งานในภายหลัง
เราไม่จำเป็นต้องพิมพ์ข้อมูลนั้นๆ ทุกครั้ง
เพียงแต่เรียกชื่อของตัวแปรขึ้นมา
ตัวอย่าง : นาย A อายุ 14
และเก็บข้อมูลอายุตัวเองไว้ในตัวแปรชื่อ age_a ดังนั้น
หากเขาต้องการเรียกข้อมูลอายุของเขามาใช้งาน ก็เพียงแค่เรียกใช้ตัวแปร
age_a ไม่ต้องพิมพ์ 14 อีกครั้ง
ชื่อของตัวแปรนั้นมีกฎคือห้ามเป็น
ตัวพิมพ์ใหญ่ทั้งหมด และตัวแปรยัง case sensitive อีกด้วย นั่นหมายถึง
ตัวแปร doG กับ dog นั้นถือว่าเป็นคนละตัวกัน เพราะตัว G กับ g
จาก
ตัวอย่างจะเห็นว่า เราสร้างตัวแปร x ขึ้นมา และใส่ข้อมูล 9 เข้าไป
จากนั้นเราจึงสร้างตัวแปร y ขึ้นมา แล้วบรรจุเลข 1 ลงไป ส่วนตัวแปร result
นั้น เราใส่ผลลัพธ์ของ x บวกกับ y เข้าไป
แล้วสุดท้ายเราจึงสั่งให้โปรแกรม แสดงค่าที่บรรจุอยู่ใน result ซึ่งก็คือ
10 นั่นเอง
ลองทำดู : ลองสร้าง Event
ขึ้นมาและเขียนโค้ดเหล่านี้ใน Call Script ดู จากนั้นลองเปลี่ยนสิ่งต่างๆ
เล่นกับตัวแปรดู แล้วดูผลลัพธ์ที่เกิดขึ้น
ตัวแปรนั้นบรรจุข้อมูลได้หลายประเภท ไม่จำเป็นว่าจะต้องเป็นตัวเลขอย่างเดียว โดยการบรรจุข้อมูลให้ตัวแปรนั้นมีรูปแบบดังนี้
เครื่อง
หมาย “=” นั้น ไม่ได้แปลว่า “เท่ากับ” แต่หมายถึง
“นำข้อมูลฝั่งขวาของเครื่องหมาย มาบรรจุลงในตัวแปรฝั่งซ้าย” ดังนั้น
ในบรรทัดแรกจึงหมายถึง นำประโยค “โอย รูบี้สคริปต์งง ก่งก๊ง”
มาบรรจุไว้ในตัวแปร text บรรทัดสองหมายถึง นำจำนวน 1234567
บรรจุไว้ในตัวแปร lottery และบรรทัดสุดท้ายหมายถึง นำค่า false (ผิด
หรือไม่เป็นจริง เปรียบได้กับ สวิทช์ปิด) มาบรรจุไว้ในตัวแปร sure
(ก็จะแปลได้ว่า ไม่ชัวร์)
นอกจากนี้เรายังสามารถบรรจุข้อมูลแบบรวบรัดได้ดังนี้
บรรทัดแรก หมายถึง “บรรจุ จำนวน 5 ลงในตัวแปร c b และ a” ส่วนบรรทัดที่สองหมายถึง “บรรจุตัวแปร 5 ลงใน a แล้วบรรจุ 6 ลงใน b”
ประยุกต์ใช้ตัวแปร
เรามาลองดูคำสั่งต่างๆพื้นฐานที่น่าลองใช้เพื่อประยุกต์กับตัวแปรกันดีกว่า
คำสั่ง ผลลัพธ์
= บรรจุค่าลงในตัวแปร
+,-,*,/ บวก ลบ คูณ และหาร ตามลำดับ
p หรือ print ใช้ในการแสดงผลตัวแปรเป็นหน้าต่าง popup
#{ชื่อตัวแปร} ใช้ในการแสดงข้อมูลในตัวแปรร่วมกับประโยคเช่น p “ผลลัพธ์คือ” + #{result}
ชื่อตัวแปร.to_s เปลี่ยนตัวแปรประเภทจำนวนให้เป็นประเภทตัวอักษร(string)
ลองทำดู
: ลองสร้าง Event ขึ้นมาและเขียนโค้ดเหล่านี้ใน Call Script ดู
จากนั้นลองเปลี่ยนสิ่งต่างๆ เล่นกับตัวแปรดู แล้วดูผลลัพธ์ที่เกิดขึ้น
ประเภทของตัวแปร
1. Local Variables
ตัวแปรประเภท local นี้เริ่มต้นด้วยตัวอักษรตัวพิมพ์เล็ก ตัวแปรประเภทนี้จะทำงานภายใน method เท่านั้น
จาก
ตัวอย่างนี้ ตัวแปร x นั้นแม้จะชื่อ x เหมือนกัน แต่ค่าไม่เท่ากันในแต่ละ
method (หรือภายใน def) ถ้าเราลองพิมพ์ p x ในแต่ละ def ก็จะเข้าใจ
2. Instance Variables
ตัว
แปรประเภท instance นี้เริ่มต้นชื่อด้วย “@”
และตัวแปรนี้ต้องถูกสร้างภายใน method เท่านั้น
ตัวแปรประเภทนี้จะเชื่อมถึงกันกับทุกๆ method ใน class ที่มันถูกสร้างขึ้น
ในกรณีนี้ ตัวแปร @x ใน class แรกนั้น สุดท้ายจะมีค่าเท่ากับ 4 แต่ใน
class สอง จะมีค่าเท่ากับ 2 ซึ่งตัวแปร @x ในทั้งสอง class นั้น
จะไม่เกี่ยวข้องกัน
3. Class Variables
ตัวแปรประเภทนี้
จะขึ้นต้นด้วย @@ โดยตัวแปรประเภทนี้จะต้องถูกสร้างขึ้นใน class
เท่านั้นและไม่ใช่ใน method ขอบเขตการทำงานจะเหมือนกับตัวแปร instance
จากตัวอย่าง ทุกครั้งที่เราสร้าง object ใน class นี้ขึ้นมา ตัวแปร
@@class_variable จะนับเพิ่มเรื่อยๆ เป็นการนับจำนวน object
ที่มันสร้างขึ้น
4. Global Variables
ตัวแปรประเภท
นี้เป็นตัวแปรที่เมื่อสร้างขึ้นมาครั้งนึงแล้ว
ทั้งโปรแกรมสามารถเรียกใช้งานถึงกันได้ การสร้างตัวแปรประเภทนี้จะต้องมี
“$” นำหน้าชื่อตัวแปรนั้นๆ
จากตัวอย่าง เมื่อเราเรียกใช้งาน class แรก ตัวแปร $x จะกลายเป็น 0 แต่เมื่อเรียกใช้งาน class ที่สอง ตัวแปร $x จะเพิ่มขึ้น 1
5. Constant
ค่า
คงที่เป็นตัวบรรจุข้อมูลที่เราไม่ต้องการให้เกิดการเปลี่ยนแปลงใดๆ หรือ
น้อยครั้งนักที่จะเปลี่ยนแปลงมัน เช่นค่าของ Pi = 3.14 หรือ
จำนวนวันในหนึ่งสัปดาห์ DAYS = 7 เป็นต้น
การประกาศตัวแปรนั้นต้องเป็นตัวพิมพ์ใหญ่ทั้งหมด และสามารถทำได้ทั้งนอก และ ใน class
จาก
ตัวอย่าง เราประกาศค่าคงที่ A_CONSTANT ให้มีค่าเท่ากับ 100 และหลังจากนี้
A_CONSTANT จะมีค่าเท่ากับ 100 ตลอดไป ใน class Constant_Test_1
เรา
ประกาศค่าคงที่ ANOTHER_CONSTANT ให้มีค่าเท่ากับ 50
โดยตัวแปรนี้จะทำงานแค่ภายใน class Constant_Test_1 เท่านั้น เหมือนกับ
Class Variable
อย่างไรก็ตาม เราสามารถเข้าถึงค่าคงที่ของ class อื่นได้ด้วยคำสั่งนี้
ชื่อคลาส::ชื่อตัวแปร
ใน class Constant_Test_2 นั้น เราได้ทำการแสดงผลข้อมูลของ ANOTHER_CONSTANT ของ class Constant_Test_1 คำสั่งจึงเป็นดังนี้
print Constant_Test_1::ANOTHER_CONSTANT
ใน
class สุดท้าย เราทำการ +1 ให้กับค่าคงที่ A_CONSTANT
แต่ไม่ว่าเราจะเรียกใช้งาน class นี้กี่ครั้งก็ตาม
ค่าที่แสดงออกมาก็จะเท่ากับ 101 ไม่ใช่ 101 102 103 บวกทบกันไปเรื่อย
เพราะหลังจากบวกเสร็จ ค่า A_CONSTANT จะกลับมาเท่ากับ 100 ดังเดิม
เนื่องจากมันเป็นค่าคงที่
จบเรื่องของตัวแปรและค่าคงที่
==================================
Credit : Constance, Dubealex
==================================
บทที่สองนี้เราจะพูดถึงคำสั่งพื้นฐานต่างๆ รวมถึงประเภทของตัวแปร ซึ่งมีความจำเป็นอย่างยิ่งในการเขียนสคริปต์ที่ซับซ้อนยิ่งขึ้น
1. ตัวแปร และ ค่าคงที่ (Variables and Constants)
ตัว
แปรนั้นเป็นสิ่งที่จำเป็นอย่างยิ่งในการเขียนโปรแกรมใดๆก็ตาม
รวมถึงรูบี้สคริปต์เช่นกัน ส่วนค่าคงที่นั้น ขึ้นอยู่กับแต่ละโปรแกรม
ตัวแปรคืออะไร?
ตัว
แปรคือ “ชื่อ” ของข้อมูลที่เราจัดเก็บไว้ใน memory ของโปรแกรม
ในกรณีที่เราต้องการเก็บข้อมูลอะไรไว้ และเรียกใช้งานในภายหลัง
เราไม่จำเป็นต้องพิมพ์ข้อมูลนั้นๆ ทุกครั้ง
เพียงแต่เรียกชื่อของตัวแปรขึ้นมา
ตัวอย่าง : นาย A อายุ 14
และเก็บข้อมูลอายุตัวเองไว้ในตัวแปรชื่อ age_a ดังนั้น
หากเขาต้องการเรียกข้อมูลอายุของเขามาใช้งาน ก็เพียงแค่เรียกใช้ตัวแปร
age_a ไม่ต้องพิมพ์ 14 อีกครั้ง
ชื่อของตัวแปรนั้นมีกฎคือห้ามเป็น
ตัวพิมพ์ใหญ่ทั้งหมด และตัวแปรยัง case sensitive อีกด้วย นั่นหมายถึง
ตัวแปร doG กับ dog นั้นถือว่าเป็นคนละตัวกัน เพราะตัว G กับ g
CODE |
ตัวอย่าง: x = 9 y = 1 result = x + y print result |
ตัวอย่างจะเห็นว่า เราสร้างตัวแปร x ขึ้นมา และใส่ข้อมูล 9 เข้าไป
จากนั้นเราจึงสร้างตัวแปร y ขึ้นมา แล้วบรรจุเลข 1 ลงไป ส่วนตัวแปร result
นั้น เราใส่ผลลัพธ์ของ x บวกกับ y เข้าไป
แล้วสุดท้ายเราจึงสั่งให้โปรแกรม แสดงค่าที่บรรจุอยู่ใน result ซึ่งก็คือ
10 นั่นเอง
ลองทำดู : ลองสร้าง Event
ขึ้นมาและเขียนโค้ดเหล่านี้ใน Call Script ดู จากนั้นลองเปลี่ยนสิ่งต่างๆ
เล่นกับตัวแปรดู แล้วดูผลลัพธ์ที่เกิดขึ้น
ตัวแปรนั้นบรรจุข้อมูลได้หลายประเภท ไม่จำเป็นว่าจะต้องเป็นตัวเลขอย่างเดียว โดยการบรรจุข้อมูลให้ตัวแปรนั้นมีรูปแบบดังนี้
CODE |
text = “โอย รูบี้สคริปต์งง ก่งก๊ง” lottery = 1234567 sure = false |
หมาย “=” นั้น ไม่ได้แปลว่า “เท่ากับ” แต่หมายถึง
“นำข้อมูลฝั่งขวาของเครื่องหมาย มาบรรจุลงในตัวแปรฝั่งซ้าย” ดังนั้น
ในบรรทัดแรกจึงหมายถึง นำประโยค “โอย รูบี้สคริปต์งง ก่งก๊ง”
มาบรรจุไว้ในตัวแปร text บรรทัดสองหมายถึง นำจำนวน 1234567
บรรจุไว้ในตัวแปร lottery และบรรทัดสุดท้ายหมายถึง นำค่า false (ผิด
หรือไม่เป็นจริง เปรียบได้กับ สวิทช์ปิด) มาบรรจุไว้ในตัวแปร sure
(ก็จะแปลได้ว่า ไม่ชัวร์)
นอกจากนี้เรายังสามารถบรรจุข้อมูลแบบรวบรัดได้ดังนี้
CODE |
a = b = c = 5 a,b = 5,6 |
ประยุกต์ใช้ตัวแปร
เรามาลองดูคำสั่งต่างๆพื้นฐานที่น่าลองใช้เพื่อประยุกต์กับตัวแปรกันดีกว่า
คำสั่ง ผลลัพธ์
= บรรจุค่าลงในตัวแปร
+,-,*,/ บวก ลบ คูณ และหาร ตามลำดับ
p หรือ print ใช้ในการแสดงผลตัวแปรเป็นหน้าต่าง popup
#{ชื่อตัวแปร} ใช้ในการแสดงข้อมูลในตัวแปรร่วมกับประโยคเช่น p “ผลลัพธ์คือ” + #{result}
ชื่อตัวแปร.to_s เปลี่ยนตัวแปรประเภทจำนวนให้เป็นประเภทตัวอักษร(string)
ลองทำดู
: ลองสร้าง Event ขึ้นมาและเขียนโค้ดเหล่านี้ใน Call Script ดู
จากนั้นลองเปลี่ยนสิ่งต่างๆ เล่นกับตัวแปรดู แล้วดูผลลัพธ์ที่เกิดขึ้น
ประเภทของตัวแปร
1. Local Variables
ตัวแปรประเภท local นี้เริ่มต้นด้วยตัวอักษรตัวพิมพ์เล็ก ตัวแปรประเภทนี้จะทำงานภายใน method เท่านั้น
CODE |
ตัวอย่าง: Class Local_Variable def method_1 x = 2 end def method_2 x = 3 end def method_3 x = 4 end end |
จาก
ตัวอย่างนี้ ตัวแปร x นั้นแม้จะชื่อ x เหมือนกัน แต่ค่าไม่เท่ากันในแต่ละ
method (หรือภายใน def) ถ้าเราลองพิมพ์ p x ในแต่ละ def ก็จะเข้าใจ
2. Instance Variables
ตัว
แปรประเภท instance นี้เริ่มต้นชื่อด้วย “@”
และตัวแปรนี้ต้องถูกสร้างภายใน method เท่านั้น
ตัวแปรประเภทนี้จะเชื่อมถึงกันกับทุกๆ method ใน class ที่มันถูกสร้างขึ้น
CODE |
ตัวอย่าง: Class Instance_Variable_1 def method_1 @x = 2 end def method_2 @x = 3 end def method_3 @x = 4 end end Class Instance_Variable_2 def method_1 @x = 4 end def method_2 @x = 3 end def method_3 @x = 2 end end |
ในกรณีนี้ ตัวแปร @x ใน class แรกนั้น สุดท้ายจะมีค่าเท่ากับ 4 แต่ใน
class สอง จะมีค่าเท่ากับ 2 ซึ่งตัวแปร @x ในทั้งสอง class นั้น
จะไม่เกี่ยวข้องกัน
3. Class Variables
ตัวแปรประเภทนี้
จะขึ้นต้นด้วย @@ โดยตัวแปรประเภทนี้จะต้องถูกสร้างขึ้นใน class
เท่านั้นและไม่ใช่ใน method ขอบเขตการทำงานจะเหมือนกับตัวแปร instance
CODE |
ตัวอย่าง class Class_Variable @@class_variable=0 def initialize @@class_variable+=1 end end |
จากตัวอย่าง ทุกครั้งที่เราสร้าง object ใน class นี้ขึ้นมา ตัวแปร
@@class_variable จะนับเพิ่มเรื่อยๆ เป็นการนับจำนวน object
ที่มันสร้างขึ้น
4. Global Variables
ตัวแปรประเภท
นี้เป็นตัวแปรที่เมื่อสร้างขึ้นมาครั้งนึงแล้ว
ทั้งโปรแกรมสามารถเรียกใช้งานถึงกันได้ การสร้างตัวแปรประเภทนี้จะต้องมี
“$” นำหน้าชื่อตัวแปรนั้นๆ
CODE |
ตัวอย่าง Class Instance_Variable_1 def initialize $x = 0 end end Class Instance_Variable_2 def initialize $x += 1 end end |
จากตัวอย่าง เมื่อเราเรียกใช้งาน class แรก ตัวแปร $x จะกลายเป็น 0 แต่เมื่อเรียกใช้งาน class ที่สอง ตัวแปร $x จะเพิ่มขึ้น 1
5. Constant
ค่า
คงที่เป็นตัวบรรจุข้อมูลที่เราไม่ต้องการให้เกิดการเปลี่ยนแปลงใดๆ หรือ
น้อยครั้งนักที่จะเปลี่ยนแปลงมัน เช่นค่าของ Pi = 3.14 หรือ
จำนวนวันในหนึ่งสัปดาห์ DAYS = 7 เป็นต้น
การประกาศตัวแปรนั้นต้องเป็นตัวพิมพ์ใหญ่ทั้งหมด และสามารถทำได้ทั้งนอก และ ใน class
CODE |
ตัวอย่าง A_CONSTANT=100 class Constant_Test_1 ANOTHER_CONSTANT=50 def initialize print ANOTHER_CONSTANT print A_CONSTANT end end class Constant_Test_2 def initialize print Constant_Test_1::ANOTHER_CONSTANT print A_CONSTANT end end class Constant_Test_3 A_CONSTANT+=1 def initialize print A_CONSTANT end end |
จาก
ตัวอย่าง เราประกาศค่าคงที่ A_CONSTANT ให้มีค่าเท่ากับ 100 และหลังจากนี้
A_CONSTANT จะมีค่าเท่ากับ 100 ตลอดไป ใน class Constant_Test_1
เรา
ประกาศค่าคงที่ ANOTHER_CONSTANT ให้มีค่าเท่ากับ 50
โดยตัวแปรนี้จะทำงานแค่ภายใน class Constant_Test_1 เท่านั้น เหมือนกับ
Class Variable
อย่างไรก็ตาม เราสามารถเข้าถึงค่าคงที่ของ class อื่นได้ด้วยคำสั่งนี้
ชื่อคลาส::ชื่อตัวแปร
ใน class Constant_Test_2 นั้น เราได้ทำการแสดงผลข้อมูลของ ANOTHER_CONSTANT ของ class Constant_Test_1 คำสั่งจึงเป็นดังนี้
print Constant_Test_1::ANOTHER_CONSTANT
ใน
class สุดท้าย เราทำการ +1 ให้กับค่าคงที่ A_CONSTANT
แต่ไม่ว่าเราจะเรียกใช้งาน class นี้กี่ครั้งก็ตาม
ค่าที่แสดงออกมาก็จะเท่ากับ 101 ไม่ใช่ 101 102 103 บวกทบกันไปเรื่อย
เพราะหลังจากบวกเสร็จ ค่า A_CONSTANT จะกลับมาเท่ากับ 100 ดังเดิม
เนื่องจากมันเป็นค่าคงที่
จบเรื่องของตัวแปรและค่าคงที่
==================================
Credit : Constance, Dubealex
==================================
Re: RGSS & Ruby Lesson - Chapter 2
2. Conditional Statements เงื่อนไข เงื่อนไข และ เงื่อนไข
หนึ่ง
ในสิ่งที่สำคัญของการเขียนโปรแกรม
อันเป็นตัวควบคุมการทำงานของสคริปต์เลยก็ว่าได้ ก็คือ เงื่อนไข หรือ
If-else statement นั่นเอง ก่อนอื่นเรามาดูก่อนดีกว่าว่า
เงื่อนไขที่ว่านั่นมันหมายถึงอะไร
เงื่อนไขในการเขียนโปรแกรมนั้นจะมีคำ
ตอบอยู่แค่สองอย่างคือ ใช่ กับ ไม่ หรือก็คือ true หรือ false ตามลำดับ
เราเรียกข้อมูลแบบนี้ว่า Boolean expression ใครไม่เข้าใจก็ลองคิดถึงสวิทช์ไฟ เปิด หรือ ปิด ทางแยกซ้ายหรือขวา สีขาวหรือดำดู ใน Boolean expression จะไม่มีการเปิดสวิทช์ครึ่งสวิทช์ หรือบุกฝ่าไปทางกลางระหว่างแยกซ้ายขวา หรือสีเทา ต้องอย่างใดอย่างหนึ่งเท่านั้น
ตัวอย่าง :
“สุนัขออกลูกเป็นกระบือ” - false
“1+1 เป็นสอง” – true
“หนึ่งล้าน มากกว่า หนึ่งร้อย” – true
ในการเขียนโปรแกรมนั้น จะมีคำสั่งที่ใช้เปรียบเทียบข้อมูลสองตัวและส่งคืนคำตอบเป็น true หรือ false อยู่ โดยสัญลักษณ์ต่างๆมีดังนี้
คำสั่ง ผลลัพธ์
= = เทียบว่าเท่ากันหรือไม่
!= เทียบว่าไม่เท่ากันหรือไม่
> เทียบว่ามากกว่าหรือไม่
< เทียบว่าน้อยกว่าหรือไม่
>= เทียบว่ามากกว่าหรือเท่ากันหรือไม่
<= เทียบว่าน้อยกว่าหรือเท่ากันหรือไม่
ลองทำดู : ลองดูโค้ดเหล่านี้แล้วทายผลลัพธ์ว่า true หรือ false
*เฉลย : true, false,true
นอกจากคำสั่งพื้นฐานด้านบนแล้วเราสามารถเพิ่มเงื่อนไขได้อีกเช่นกันดังนี้
คำสั่ง ผลลัพธ์
&& “และ” เงื่อนไขทั้งหมดต้องเป็นจริง ถึงจะได้ผลลัพธ์เป็นจริง
| | “หรือ” เงื่อนไขอันใดอันหนึ่งเป็นจริง ผลลัพธ์ก็จะเป็นจริง
ลองทำดู: ลองดูโค้ดเหล่านี้แล้วทายผลลัพธ์ว่า true หรือ false
* เฉลย : true,true,false
นอกจากนี้เรายังสามารถบรรจุข้อมูลเหล่านี้ลงในตัวแปรได้เช่นกัน
ตัวอย่าง : x = 5 == 6 จะเป็นการบรรจุค่า false ลงในตัวแปร x
เมื่อเราทราบการทำงานของเงื่อนไขแล้ว ลองมาดูคำสั่งที่ใช้ในการเช็คเงื่อนไขเพื่อควบคุมการทำงานของสคริปต์หรือโปรแกรมกันดีกว่า
If statement
คำสั่งนี้แปลตรงตัวก็คือ “ถ้า...แล้วจะ....” ซึ่งความหมายก็ตรงตัวคือ
หากเงื่อนไขนี้สมบูรณ์ ก็จะเกิดอะไรขึ้นตามมา โดยรูปแบบของโค้ดมีดังนี้
จากตัวอย่างจะพบว่า หน้าจอจะพิมพ์แต่คำว่า “ดอง ดอง ดอง” แน่นอนเพราะเรากำหนดไว้ตอนต้นว่าตัวแปร game_finish = false คือเป็นเท็จ
อย่างไรก็ตาม เราสามารถเพิ่มเงื่อนไขเข้าไปอีกได้ แทนที่จะมีเพียงแค่สองทางแยก โดยการใช้คำสั่ง elsif เข้ามาช่วย
จาก
ตัวอย่างจะพบว่า โปรแกรมจะทำการเช็คเงื่อนไขแรกสุดก่อนว่า age นั้นน้อยกว่า
13 หรือไม่ ถ้าน้อยกว่า ก็ไปขั้นต่อไปคือเช็คว่ามันน้อยกว่า 18 หรือไม่
ถ้าน้อยกว่า 18 ก็จึงพิมพ์คำว่า “วัยรุ่นสุดจี๊ด” ขึ้นมาบนหน้าจอนั่นเอง
ต่อไปจะเป็นเทคนิคขั้นสูงขึ้นมาหน่อยเรียกว่า nest หรือการเช็คเงื่อนไขซ้อนเงื่อนไขนั่นเอง
จากตัวอย่างจะพบว่า unless จะเช็คว่า cleaness เป็น false หรือไม่ ถ้าเป็น จึงพิมพ์คำว่า “ต้องทำความสะอาดซะแล้ว” บนหน้าจอ
Case statement
คำสั่งนี้เป็นคำสั่งที่ไว้ให้เราใช้เวลาเงื่อนไขนั้นมีหลายทางแยก
และเราขี้เกียจต้องมาเขียน elsif หนึ่งพันห้าร้อยยี่สิบตัว เราก็ใช้ case
statement ช่วยได้ ทั้งยังทำให้โค้ดเราดูสบายตา และเป็นระเบียบอีกด้วย
โดยรูปแบบของการเขียนโค้ดมีดังนี้
case statement จะทำการเช็คว่า ตัวแปรที่เราใส่เข้าไปนั้น มีค่าตรงกับเงื่อนไขไหน และจะทำการสั่งให้โค้ดในเงื่อนไขนั้นทำงาน
จาก
ตัวอย่างจะพบว่า โปรแกรมจะพิมพ์คำว่า “เลข 1” บนหน้าจอ
เพราะค่าของตัวแปรไปตรงกับเงื่อนไขที่เมื่อเท่ากับ 1 หากเราลองเปลี่ยน
number = 1 เป็น number = 0 หรือ number = 2
โปรแกรมก็จะทำงานตามเงื่อนไขนั้นๆ และหากไม่ตรงกับเงื่อนไขใดๆเลย
โปรแกรมจะไปทำงานในส่วนของ else ซึ่กง็คือ พิมพ์ว่า “ฉันโง่
นับเลขมากกว่านี้ไม่ไหวแล้ว” นั่นเอง
Loop
ลูป แปลตรงตัวก็คือ
วังวน นั่นก็หมายถึงการทำอะไรซ้ำๆกันวนเวียนซ้ำซากไปเรื่อย
ซึ่งเป็นเรื่องที่คอมพิวเตอร์ถนัดนักแล
การทำงานวนลูปนี้เป็นสิ่งที่สำคัญมากในการเขียนโค้ด
เพราะแม้เราจะก๊อปปี้และวางโค้ดซ้ำๆกันพันบรรทัด ยังไงโค้ดก็ต้องจบ
แต่การวนลูปจะทำให้โค้ดไม่มีวันจบได้
คำสั่งในการใช้ลูปก็มีมากมายต่างกันไปดังนี้
1. ลูป while
คำสั่งคือ
โปรแกรมจะสั่งให้โค้ดตรงส่วนสิ่งที่ต้องทำ ทำงานไปเรื่อยๆตราบใดที่เงื่อนไขเป็นจริง
2. ลูป until
โปรแกรม
จะสั่งให้โค้ดตรงส่วนสิ่งที่ต้องทำ
ทำงานไปเรื่อยๆตราบใดที่เงื่อนไขเป็นเท็จ
ลูปนี้เป็นเหมือนกับคำสั่งที่ตรงกันข้ามกับ while
3. ลูป for
ลูปประเภทนี้มักใช้กับการที่เรารู้แน่นอนแล้วว่าจะให้โปรแกรมวนทำงานเป็นจำนวนกี่ครั้ง โดยมีคำสั่งดังนี้
โดยโปรแกรมจะทำการไล่ค่าในตัวแปร ตั้งแต่ต้นไปจนถึงตัวเลขที่เรากำหนด
ตัวอย่าง :
จาก
ตัวอย่างนี้ โปรแกรมจะพิมพ์ค่า 0 ,1 ,2 ,3 ไปเรื่อยๆจนถึง 10
เพราะเราสั่งให้ตัวแปร x ทำงานโดยเริ่มจากค่า 0 ไปจนถึง ค่า 10 นั่นเอง
4. ลูป loop
โค้ดคือ
ลูป
นี้เป็นลูปที่ง่ายที่สุด เพราะมันไม่เช็คเงื่อนไขอะไรเลย
ก้มหน้าก้มตาให้โค้ดทำงานอย่างเดียวจนกว่าคอมจะเจ๊ง หรือโปรแกรมจะพัง
แน่นอน ใครจะอยากให้เรื่องแบบนั้นเกิดขึ้น
เราจึงต้องมีคำสั่งควบคุมการทำงานของลูปเหล่านี้ ซึ่งก็คือ....
การควบคุมการทำงานของลูป
ลูปนั้นมีคำสั่งที่ใช้การควบคุมการทำงานได้เช่นกัน เราอาจอยากให้มันวนใหม่
หรือเลิกวนลูป หรือทำใหม่แค่บางส่วนก็ได้ คำสั่งเหล่านั้นมีดังนี้
1. break
คำสั่งนี้จะเป็นการหยุดการทำงานของ loop นั้นทันที ถือว่าจบการทำงานทันทีและไปยังคำสั่งต่อไปหลังลูปเลย
2. next
ไว้ใช้ข้ามคำสั่งทุกคำสั่งใน ลูปแล้วไปยังรอบต่อไปในทันที
3. retry
เริ่มการทำงานของลูปนั้นๆใหม่ตั้งแต่ต้น
4. redo
เริ่มการทำงานของลูปนั้นๆใหม่เฉพาะรอบนั้นๆ
ตัวอย่าง :
จากตัวอย่างนี้ เมื่อ x = 5 ลูปนี้จะหยุดทำงานทันที
จาก
ตัวอย่างนี้ เมื่อ x = 5 ลูปนี้จะข้ามเลข 5 ไปแล้วไปยังรอบต่อไปคือ 6 ทันที
ผลลัพธ์ก็คือมันจะไม่แสดงตัวเลข 5 ออกมาบนหน้าจอนั่นเอง
จาก
ตัวอย่างนี้ เมื่อ x = 5 ลูปนี้จะเริ่มต้นใหม่
ซึ่งก็ทำให้โปรแกรมวนลูปไม่รู้จบ เพราะยังไงค่าที่ได้ก็คือ 5 อยู่ดี
แต่เมื่อค่า x เป็น 5 มันก็ต้องวนใหม่ อย่างนี้เรื่อยไปจนโปรแกรมพัง...
จาก
ตัวอย่างนี้ โปรแกรมจะพิมพ์ตัวเลขบนหน้าจอคือ 0 1 2 3 4 0 1 2 3 4
วนไปเรื่อยไม่รู้จบ เพราะเมื่อ x = 5 โปรแกรมจะเริ่มต้นวนลูปใหม่ที่ x = 0
นั่นเอง
จบเรื่องของเงื่อนไข เงื่อนไข และ เงื่อนไข
==============================
Credit : Constance, Dubealex
==============================
หนึ่ง
ในสิ่งที่สำคัญของการเขียนโปรแกรม
อันเป็นตัวควบคุมการทำงานของสคริปต์เลยก็ว่าได้ ก็คือ เงื่อนไข หรือ
If-else statement นั่นเอง ก่อนอื่นเรามาดูก่อนดีกว่าว่า
เงื่อนไขที่ว่านั่นมันหมายถึงอะไร
เงื่อนไขในการเขียนโปรแกรมนั้นจะมีคำ
ตอบอยู่แค่สองอย่างคือ ใช่ กับ ไม่ หรือก็คือ true หรือ false ตามลำดับ
เราเรียกข้อมูลแบบนี้ว่า Boolean expression ใครไม่เข้าใจก็ลองคิดถึงสวิทช์ไฟ เปิด หรือ ปิด ทางแยกซ้ายหรือขวา สีขาวหรือดำดู ใน Boolean expression จะไม่มีการเปิดสวิทช์ครึ่งสวิทช์ หรือบุกฝ่าไปทางกลางระหว่างแยกซ้ายขวา หรือสีเทา ต้องอย่างใดอย่างหนึ่งเท่านั้น
ตัวอย่าง :
“สุนัขออกลูกเป็นกระบือ” - false
“1+1 เป็นสอง” – true
“หนึ่งล้าน มากกว่า หนึ่งร้อย” – true
ในการเขียนโปรแกรมนั้น จะมีคำสั่งที่ใช้เปรียบเทียบข้อมูลสองตัวและส่งคืนคำตอบเป็น true หรือ false อยู่ โดยสัญลักษณ์ต่างๆมีดังนี้
คำสั่ง ผลลัพธ์
= = เทียบว่าเท่ากันหรือไม่
!= เทียบว่าไม่เท่ากันหรือไม่
> เทียบว่ามากกว่าหรือไม่
< เทียบว่าน้อยกว่าหรือไม่
>= เทียบว่ามากกว่าหรือเท่ากันหรือไม่
<= เทียบว่าน้อยกว่าหรือเท่ากันหรือไม่
ลองทำดู : ลองดูโค้ดเหล่านี้แล้วทายผลลัพธ์ว่า true หรือ false
CODE |
p 2 < 3 p 5 == 6 p (1+7) <= 8 |
นอกจากคำสั่งพื้นฐานด้านบนแล้วเราสามารถเพิ่มเงื่อนไขได้อีกเช่นกันดังนี้
คำสั่ง ผลลัพธ์
&& “และ” เงื่อนไขทั้งหมดต้องเป็นจริง ถึงจะได้ผลลัพธ์เป็นจริง
| | “หรือ” เงื่อนไขอันใดอันหนึ่งเป็นจริง ผลลัพธ์ก็จะเป็นจริง
CODE |
ตัวอย่าง: p 5 < 1 && 5 < 6 จะได้ false เพราะเงื่อนไขเป็นจริงแค่อันเดียว p (2+1) < 4 && 5 < 6 จะได้ true เพราะเงื่อนไขเป็นจริงทั้งสองอัน p 5 < 1 || 5 < 6 จะได้ true เพราะเงื่อนไขเป็นจริงแค่อันเดียว p 5 < 1 || 5 < 2 จะได้ false เพราะเงื่อนไขไม่เป็นจริงสักอัน |
ลองทำดู: ลองดูโค้ดเหล่านี้แล้วทายผลลัพธ์ว่า true หรือ false
CODE |
p 2 < 3 && (5+1) != 7 p 5 == 6 | | 5= =7 | | 5 = = 5 p (4+1) <= 5 && (5+2) <= 7 && (6+3) < 9 |
* เฉลย : true,true,false
นอกจากนี้เรายังสามารถบรรจุข้อมูลเหล่านี้ลงในตัวแปรได้เช่นกัน
ตัวอย่าง : x = 5 == 6 จะเป็นการบรรจุค่า false ลงในตัวแปร x
เมื่อเราทราบการทำงานของเงื่อนไขแล้ว ลองมาดูคำสั่งที่ใช้ในการเช็คเงื่อนไขเพื่อควบคุมการทำงานของสคริปต์หรือโปรแกรมกันดีกว่า
If statement
คำสั่งนี้แปลตรงตัวก็คือ “ถ้า...แล้วจะ....” ซึ่งความหมายก็ตรงตัวคือ
หากเงื่อนไขนี้สมบูรณ์ ก็จะเกิดอะไรขึ้นตามมา โดยรูปแบบของโค้ดมีดังนี้
CODE |
if เงื่อนไข สิ่งที่เกิดขึ้นเมื่อเงื่อนไขเป็นจริง else สิ่งที่เกิดขึ้นเมื่อเงื่อนไขเป็นเท็จ end ตัวอย่าง: game_finish = false if (game_finish = = true) p “เกมเสร็จแล้ว เย้” else p “ดอง ดอง ดอง” end |
อย่างไรก็ตาม เราสามารถเพิ่มเงื่อนไขเข้าไปอีกได้ แทนที่จะมีเพียงแค่สองทางแยก โดยการใช้คำสั่ง elsif เข้ามาช่วย
CODE |
ตัวอย่าง : age = 15 if (age < 13) p ‘เด็กเอ๋ยเด็กดี' elsif (age < 18) p 'วัยรุ่นสุดจี๊ด' elsif (age < 150) p 'เริ่มแก่แล้ว' else p 'อายุยืนจริงนะ ไปตายได้แล้วไป' end |
ตัวอย่างจะพบว่า โปรแกรมจะทำการเช็คเงื่อนไขแรกสุดก่อนว่า age นั้นน้อยกว่า
13 หรือไม่ ถ้าน้อยกว่า ก็ไปขั้นต่อไปคือเช็คว่ามันน้อยกว่า 18 หรือไม่
ถ้าน้อยกว่า 18 ก็จึงพิมพ์คำว่า “วัยรุ่นสุดจี๊ด” ขึ้นมาบนหน้าจอนั่นเอง
ต่อไปจะเป็นเทคนิคขั้นสูงขึ้นมาหน่อยเรียกว่า nest หรือการเช็คเงื่อนไขซ้อนเงื่อนไขนั่นเอง
CODE |
ตัวอย่าง : if 1 == 1 if 2 == 2 p 'Hello world!' end end [CODE] ใน ตัวอย่างนี้จะพบว่า โปรแกรมจะทำการเช็คเงื่อนไขก่อนว่า 1 = 1 จริงรึเปล่า ถ้าผ่าน จึงเข้าสู่ด่านตรวจต่อไป และถ้าผ่านทั้งสองด่าน โปรแกรมก็จะพิมพ์คำว่า “Hello World” ออกมา คำสั่งอีกอันหนึ่งคือ unless ซึ่งเปรียบเสมือนคู่ตรงข้ามของ if เพราะ if จะเช็คเงื่อนไขว่าเป็นจริงหรือไม่ แต่ unless จะเช็คเงื่อนไขว่าเป็นเท็จ หรือไม่ ช่น “ฉันจะไม่ทำความสะอาดห้องหรอก ถ้าห้องไม่สกปรกจริงๆ” ถ้าเป็น if ก็ต้องเช็คเงื่อนไขว่า ห้องสกปรกจริงๆหรือไม่ แต่ถ้าเป็น unless จะต้องเช็คว่า ห้องสะอาดรึเปล่า นั่นเอง [CODE] ตัวอย่าง : cleaness = false unless cleaness print 'ต้องทำความสะอาดซะแล้ว' end |
Case statement
คำสั่งนี้เป็นคำสั่งที่ไว้ให้เราใช้เวลาเงื่อนไขนั้นมีหลายทางแยก
และเราขี้เกียจต้องมาเขียน elsif หนึ่งพันห้าร้อยยี่สิบตัว เราก็ใช้ case
statement ช่วยได้ ทั้งยังทำให้โค้ดเราดูสบายตา และเป็นระเบียบอีกด้วย
โดยรูปแบบของการเขียนโค้ดมีดังนี้
CODE |
case ชื่อตัวแปร when ค่าที่ 1 ทำอะไรก็ได้ when ค่าที่ 2 ทำอะไรก็ได้ when ค่าที่ 3 ทำอะไรก็ได้ when ค่าที่ 5 ทำอะไรก็ได้ else ทำอะไรก็ได้ end |
CODE |
ตัวอย่าง : number = 1 case number when 0 p 'เลข 0' when 1 p 'เลข 1' when 2 p 'เลข 2' Else p 'ฉันโง่ นับเลขมากกว่านี้ไม่ไหวแล้ว' end |
ตัวอย่างจะพบว่า โปรแกรมจะพิมพ์คำว่า “เลข 1” บนหน้าจอ
เพราะค่าของตัวแปรไปตรงกับเงื่อนไขที่เมื่อเท่ากับ 1 หากเราลองเปลี่ยน
number = 1 เป็น number = 0 หรือ number = 2
โปรแกรมก็จะทำงานตามเงื่อนไขนั้นๆ และหากไม่ตรงกับเงื่อนไขใดๆเลย
โปรแกรมจะไปทำงานในส่วนของ else ซึ่กง็คือ พิมพ์ว่า “ฉันโง่
นับเลขมากกว่านี้ไม่ไหวแล้ว” นั่นเอง
Loop
ลูป แปลตรงตัวก็คือ
วังวน นั่นก็หมายถึงการทำอะไรซ้ำๆกันวนเวียนซ้ำซากไปเรื่อย
ซึ่งเป็นเรื่องที่คอมพิวเตอร์ถนัดนักแล
การทำงานวนลูปนี้เป็นสิ่งที่สำคัญมากในการเขียนโค้ด
เพราะแม้เราจะก๊อปปี้และวางโค้ดซ้ำๆกันพันบรรทัด ยังไงโค้ดก็ต้องจบ
แต่การวนลูปจะทำให้โค้ดไม่มีวันจบได้
คำสั่งในการใช้ลูปก็มีมากมายต่างกันไปดังนี้
1. ลูป while
คำสั่งคือ
CODE |
while (เงื่อนไข) สิ่งที่ต้องทำ end |
2. ลูป until
CODE |
until (เงื่อนไข) สิ่งที่ต้องทำ end |
จะสั่งให้โค้ดตรงส่วนสิ่งที่ต้องทำ
ทำงานไปเรื่อยๆตราบใดที่เงื่อนไขเป็นเท็จ
ลูปนี้เป็นเหมือนกับคำสั่งที่ตรงกันข้ามกับ while
3. ลูป for
ลูปประเภทนี้มักใช้กับการที่เรารู้แน่นอนแล้วว่าจะให้โปรแกรมวนทำงานเป็นจำนวนกี่ครั้ง โดยมีคำสั่งดังนี้
CODE |
for ตัวแปร in ช่วงตัวเลข สิ่งที่ต้องทำ end |
ตัวอย่าง :
CODE |
for x in (0..10) print x end |
ตัวอย่างนี้ โปรแกรมจะพิมพ์ค่า 0 ,1 ,2 ,3 ไปเรื่อยๆจนถึง 10
เพราะเราสั่งให้ตัวแปร x ทำงานโดยเริ่มจากค่า 0 ไปจนถึง ค่า 10 นั่นเอง
4. ลูป loop
โค้ดคือ
CODE |
loop do โค้ดๆๆๆๆ end |
นี้เป็นลูปที่ง่ายที่สุด เพราะมันไม่เช็คเงื่อนไขอะไรเลย
ก้มหน้าก้มตาให้โค้ดทำงานอย่างเดียวจนกว่าคอมจะเจ๊ง หรือโปรแกรมจะพัง
แน่นอน ใครจะอยากให้เรื่องแบบนั้นเกิดขึ้น
เราจึงต้องมีคำสั่งควบคุมการทำงานของลูปเหล่านี้ ซึ่งก็คือ....
การควบคุมการทำงานของลูป
ลูปนั้นมีคำสั่งที่ใช้การควบคุมการทำงานได้เช่นกัน เราอาจอยากให้มันวนใหม่
หรือเลิกวนลูป หรือทำใหม่แค่บางส่วนก็ได้ คำสั่งเหล่านั้นมีดังนี้
1. break
คำสั่งนี้จะเป็นการหยุดการทำงานของ loop นั้นทันที ถือว่าจบการทำงานทันทีและไปยังคำสั่งต่อไปหลังลูปเลย
2. next
ไว้ใช้ข้ามคำสั่งทุกคำสั่งใน ลูปแล้วไปยังรอบต่อไปในทันที
3. retry
เริ่มการทำงานของลูปนั้นๆใหม่ตั้งแต่ต้น
4. redo
เริ่มการทำงานของลูปนั้นๆใหม่เฉพาะรอบนั้นๆ
ตัวอย่าง :
CODE |
for x in (0..10) print x break if (x == 5) end |
CODE |
for x in (0..10) next if (x == 5) print x end |
ตัวอย่างนี้ เมื่อ x = 5 ลูปนี้จะข้ามเลข 5 ไปแล้วไปยังรอบต่อไปคือ 6 ทันที
ผลลัพธ์ก็คือมันจะไม่แสดงตัวเลข 5 ออกมาบนหน้าจอนั่นเอง
CODE |
for x in (0..10) redo if (x == 5) print x end |
ตัวอย่างนี้ เมื่อ x = 5 ลูปนี้จะเริ่มต้นใหม่
ซึ่งก็ทำให้โปรแกรมวนลูปไม่รู้จบ เพราะยังไงค่าที่ได้ก็คือ 5 อยู่ดี
แต่เมื่อค่า x เป็น 5 มันก็ต้องวนใหม่ อย่างนี้เรื่อยไปจนโปรแกรมพัง...
CODE |
for x in (0..10) retry if (x == 5) print x end |
ตัวอย่างนี้ โปรแกรมจะพิมพ์ตัวเลขบนหน้าจอคือ 0 1 2 3 4 0 1 2 3 4
วนไปเรื่อยไม่รู้จบ เพราะเมื่อ x = 5 โปรแกรมจะเริ่มต้นวนลูปใหม่ที่ x = 0
นั่นเอง
จบเรื่องของเงื่อนไข เงื่อนไข และ เงื่อนไข
==============================
Credit : Constance, Dubealex
==============================
Similar topics
» RGSS & Ruby Lesson - Chapter 1
» Ruby Script Creater เวอร์ชั่น Alfa 1.4 <Relese !!> โปรแกรมเขียนรูบี้สคริปครับ
» Ruby Script Creater เวอร์ชั่น Alfa 1.4 <Relese !!> โปรแกรมเขียนรูบี้สคริปครับ
หน้า 1 จาก 1
Permissions in this forum:
คุณไม่สามารถพิมพ์ตอบ