จากบทที่ 2 ที่มีการเลี้ยวซ้าย มาทดลองสร้างฟังก์ชัน turn_right()
แม้ว่าโปรแกรม FirstKarel ข้างต้น แสดงให้เห็นว่าเป็นไปได้ที่จะใช้ตัวดำเนินการที่จะให้หุ่นยนต์คาเรลเลี้ยวขวา turn_right() โดยใช้คำสั่งที่หุ่นยนต์ Karel มีเท่านั้น ซึ่งกรอบแนวคิดในการออกแบบโปรแกรมอาจจะยังไม่ดีเท่าที่ควร เพราะว่าเราต้องใช้คำสั่งเพื่อทำให้หุ่นยนต์คาเรล เลี้ยวซ้ายถึง 3 คำสั่ง ถึงจะทำให้ เลี้ยวขวาได้ เป็นไปได้หรือไม่ที่เราจะออกแบบโปรแกรมให้หุ่นยนต์คาเรลรู้จักคำสั่ง turn_right() เพราะมันจะทำให้เขียนโปรแกรมได้ง่ายขึ้น สั้นลง และอ่านเข้าใจได้ง่าย
แน่นอนว่า ภาษาการเขียนโปรแกรมสำหรับหุ่นยนต์ Karel สามารถที่จะนิยามคำสั่งใหม่ได้
โดยการที่เรานำคำสั่งที่มีอยู่แล้วมารวมกัน
เมื่อใดก็ตามที่เรามีลำดับของคำสั่งเพื่อให้ Karel
ทำหน้าที่บางอย่าง เช่น การเลี้ยวขวา เราสามารถกำหนดฟังก์ชั่นใหม่ตามลำดับของคำสั่งที่มีอยู่ได้ ซึ่ง
รูปแบบสำหรับการกำหนดฟังก์ชั่น Karel ใหม่นั้น มีความหมายเหมือนกับ main ()
ในตัวอย่างก่อนหน้านี้ซึ่งเป็นนิยามฟังก์ชันที่ถูกต้อง นิยามฟังก์ชันทั่วไปมีลักษณะเช่นนี้:
def
name():
commands that make up the body of the function
ดังนั้น ผู้ใช้จะสามารถสร้างฟังก์ชัน turn_right() ได้ด้วยการประกาศฟังก์ชัน turn_right() แล้วใส่คำสั่ง turn_left() ไว้ในฟังก์ชัน turn_right() 3 ครั้ง
def turn_right():
turn_left()
turn_left()
turn_left()
ในกรณีเดียวกัน ถ้าต้องการสร้างฟังก์ชันเพื่อให้หุ่นยนต์คาเรลสามารถ หันกลับหลัง เราสามารถสร้างฟังก์ชัน
turn_around()
ได้โดยใส่คำสั่งทำการเลี้ยวซ้าย 2 ครั้งไว้ในฟังก์ชัน turn_around
def turn_around():
turn_left()
turn_left()
เราสามารถที่จะใช้ชื่อของฟังก์ชันใหม่ ที่เราได้สร้างขึ้นในขั้นตอนก่อนหน้ามาใช้ในส่วนของการเขียนโปรแกรมได้
ยกตัวอย่างเช่น เราสามารถใช้คำสั่ง turn_right()
เพียงบรรทัดเดียว แทนการใช้คำสั่ง
turn_left()
3 ครั้ง ซึ่งจะช่วยให้ผู้อ่านเข้าใจง่าย และส่วนของโปรแกรมสั้นลง
สามารถดูตัวอย่างของโปรแกรมได้ดังตัวอย่างด้านล่าง
ภาษาไพธอนใช้การย่อหน้า (Indent) ในการจัดกลุ่มคำสั่งเป็นกลุ่มๆ ซึ่งกลุ่มของคำสั่งที่ถูกย่อหน้าเรียงตรงกันจะนับเป็น Code Block ด้วยโครงสร้างของภาษาไพธอน ไม่อนุญาตให้ประกาศฟังก์ชันใหม่ภายในฟังก์ชันอื่นๆ ได้