6. ฟังก์ชัน(Function)

___________________

รับสอนเขียนJAVA , C# , VB.net

โทร 0853507540

___________________

6. ฟังก์ชัน(Function)

            ฟังก์ชันหรือเรียกอีกชื่อหนึ่งว่าเมท็อด(method) มีความสำคัญต่อการเขียนโปรแกรมมากเพราะช่วยในการนำส่วนของโปรแกรมที่มีการทำงานซ้ำๆแยกออกมาเป็นส่วนย่อยๆ ช่วยลดความซ้ำซ้อนของโค๊ดภายในโปรแกรมและทำให้อ่านง่ายด้วย

เรื่องทั่วไปของเมท็อด

            จริงๆก่อนหน้าที่จะสังเกตเห็นว่าเราได้มีการใช้งานเมท็อดอยู่แล้วนั่นก็คือเมท็อด main ซึ่งมีความสำคัญคือการเป็นจุดเริ่มต้นการทำงานของโปรแกรม เพราะเป็นสิ่งที่จาวากำหนดมา โดยในตอนแรกๆที่เริ่มเขียนโปรแกรมเราจะเขียนทุกอย่างลงไปใน main แต่ถ้าเขียนไปเรื่อยๆจะพบว่าการเขียนใน main อย่างเดียวนั้น โปรแกรมจะยาวมากๆและเมื่อเกิด error ขึ้น ก็อาจจะทำให้การแก้ไขเกิดความลำบาก ดังนั้นการนำเมท็อดเข้ามาช่วยจะทำให้เป็นการลดความซับซ้อนในตรงนี้ลงไป เพราะเมท็อดจะนำสิ่งที่ใช้บ่อยๆแยกออกมาเขียนต่างหาก สำหรับการตั้งชื่อของเมท็อดนิยมตั้งชื่อที่เป็นคำกริยาที่สื่อความหมายเพราะว่าเมท็อดก็คือฟังก์ชัน ฟังก์ชันก็คือการทำงานพอเป็นเรื่องเกี่ยวกับการทำๆจึงตั้งชื่อคำกริยา เช่น getName, setName, random, paint เป็นต้น

ตัวอย่างของฟังก์ชัน

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

 

รูป 6-1

บรรทัดที่ 6-11 : การเขียนฟังก์ชันจะวางไว้บนหรือล่างของเมท็อด main ก็ได้ ที่หัวเมท็อด readInt

ในบรรทัดที่ 6 จะ มีปุ่มที่เป็นเครื่องหมายขีดลบอยู่ข้างๆ เมื่อกดจะเป็นการหุบเมท็อดนั้นเอาไว้เพื่อให้อ่านโค๊ดได้ง่ายๆเราอาจหุบเมท็อดที่เขียนเสร็จแล้วเอาไว้จะได้ใส่ใจกับเมท็อดที่เหลือได้เลย โดนเมท็อด readInt จะ ทำหน้าที่ในการแสดงข้อความออกทางหน้าจอเพื่อให้ผู้ใช้ใส่ข้อมูลและการรับข้อมูลจากแป้นพิมพ์ มาใส่ตัวแปล value จากนั้นก็ส่งค่า (return) value กลับไปที่ที่เรียกเมท็อดนี้

บรรทัดที่ 12-17 : เมท็อด add จะทำหน้าที่ในการบวกข้อมูล จากนั้นจึงส่งค่าผลรวมกลับไปยังที่ที่

เรียกเมท็อดนี้

บรรทัดที่ 18-24 : เช่นเดียวกับ add แต่จะทำหน้าที่ลบ

บรรทัดที่ 25 : ภายในเมท็อด main จะมีการทำงานดังนี้

บรรทัดที่ 27 : ประกาศตัวแปร sc เป็น Scanner โดยที่บรรทัดที่ 28 ประกาศอีกตัวแปรนึงเป็น int และเรียกใช้

เมท็อด readInt เพื่อเก็บค่าจากทางแป้นพิมพ์ การทำงานของโปรแกรมก็จะกระโดดไปทำบรรทัดที่ 8-

10 จากนั้นจึงกลับมาที่ บรรทัดที่ 28 อีกครั้งเพื่อทำบรรทัดต่อไป

บรรทัดที่ 29 : ประกาศอีกตัวแปรเพื่อรับเลขจำนวนที่สองที่ใช้สำหรับการคำนวณ และจะทำแบบเดียวกับ

บรรทัดที่ 27

บรรทัดที่ 31 : เรียกใช้เมท็อด add

บรรทัดที่ 32 :  เรียกใช้เมท็อด minus

ผลลัพธ์ที่ได้

 

รูป6-2

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

รายละเอียดเมท็อด

            รายละเอียดของเมท็อดที่สำคัญๆมีอยู่ 3 เรื่อง คือการเขียนหัวของเมท็อด ตัวของเมท็อดและการเรียกใช้งานเมท็อดให้ถูกวิธี

