โครงสร้างของภาษา Ruby

ในการเขียนโปรแกรมทุกภาษา สิ่งแรกคือต้องทำความเข้าใจกับโครงสร้างหรือไวยากรณ์ของมันก่อน ภาษาคอมพิวเตอร์ก็เหมือนกับภาษามนุษย์ มีกฏและรูปแบบในการเขียนของมัน สำหรับภาษา Ruby นั้นมีโครงสร้างที่ง่ายต่อการเขียนและไม่ซับซ้อนและเป็นภาษาระดับสูง ในบทนี้ คุณจะได้เรียนรู้เกี่ยวกับโครงสร้างของภาษา Ruby

Simple Ruby program

การเริ่มต้นสำหรับมือใหม่ในทุกๆ ภาษาคือการเขียนโปรแกรม Hello World! มันเป็นโปรแกรมอย่างง่ายที่จะแสดงข้อความ "Hello World!" ออกมาทางหน้าจอคอมพิวเตอร์ของคุณ นี่เป็นโค้ดสำหรับโปรแกรมในภาษา Ruby

puts "Hello World!"

ในตัวอย่าง เป็นโปรแกรมแสดงข้อความออกทางหน้าจอ เราใช้เมธอด puts ใช้สำหรับแสดงข้อความออกทางหน้าจอ ซึ่งคุณจะได้เรียนอย่างละเอียดในภายหลัง

ในการรันโปรแกรมเราได้บอกไปแล้วก่อนหน้าในบทการติดตั้งภาษา Ruby เพื่อทบทวนความจำ นำโค้ดดังกล่าวไปวางบน Text editor ของคุณ และบันทึกเป็น hello.rb หรือชื่ออื่นที่คุณต้องการ ในภาษา Ruby นามสกุลของไฟล์จะต้องเป็น .rb เสมอ หลังจากนั้นใช้ Command Prompt เพื่อรันโปรแกรม

Hello World!

และนี่เป็นผลลัพธ์ของโปรแกรมที่คุณควรจะได้ ในตอนนี้ ลองเปลี่ยนข้อความเป็นอย่างอื่น เช่น ชื่อของคุณเอง

Statements

Statement คือคำสั่งที่เขียนขึ้นเพื่อควบคุมการทำงานหรือประมวลผลเพื่อให้ได้ผลลัพธ์บางอย่างออกมา มันเป็นส่วนที่ทำให้โปรแกรมทำงานและได้ผลลัพธ์ออกมา โดยทั่วไปแล้ว ในหนึ่งโปรแกรมอาจจะมีตั้งแต่หนึ่งหรือหลาย statement เพื่อทำงานรวมกัน มาดูตัวอย่าง

number = 1 + 3
name = 'marcuscode'
puts name
puts number

ในตัวอย่าง เราได้เขียนขึ้น 4 คำสั่งหรือ statement เพื่อให้โปรแกรมทำงาน ในภาษา Ruby นั้นจะใช้บรรทัดใหม่เพื่อแยกแยะแต่ละคำสั่งออกจากกัน มาดูตัวอย่างต่อไป

number = 1 + 3
name = 'marcuscode'
puts name; puts number

นอกจากการขึ้นต้นด้วยบรรทัดใหม่ คุณยังสามารถใช้เครื่องหมาย semicolon (;) เพื่อแยกคำสั่งออกจากกันได้ นี่จะทำให้คุณสามารถเขียนหลายๆ คำสั่งได้ในบรรทัดเดียวกันได้ จากตัวอย่างทั้งสองนั้นมีผลลัพธ์การทำงานที่เหมือนกัน แต่เราแนะนำให้เขียนหนึ่งบรรทัดต่อคำสั่ง เพราะมันจะทำให้โค้ดของคุณอ่านง่ายและเป็นระเบียบ

marcuscode
4

และนี่เป็นผลลัพธ์การทำงานของโปรแกรม

Expression

Expression คือการกระทำเพื่อให้ได้ผลลัพธ์หนึ่งค่าออกมา มันสามารถประกอบไปด้วย ตัวแปร ตัวดำเนินการหรือ Literal เท่านั้น Expression นั้นแตกต่างจาก Statement โดย Statement นั้นเป็นคำสั่งที่ประมวลเพื่อให้โปรแกรมทำงานบางอย่าง แต่สำหรับ Expression นั้นจะทำให้ได้ผลลัพธ์ค่าหนึ่งออกมาและเอาไปใช้ใน Statement ต่อไป ดังนั้น Expression สามารถเป็นส่วนหนึ่งของ Statement ได้ มาดูตัวอย่าง

5 + 3
1 * 4
(10 / 2) - 6
"Ruby" * 5

