วันพุธที่ 23 พฤศจิกายน พ.ศ. 2559

Function

Function

แบ่งโปรแกรมออกเป็นส่วนย่อยๆ
·         เรียกส่วนย่อยว่า subroutine, subprogram, function, method
·         แต่ละ function มีหน้าที่ในตัวเองอย่างเด่นชัด
·         โปรแกรมอ่านง่าย
·         function เรียกใช้ได้หลายครั้ง


โปรแกรมเริ่มต้น



โปรแกรม เมื่อมี function


องค์ประกอบของฟังก์ชัน




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



ส่วนตัวของฟังก์ชัน
·         คำสั่งต่างๆที่ทำงานตามข้อกำหนด
·         ถ้าต้องการคืนผลการทำงานให้ผู้เรียกใช้คำสั่ง return คามด้วยค่าที่ต้องการคืนผลลัพธ์


·         ถ้าต้องการคืนหลายค่า ก็คืนเป็น tuple หรือ list



ส่วนตัว : Local Variables
·         พารามิเตอร์และตัวแปรในฟังก์ชันก์ใด เป็นตัวแปรที่ใช้ได้ในฟังก์ชันนั้น
ชื่อซ้ำกันได้ ถ้าอยู่คนละฟังก์ชัน
เรียกใช้ตัวแปร ที่อยู่คนละฟังก์ชันไม่ได้

ตัวแปรของผู้เรียกกับของฟังก์ชันเป็นคนละตัว
                ตัวแปรเก็บ int, float, bool ของฟังก์ชันเปลี่ยนแค่ของผู้เรียกไม่เปลี่ยน เพราะคนละตัว
กรณีเป็นตัวแปรแบบ list, tuple, set, dict ตัวแปรของผู้เรียกกับพารามอเตร์ของฟังก์ชันเป็นคนละตัว แต่อ้างอิงที่เก็บข้อมูลเดียวกัน


เมื่อใดควรเขียนฟังก์ชันใหม่
·         เมื่อฟังกืชันที่เขียนอยู่ยาวเกินไปหรือเข้าใจได้ยาก
·         เมื่อมีกลุ่มคำสั่งที่เขียนซ้ำกัน หรือทำงานเหมือนกัน แต่ทำกับข้อมูลต่างกัน

ข้อแนะนำการเชียนฟังก์ชัน
·         ควรตั้งชื่อสือความหมาย
·         ควรมีภาวะที่ต้องทำหนึ่งอย่างตามชื่อ
·         ควรสั้นกระทัดรัด อ่านเข้าใจง่าย
·         ควรพารามิเตอร์จำนวนไม่มาก







Recursive Function : ฟังก์ชันแบบเวียนเกิด

            ความสำพัน์เวียนเกิด (Recurrences)
·         การเขียนคสามสัมพัน์ของจำนวนเต็มในลำดับ






ข้อดี-ข้อด้อย
การเขียนแบบ recursive มีทั่งข้อดีและข้อด้อย
ข้อดี
·         สั้นกระทัดรัด
·         ในบางกรณี มุมมองแบบ recursive จะทำให้เห็น วิธีแก้ปัณหาได้ง่ายขึ้น
·         ถ้าจำนวนชั้นของ loop ไม่ คงที่ การใช้ recursive จะง่ายกว่ามาก
ข้อด้อย
·         บางครั้งการทำงายช้ากว่าแบบ loop
·         ใช้หน่วยความจำมากกว่า

การคำนวณ 




ตัวอย่าง flatten_list






ไม่มีความคิดเห็น:

แสดงความคิดเห็น