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

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

โปรแกรมแรกในภาษา Ruby

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

hello.rb
puts "Hello World!"

ในตัวอย่าง เป็นโปรแกรมสำหรับแสดงข้อความออกทางหน้าจอ เมธอด puts นั้นใช้สำหรับแสดงข้อความออกทางหน้าจอ ซึ่งเป็นช่องทางในการส่งออกมาตรฐาน (Standard output) ในภาษา Ruby

ในโปรแกรมแรกของเรานั้น เราได้บันทึกชื่อไฟล์เป็น hello.rb สังเกตว่านามสกุลของไฟล์จะเป็น .rb เสมอ และหลังจากบันทึกโปรแกรมเสร็จแล้ว เปิด Command Line ขึ้นมาแล้วลองรันโปรแกรมด้วยคำสั่ง

ruby hello.rb

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

Hello World!

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

Statements

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

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

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

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

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

marcuscode
4

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

Expression

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

นี่เป็นตัวอย่างของ Expression ที่ถูกต้องในภาษา Ruby

expression1.rb
p -2
p 3 + 5
p (10 / 2) * 6
p 8 == 8
p "Ruby" * 5
p "marcus" + "code"

ในตัวอย่างนั้นเป็นการสร้าง Expression จากค่าคงที่และตัวดำเนินการในภาษา Ruby ซึ่งสุดท้ายแล้วจะได้ค่าใหม่ออกมา ดังนั้นเราสามารถนำค่าที่ได้นั้นไปใช้เพื่อสร้างเป็น Expression ใหม่ได้ มาดูในตัวอย่างถัดไป

expression2.rb
a = 10
b = 4
# group 1
p a + b
p a - b

# group 2
c = a * b
d = (a + b) * (a - b)
p c
p d

ในตัวอย่างเราได้ประกาศตัวแปร a และ b และหลังจากนั้นทำการคำนวณด้วนตัวดำเนินการในแบบต่าง ซึ่ง Expression ในกลุ่มแรกนั้นเป็นการนำค่าจากตัวแปรทั้งสองมาบวกและลบกันตามลำดับแล้วแสดงค่าที่ได้ออกทางหน้าจอ

ในกลุ่มที่สองนั้นเป็นการสร้าง Expression และกำหนดไว้ในตัวแปรก่อนที่จะนำมาแสดงผล สังเกตว่าเราสามารถสร้าง Expression ที่ซับซ้อนได้ เหมือนกับนิพจน์ทางคณิตศาสตร์

14
6
40
84

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

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 asks for user's name
and then print out a greeting message to the 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 ในเบื้องต้น ซึ่งจะทำให้คุ้นคุ้ยเคยกับภาษาได้เพียงเล็กน้อย และในบทต่อ คุณจะเป็นการเขียนโปรแกรมและประยุกต์กับการใช้งานกับ ตัวแปร ประเภทข้อมูล การรับค่าและการแสดงผล การควบคุมโปรแกรม และการสร้างเมธอด เป็นต้น