ในตัวอย่าง คำสั่งกลุ่มแรกคือ Expression และคำสั่งกลุ่มต่อมาคือ Statement ที่ทำงานแล้วได้ผลลัพธ์บางอย่าง อย่างไรก็ตาม เรายังสามารถเรียกทั้งหมดที่ว่า Statement ได้

อย่างที่เราได้บอก สิ่งที่แตกต่างก็คือ Expression ประมวลผลเพื่อให้ได้ค่าหนึ่งค่า ใน Expression 5 + 3 เป็นการนำตัวเลขมาบวกกันและได้ผลลัพธ์เป็น 8 ถัดไป 1 * 4 มาได้ผลลัพธ์เป็น 4 และสุดท้าย (10 / 2) - 6 ถัดมาได้ผลลัพธ์เป็น -1 และสุดท้ายเป็นการทำซ้ำ String "Ruby" 5 ครั้ง และเมื่อคุณลองนำโปรแกรมนี้ไปรัน โปรแกรมจะทำงาน แต่มันไม่ผลลัพธ์อะไรเกิดขึ้นหรือการแสดงผลอะไรให้คุณเห็น มาดูตัวอย่างถัดไป

สำหรับ Expression เพียงแค่อย่างเดียวนั้นจะสามารถทำงานได้ใน irb แน่นอนมันใช้สำหรับทดสอบคำสั่งหรือ Expression ที่ง่ายๆ และไม่ซับซ้อน หรือใช้เป็นเครื่องคิดเลขนั่นเอง
puts 5 + 3
puts 1 * 4
c = (10 / 2) - 6
puts c
puts "Ruby" * 5

แน่นอนว่า Expression อย่างเดียวไม่สามารถทำให้โปรแกรมทำงานสมบูรณ์ได้ มันจะต้องใช้ร่วมกับ Statement หรือคำสั่งอื่นๆ ในภาษา Ruby ในตัวอย่างเป็นการใช้เมธอด puts ซึ่งเป็นเมธอดสำหรับแสดงผล (String) ออกทางหน้าจอ และในคำสั่ง c = (10 / 2) - 6 เป็นการเก็บค่ากำหนดในตัวแปรก่อน หลังจากนั้นค่อยนำมาแสดงผล

8
4
-1
RubyRubyRubyRubyRuby

และนี่เป็นผลลัพธ์การทำงานของโปรแกรม

Comments

คอมเม้นต์ คือส่วนของซอสโค้ดที่ไม่มีผลต่อการทำงานของโปรแกรม มันใช้สำหรับการอธิบายโปรแกรมเพื่อบอกว่าส่วนนี้ทำงานอะไร การคอมเม้นต์โค้ดมีประโยชน์ในกรณีที่โปรแกรมมีขนาดใหญ่และซับซ้อนหรือการทำงานร่วมกับคนอื่น เพราะมันสามารถช่วยให้เข้าใจได้เร็วขึ้นเพียงแค่คอมเม้นต์

ในภาษา Ruby คุณสามารถคอมเม้นต์ได้สองวิธีคือ คอมเมนต์แบบหนึ่งบรรทัดและการคอมเม้นต์แบบหลายบรรทัด มาดูตัวอย่าง

# initialize variables
site_name = 'marcuscode'
year = 2014 # creation's year

# display to screen
puts site_name + ' was created in ' + year.to_s

