เป็นโปรแกรมย่อย (subprogram) ชนิดหนึ่ง ที่มีหน้าที่ คำนวณหาค่า เมื่อได้ค่าแล้ว ต้องส่งค่านั้นกลับไปยัง โปรแกรม หลัก (main program) การส่งค่ามาคำนวณใน โปรแกรม ย่อยนั้นมี 2 แบบคือ แบบแรกเรียกว่า แบบฟังก์ชัน ซึ่งจะส่งค่ากลับไปยัง โปรแกรมหลักได้ทีละค่า ( อีกแบบหนึ่งเรียกว่า แบบ procedures ซึ่งจะส่งค่าที่คำนวณ ได้กลับไปโปรแกรมหลักได้ทีละหลายค่า ) Show ถ้าพูดถึงคำว่า Function แล้ว ความคิดแรกทุกคนน่าจะนึกถึงวิชาคณิตศาสตร์ แต่ไหนๆ บล็อกนี้ก็เป็นบล็อก Programming แล้ว เราจะขอพูดถึงเรื่องฟังก์ชันในมุมมองของโปรแกรมเมอร์แทนละกัน Function คืออะไรนิยามของฟังก์ชันคือ "Black Box ที่รับค่าบางอย่างเข้าไป แล้วทำการคำนวณแล้วตอบผลลัพธ์กลับมา" ในวิชาคณิตศาสตร์จะเทียบได้กับกราฟที่ไม่มีจุด ถ้าเทียบกับภาษาโปรแกรม
เหตุผลที่มี output ได้แค่ค่าเดียวก็เพราะฟังก์ชันคือการส่งค่าไปคำนวณหรือประมวลผลอะไรบางอย่างแล้วส่งคำตอบกลับมา แล้วการส่งคำตอบกลับมาเนี่ย มันก็มีได้คำตอบเดียวยังไงล่ะ ... การคำนวณไม่สามารถให้คำตอบ 2 ค่าด้วยคำถามเดียวกันได้นะ (แม้ว่าจะคำนวณผิด ก็ต้องตอบมาค่าเดียวอยู่ดี) เช่น ถามว่า
การตอบก็จะต้องตอบว่า 1 (ในกรณีที่ตอบถูก) หรือจะตอบ 2, 3, 4 อะไรก็ว่าไป (แน่นอนว่าตอบผิด)แต่มันไม่สามารถมี output ออกมาสองค่าพร้อมกันได้นะ เช่นบอกว่า 5 จะเป็นทั้ง 2 และ 3 ในเวลาเดียวกันเหรอ? แบบนี้ไม่ได้! ... หรือถึงจะออกมาค่าเดียว เช่นเรียก 6 แต่ลองเรียกอีกครั้งดันได้ 7 แบบนี้ก็ถือว่ามีหลาย output ไม่ได้เหมือนกัน(คือใส่ค่าเข้าไปเหมือนกัน ต้องได้ค่าคำตอบเดิมออกมา จะเปลี่ยนไปเรื่อยๆ ไม่ได้) หลักการใช้งานฟังก์ชันคือ
เราจะต้อง declare ฟังก์ชันก่อนเรียกใช้งานเสมอ ไม่งั้นคอมพิวเตอร์ก็จะไม่รู้ว่าฟังก์ชันนี้ต้องทำงานยังไง
สำหรับภาษาโปรแกรมจะต้องเขียนละเอียดขึ้น ต้องมีการกำหนด type ว่า input, output เป็นอะไรด้วย (ฟังก์ชันในคณิตศาสตร์ไม่ต้องกำหนด เพราะใช้ number type เป็นหลักเท่านั้น)
หน้าที่หลักของฟังก์ชัน ถ้าพูดในเชิงการเขียนโปรแกรม มันคือการรวมกลุ่ม code ที่ใช้งานบ่อยๆ เข้าไว้ด้วยกันเป็นก้อนเดียว ทำให้เวลาเขียนโปรแกรมขนาดใหญ่ เราไม่จำเป็นต้องเขียนโค้ดซ้ำๆ กันหลายๆ รอบ หน้าที่ของฟังก์ชันอีกอย่างคือการสร้าง Encapsulation หรือการห่อหุ้ม code กลุ่มหนึ่งแล้วสร้างชื่อเรียก code กลุ่มนั้นแทน เช่นการสร้างฟังก์ชัน 8, 9, 0 หรือ 1 ขึ้นมา เวลาเรียกใช้งานก็จะง่ายขึ้น เพราะเราไม่จำเป็นต้องรู้การทำงานภายในของฟังก์ชันเลย รู้แค่ฟังก์ชันจะทำอะไรออกมาให้ก็พอฟังก์ชันทำงานอย่างไร, ในมุมมองของคอมพิวเตอร์เพื่อให้เข้าใจฟังก์ชันจริงๆ เราต้องรู้ก่อนว่าเวลาฟังก์ชันทำงาน เกิดอะไรขึ้นภายในคอมพิวเตอร์บ้าง Stack Frameอย่างที่เรารู้กันว่าตัวแปรทุกตัวที่เราเขียนขึ้นมาในโค้ด ต้องการที่อยู่เพื่อเก็บ value ของมัน (เก็บอยู่ใน RAM ซึ่งเป็น main memory ไง) แต่ใช่ว่าตัวแปรทั้งหมดจะกองกันอยู่ในพื้นที่เดียวกัน โดยส่วนใหญ่แล้วพื้นที่ในเมโมรี่จะถูกแบ่งออกเป็นส่วนๆ คือ Heap และ Stack โดยในบทความนี้เราจะโฟกัสในส่วนของสแต็ก หรือที่เรียกว่า "Stack Frame" ซึ่งใช้เก็บค่าของตัวแปรแยกกันตาม function ...
ตัวอย่างโค้ดข้างบนนี้...
และการที่มันชื่อว่า Stack นั่นก็แปลว่าการซ้อนกันของเฟรมไม่ได้จำกัดว่าต้องมีแค่ชั้นเดียวเท่านั้น จะมีกี่ชั้นก็ได้ (จนกว่าเมมจะเต็ม) ลองมาดูอีกตัวอย่างที่ซับซ้อนมากขึ้นกัน 1 ซึ่งเรียกใช้ฟังก์ชัน 3 ต่ออีกทีหนึ่ง
การทำงานของโปรแกรมจะเริ่มที่ 2 เหมือนเดิมจากนั้น --> 1 --> 3 การทำงานของเมมโมรี่ก็จะเป็นแบบรูปข้างล่างนี่ข้อสังเกตคือจำนวนเฟรมจะเพิ่มขึ้นหนึ่งชั้นเมื่อเรียกใช้งาน 3 ในขณะที่เฟรมของฟังก์ชัน 1 ก็ยังคงค้างอยู่ในเมมโมรี่นั่นเพราะฟังก์ชัน 1 นั้นยังทำงานไม่เสร็จและต้องรอค่าจากฟังก์ชัน 3 ซะก่อนสรุปว่าการเรียกฟังก์ชันซ้อนๆ กัน (Nested) นั้น โปรแกรมจะโปรเซสเฉพาะฟังก์ชันที่ทำงานอยู่ในตอนนั้นเท่านั้น (เป็นเฟรมบนสุดใน Stack Frame) ส่วนเฟรมอื่นๆ จะโดน pause เอาไว้ก่อนจนกว่าเฟรมบนจะทำงานเสร็จ ฟังก์ชัน คอมพิวเตอร์คืออะไรฟังก์ชัน (คอมพิวเตอร์) - ชุดคำสั่งหรือข้อมูลสำหรับปฏิบัติการคำสั่งใดคำสั่งหนึ่ง
ฟังก์ชัน หมายความว่าอย่างไรนิยามฟังก์ชัน คือ ความสัมพันธ์ซึ่งในสองคู่อันดับใด ๆ ของความสัมพันธ์นั้น ถ้ามีสมาชิกตัวหน้าเท่ากันแล้ว สมาชิกตัวหลังต้องไม่ต่างกัน
ฟัง ก์ ชั่ น คอมพิวเตอร์ มี อะไร บางฟังก์ชันพื้นฐาน
ฟังก์ชั่น SUM เป็นฟังก์ชันสำหรับหาผลรวม เช่น=SUM(C2:C8) ฟังก์ชั่น AVERAGE เป็นฟังก์ชันสำหรับหาค่าเฉลี่ย เช่น=AVERAGE(B2,D2,F2) ฟังก์ชั่น COUNT เป็นฟังก์ชันสำหรับนับจำนวนข้อมูลที่เป็นตัวเลข เช่น=COUNT (F4,J4) ฟังก์ชั่น MAX เป็นฟังก์ชันสำหรับหาค่าสูงสุด เช่น=MAX(D5:D15)
ฟัง ก์ ชั่ น การใช้งาน คืออะไรฟังก์ชั่น คือ สูตรการคำนวณที่ถูกสร้างไว้ล่วงหน้าเพื่อสนับสนุนการทำงานประเภทต่างๆทั้งเรื่องการบวกลบคูณหารและการจัดการข้อมูลอื่นๆเช่น การเปรียบเทียบข้อมูล การนับจำนวนข้อมูล การแสดงตัวเลข หรือการปัดเศษ เป็นต้น ซึ่งแต่ละฟังก์ชันจะมีรูปแบบมาตรฐานดังนี้
|