หนึ่งในวิธีที่จะช่วยเราพัฒนา Coding Skill ได้เร็วที่สุดคือการลองเขียน Simple Program อย่างเกมง่ายๆ แล้วลองเล่นดูว่าโปรแกรมรันได้ถูกต้องหรือเปล่า สำหรับคนที่เพิ่งเริ่มเขียนโค้ดใหม่ๆ ลองเริ่มจากเกมที่กฏง่ายๆก่อน เช่น Number Guessing Game (เกมทายตัวเลข)
Just play. Have fun. Enjoy the game.
— Michael Jordan
บทความวันนี้จะสอนเขียนเกมทายเลขง่ายๆใน R เขียน Code จริงไม่ถึง 20 ไลน์ (เสร็จใน 5 นาที) พร้อมอธิบายการทำงานของ Control Flow ใน R เบื้องต้น เช่น if-else เพื่อสร้างเงื่อนไขในเกม
Simple Game Rules
สำหรับกฏของเกมนี้ก็ง่ายๆ
- ทายตัวเลขระหว่าง 1-100
- ถ้าทายถูก ก็ชนะ จบเกม
- ถ้าทายผิด โปรแกรมจะบอกว่าเราทายเลขสูงหรือต่ำเกินไป (Hint)
- ทายซ้ำได้เรื่อยๆ จนกว่าจะถูก
- ถ้าอยากหยุดเกมแค่กดปุ่ม
ESC
Function Anatomy in R
เราสามารถเขียน function ใช้เองใน R ได้ง่ายๆ ด้วย template ด้านล่าง ภายในเครื่องหมายปีกกา {}
คือ body ของฟังชั่นที่ R จะรันผลจากบนลงล่างไล่ไปทีละไลน์
function_name <- function() { ... body ... ... body ... }
สำหรับ control flow ที่เราใช้ในการเขียนโปรแกรมวันนี้คือ
if
else
repeat
break
หลายๆคนน่าจะพอเดาได้ว่า if
else
ใช้สร้างเงื่อนไข ส่วน repeat
เราใช้เพื่อให้โปรแกรมรันซ้ำไปเรื่อยๆจนกว่าเราจะทายเลขถูก และโปรแกรม break
ออกจาก repeat loop
ส่วนโครงของ if-else จะหน้าตาแบบนี้ เงื่อนไข (condition) จะเขียนในวงเล็บ
if (condition) { ... if TRUE, do something ... } else { ... if FALSE, do something else ... }
Example Program
ดาวน์โหลดตัวอย่างโค้ด guess_game.R ได้ที่นี่ เพื่อนๆสามารถเปิดไฟล์นี้ขึ้นมาใน RStudio แล้วกด ctrl+shift+enter พร้อมกันเพื่อรันโปรแกรมนี้
guessNum <- function() {
## print game start
print("Game Starts!")
print("Rule: Guess a number between 1 and 100")
## initialize random number
hidden_num <- sample(1:100, size = 1)
## repeat loop
repeat {
## ask for user input
n <- as.numeric(readline(prompt = "Enter a number between 1 and 100:"))
## game rules
if (n < hidden_num) {
print("You're too low!")
} else if (n > hidden_num) {
print("You're too high!")
} else {
print("You're right!")
print(paste("The hidden number is", hidden_num))
break
}
}
}
เวลาเราจะเริ่มเล่นเกม แค่พิมพ์ guessNum()
ลงไปใน console แล้วก็เลยทายตัวเลขได้เลย สามารถทายซ้ำได้เรื่อยๆจนกว่าจะทายถูก โปรแกรมจะให้ hint เราว่าเลขที่เราทายนั้นสูงหรือต่ำเกินไป ถ้าเราทายถูกเมื่อไหร่โปรแกรมจะพิมพ์ว่า "You're right!"
แล้วก็ break
เพื่อจบเกม
Inside of every problem lies an opportunity.
— Robert Kiyosaki
สำหรับมือใหม่เวลาเขียนโปรแกรมใน R จะเจอ error ค่อนข้างบ่อย และปัญหาที่เจอบ่อยสุดเลยคือใส่ {}
ไม่ครบ โปรแกรมจะรันไม่ออก ลองเช็คโปรแกรมของเราดีๆก่อนรัน
ข้อดีของการฝึกเขียนโปรแกรมไม่ว่าจะภาษาอะไรก็ตาม ช่วยเรื่องวิธีการคิดอย่างเป็นระบบ รวมถึงช่วยพัฒนา problem solving skill ฝึกเขียนบ่อยๆเดี๋ยวก็เก่งขึ้นเอง ถ้าไม่เลิกไปซะก่อน แฮร่!!
Are You Ready?
อัพเดทความรู้ใหม่ๆเรื่องสถิติ data science และ programming ฟรีตลอดชีวิตที่ Facebook | Blog | Free Online Courses เก่งขึ้นทุกวัน แค่อ่านบล๊อกเรา อย่าลืมกด see first เพจด้วยน๊า
DataRockie — Get One Percent Better Everyday