ในตัวอย่าง เป็นการกำหนดค่าตัวแปรให้กับสองตัวแปรและแสดงผลออกทางหน้าจอ การคอมเม้นต์จะเริ่มต้นด้วยเครื่องหมาย hash (#) และข้อความหลังจาก # ทั้งบรรทัดจะไม่มีผลต่อการทำงานของโปรแกรมและถูกเพิกเฉยจาก Ruby Interpreter ต่อไปมาดูการคอมเม้นต์แบบหลายบรรทัด

=begin
This is a greeting program, the program ask for user's name
and then print out a greeting message to screen
=end


# ask for user's name
print 'What\'s your name?: '
name = gets.chomp

# greeting to user
puts 'Hello ' + name + '!, it\'s good to see you here.'

ในตัวอย่าง เป็นโปรแกรมสำหรับถามชื่อของผู้ใช้และแสดงข้อความทักทาย การคอมเม้นต์แบบหลายบรรทัดนั้นส่วนที่เป็นคอมเม้นต์นั้นจะอยู่ภายในคำสั่ง =begin และ =end และสองคำสั่งนี้ต้องอยู่อย่างโดดเดี่ยวในบรรทัดนั้นเสมอ คุณสามารถคอมเมนต์กี่บรรทัดก็ได้เท่าที่ต้องการ

ในโค้ดคุณได้เห็นเมธอด gets.chomp ใช้สำหรับรับค่าจาก Command Prompt หรือและเมธอด print ใช้สำหรับแสดงข้อความออกทางหน้าจอเช่นเดียวกันกับเมธอด puts แต่สิ่งที่แตกต่างคือเมธอด print จะไม่เพิ่มบรรทัดใหม่ในตอนท้ายในขณะที่เมธอด puts ทำ

What's your name?: Marcus
Hello Marcus!, it's good to see you here.

และนี่เป็นผลลัพธ์การทำงานของโปรแกรม เราได้ใส่ชื่อ Marcus และกด Enter หลังจากนั้นโปรแกรมแสดงการทักทาย และถ้าหากในตอนนี้คุณยังไม่เข้าใจว่าคำสั่งต่างๆ นั้นใช้ทำอะไร ไม่ต้องกังวล คุณจะได้เรียนมันทั้งหมดในบทต่อๆ ไปของบทเรียนนี้ สำหรับในบทนี้ เราจะเน้นให้คุณเข้าใจเพียงโครงสร้างของภาษาให้ดีก่อน

Literals

Literals คือค่าคงที่ใดๆ ภายในโค้ดของโปรแกรม ซึ่งค่าเหล่านี้จะใช้สำหรับกำหนดให้กับตัวแปรหรือค่าคงที่ ในภาษา Ruby นั้นมี Literal ประเภทต่างๆ เช่น ตัวเลข ข้อความ Boolean และ Symbol เป็นต้น มาดูตัวอย่าง

# Literals
true
10
16.5
'Australia'
:name

# Assign literal to variables
liked = true
apple = 10
money = 16.5
country = 'Australia'
symbol = :name

ในตัวอย่าง เป็น Literal ของข้อมูลประเภทต่างๆ ในภาษา Ruby โดย true นั้นเป็น Literal ของ boolean 10 และ 16.5 เป็น Literal ของตัวเลข และ'Australia' นั้นเป็น Literal ของ String และสุดท้าย :name เป็น Literal ของ Symbol ที่จะขึ้นต้นด้วยเครื่องหมายโคลอน (:)

Indentation and white-space

การเว้นวรรค ชื่อช่องว่างระหว่างคำสั่ง Literal หรือ Expression การเว้นวรรคจะช่วยให้โค้ดเป็นระเบียบและอ่านง่าย ดังนั้น การเว้นวรรคเป็นจำนวนมากนั้นไม่มีผลต่อการทำงานของโปรแกรม แต่การเว้นวรรคในบางที่นั้นจำเป็น ยกตัวอย่าง เช่น การเว้นวรรคระหว่างคำสั่งของภาษากับ Literals หรือ Expression ที่จะช่องมีอย่างน้อยหนึ่งช่องว่าง

a = 1       # good
a=1 # bad
a = 1 # bad

puts 'Hello' # good
puts 'Hello' # bad

puts 123 # work
puts123 # error

ในตัวอย่าง เป็นการเว้นช่องว่างในรูปแบบต่างๆ ในการประกาศตัวแปร a นั้น ทั้งสามคำสั่งให้ผลลัพธ์ที่เหมือนกัน แต่ควรทำตามแบบแรกเพื่อที่จะทำให้โค้ดของคุณอ่านง่าย และต่อมาเป็นการใช้เมธอด puts แสดงข้อความก็ควรทำตามแบบแรก

if site == 'marcuscode'
puts 'Welcome'
end

สำหรับบางส่วนที่ต้องเว้นวรรคคือ ระหว่างคำสั่ง if กับ Expression ของมัน และระหว่างเมธอด puts กับพารามิเตอร์ของเมธอด

Keywords ในภาษา Ruby

Keyword คือคำสั่งสงวนที่ถูกใช้โดย Ruby interpreter ในการประมวลผลโปรแกรม นั่นหมายความว่าคุณไม่สามารถใช้ Keyword ในการตั้งชื่อตัวแปร เมธอด คลาส หรืออื่นๆ ที่กำหนดโดยผู้ใช้ได้ นี่เป็นตารางของ Keyword ทั้งหมดในภาษา Ruby

__ENCODING____LINE____FILE__BEGIN
ENDaliasandbegin
breakcaseclassdef
defined?doelseelsif
endensurefalsefor
ifinmodulenext
nilnotorredo
rescueretryreturnself
superthentrueundef
unlessuntilwhenwhile
yield

นี่ก็เป็น Keyword ทั้งหมดในภาษา Ruby

ในบทนี้ คุณได้เรียนรู้เกี่ยวกับโครงสร้างของภาษา Ruby ในเบื้องต้น ซึ่งจะทำให้คุ้นคุ้ยเคยกับภาษาได้เพียงเล็กน้อย และในบทต่อ คุณจะเป็นการเขียนโปรแกรมและประยุกต์กับการใช้งานกับ ตัวแปร ประเภทข้อมูล การรับค่าและการแสดงผล การควบคุมโปรแกรม และการสร้างเมธอด เป็นต้น