หัวเมท็อด

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

            Public static ประเภทของลัพธ์ ชื่อเมท็อด (พารามิเตอร์ที่เข้าเมท็อด)

–          ชื่อของเมท็อดก็คือชื่อที่ใช้ระบุว่าเมท็อดนี้ทำงานอะไร การตั้งชื่อเหมือนกับการตั้งชื่อตัวแปรแต่นิยมใช้คำกริยาสำหรับบอกว่าเมท็อดจะทำอะไร บางทีก็ตั้งเป็นคำนาม แต่การตั้งเป็นคำนามจะนิยมใช้สำหรับการคืนค่าของนามนั้นออกไปเช่น x, width แต่บางคนก็พยายามตั้งเป็นคำกริยาเช่น getWidth, getX

–          ประเภทองผลลัพธ์คือเมื่อเมท็อดทำงานเสร็จจำให้คืนค่าอะไรออกไปก็ให้ตั้งให้ตรงกับที่จะสิ่งออกไป เช่นในเมท็อด add ของบน ต้องคืนผลลัพธ์ที่ได้จากการบวกตัวเลขจำนวนเต็มสองจำนวนดังนั้นก็ต้องคืนค่าผลลัพธ์ที่เป็นจำนวนเต็ม จึงมีคำว่า int หน้าชื่อเมท็อด add

–          พารามิเตอร์(parameter) คือตัวแปรที่รับเข้ามาจากที่ๆเรียกเมท็อดเพื่อให้มาประมวลผลภายในเมท็อด ดังนั้นถ้ามีหลายๆเมท็อดที่ชื่อเหมือนกันโปรแกรมจะเลือกเมท็อดที่พารามิเตอร์ตรงกับเมท็อดนั้นๆ เรียกว่า overloading

 

รูป 6-3

จากในรูปมีเมท็อด add สองอันแต่รับพารามิเตอร์คนละตัวดังนั้นถ้ามีการเรียกใช้โปรแกรมๆจะดูว่าเมท็อดไหนรับพารามิเตอร์แบบไหนแล้วจะส่งการทำงานไปที่เมท็อดนั้นๆ ดังนั้นในบรรทัดที่ 23 จะส่งการทำงานไปที่บรรทัดที่ 11 ส่วนบรรทัดที่ 28 จะส่งการทำงานไปที่บรรทัดที่ 6

ตัวเมท็อด

            ตัวเมท็อดคือส่วนที่เขียนอยู่ระหว่าง { และ } ภายใต้หัวของเมท็อด หลังจากการทำงานของเมท็อดเสร็จเรียบร้อยก็จะกลับไปทำงานคำสั่งต่อไปใน main ต่อ

–          ภายในตัวเมท็อดหากเราทำการประกาศตัวแปร ตัวแปรนั้นจะเป็นของเมท็อดๆนั้นเท่านั้น ไม่สามารถนำไปใช้ที่อื่นได้ เรียกว่า ตัวแปรเฉพาะที่(local variable) ซึ่งตัวแปรเฉพาะที่ชื่อเหมือนกันแต่อยู่กันคนละเมท็อดก็ถือว่าเป็นคนละตัวแปรเลยไม่เกี่ยวข้องกัน

–          ถ้าเมท็อดมีผลลัพธ์ที่ต้องคืนค่าออกไป จะต้องมีคำสั่ง return x; ซึ่งตัวแปร x จะต้องเป็นตัวแปรประเภทเดียวกันกับประเภทของตัวแปรที่จะคืนค่าออกไป แต่ถ้าไม่มีการคืนค่าออกไปเมท็อดจะสิ้นสุดการทำงานที่เครื่องปิดของ } พอดี

 

รูป 6-4

บรรทัดที่ 17 : ใช้เมท็อด f โดยให้ประเภทตัวแปรที่คืนค่าออกไปเป็น double แต่เมื่อ บรรทัดที่ 19 คืนค่าของไป

เป็น int จะเปลี่ยนเป็น double ให้อัตโนมัติ

บรรทัดที่ 23 : ใช้เมท็อด f โดยให้ประเภทตัวแปรที่คืนค่าออกไปเป็น int แต่เมื่อต้องการคืนค่าคืนเป็น

double(0.0) โปรแกรมจะ error เพราะไม่สามารถเปลี่ยนค่าจาก double  เป็น int ได้

ดังนั้นการต้องคืนค่าประเภทเดียวกันกับประเภทของตัวแปรที่จะคืนค่าออกไป

แผนผังการเรียนเขียนโปรแกรม

 

___________________

รับสอนเขียนJAVA , C# , VB.net

โทร 0853507540

___________________

 

ใส่ความเห็น