More Related Content Similar to งานทำBlog บทที่ 10
Similar to งานทำBlog บทที่ 10 (16) More from รัสนา สิงหปรีชา
More from รัสนา สิงหปรีชา (20) งานทำBlog บทที่ 102. ฟังก์ชัน (Function) คือ ชุดคาสั่งที่รวมกันเป็นโปรแกรม
ย่อย ๆ ภายในเครื่องหมาย {} ถูกสร้างขึ้นมาเพื่อทางานอย่างใด
อย่างหนึ่ง และมีการตั้งชื่อของฟังก์ชันเพื่อให้สะดวกต่อการเรียกใช้
งาน ตามกฎการตั้งชื่อ โดยมีรูปแบบการใช้งานแตกต่างกันคือ จะ
มีการรับหรือไม่รับข้อมูลจากโปรแกรมที่เรียกใช้งาน และจะมีการ
ส่งหรือไม่ส่งค่าข้อมูลออกจากฟังก์ชัน ซึ่งรูปแบบการใช้งานต่าง ๆ
ของฟังก์ชันจะขึ้นอยู่กับหน้าที่และเป้าหมายการทางานของฟังก์ชัน
นั้น ๆ
3. Function main
Function A Function B
Function C Function D Function F Function E Function F
แผนภาพแสดงการทางานของฟังก์ชัน
4. ในการเขียนโปรแกรมภาษา C มีโครงสร้างประกอบด้วยฟังก์ชัน
การทางาน โดยเริ่มต้นการทางานที่ฟังก์ชัน main() นั้นสามารถเรียกใช้
ฟังก์ชันย่อยอื่น ๆ ได้ ไม่ว่าจะเป็นฟังก์ชันที่ผู้ใช้สร้างขึ้นมาเอง (User -
Define Function) หรือฟังก์ชันมาตรฐานที่ภาษา C ได้สร้างมาให้แล้ว
(Standard Library Function) นอกจากนี้ในฟังก์ชันย่อยก็ยังสามารถที่
จะเรียกใช้ฟังก์ชันย่อยอื่น ๆ ได้เช่นกัน เช่น ฟังก์ชัน main() เรียกใช้งาน
ฟังก์ชัน A และฟังก์ชัน B, ฟังก์ชัน A เรียกใช้งานฟังก์ชัน C ฟังก์ชัน C
ฟังก์ชัน D และฟังก์ชัน F ส่วนฟังก์ชัน B เรียกใช้งานฟังก์ชัน E และ
ฟังก์ชัน F เป็นต้น
5. ฟังก์ชันที่สร้างขึ้นเอง (User - Define Function)
ฟังก์ชันที่สร้างขึ้นเอง (User - Define Function) เป็น
ฟังก์ชันที่เราเขียนโค้ดฟังก์ชันขึ้นมาใช้งานเองตามรูปแบบ
การสร้างฟังก์ชันของภาษา C เพื่อให้ทางานอย่างใดอย่าง
หนึ่ง ซึ่งแบ่งรูปแบบการสร้างฟังก์ชันได้ 4 รูปแบบ ดังนี้
1 ฟังก์ชันที่ไม่มีการคืนค่ากลับ และไม่มีการรับค่าพารามิเตอร์
2 ฟังก์ชันที่ไม่มีการคืนค่ากลับ และมีการรับค่าพารามิเตอร์
3 ฟังก์ชันที่มีการคืนค่ากลับ แต่ไม่มีการรับค่าพารามิเตอร์
4 ฟังก์ชันที่มีการคืนค่ากลับ และมีการรับค่าพารามิเตอร์
6. 1 ฟั ง ก์ ชั น ที่ ไ ม่ มี ก ารคื น ค่ า กลั บ และไม่ มี ก ารรั บ ค่ า พารามิ เ ตอร์
(Void Functions with No Parameters)
ฟังก์ชันที่มีการคืนค่ากลับ และไม่มีการรับค่าพารามิเตอร์ (Void
Functions with No Parameters) เป็นฟังก์ชันที่สร้างขึ้นโดยไม่มีการรับ
ค่าข้อมูล (พารามิเตอร์) ใด ๆ จากฟังก์ชันที่เรียกใช้งาน และเมื่อฟังก์ชัน
ทางานเสร็จจะไม่มีการคืนค่าข้อมูลใด ๆ กลับไปให้ฟังก์ชันที่เรียกใช้งาน
ซึ่งมีรูปแบบการสร้างฟังก์ชัน ดังนี้
void functionName (void)
{
statements;
}
โดยที่ functionName เป็นชื่อฟังก์ชันที่ต้องการสร้าง
statements เป็นชุดคาสั่งภายในฟังก์ชัน
7. 2 ฟั ง ก์ ชั น ที่ ไ ม่ มี ก ารคื น ค่ า กลั บ แต่ มี ก ารรั บ ค่ า พารามิ เ ตอร์
(Void Functions with Parameters)
ฟังก์ชันที่ไม่มีการคืนค่ากลับ แต่มีการรับค่าพารามิเตอร์ (Void
Functions with Parameters) เป็นฟังก์ชันที่สร้างขึ้นโดยมีการรับ
ค่าข้อมูล (พารามิเตอร์) จากฟังก์ชันที่เรียกใช้งาน และเมื่อฟังก์ชัน
ทางานเสร็จจะไม่มีการคืนค่าข้อมูลใด ๆ กลับไปให้ฟังก์ชันที่เรียกใช้
งาน ซึ่งมีรูปแบบการสร้างฟังก์ชันดังนี้
void functionName (typeParameter_1 varName_1, …, typeParameter_n varName_n)
{
statements;
}
8. โดยที่
functionName เป็นชื่อฟังก์ชันที่ต้องการสร้าง
typeParameter_n เป็นชนิดข้อมูลที่ต้องการรับจากฟังก์ชันที่เรียกใช้งาน
varName_n เป็นชื่อตัวแปรที่ใช้รับข้อมูลจากฟังก์ชันที่เรียกใช้งาน
statements เป็นชุดคาสั่งภายในฟังก์ชัน
9. 3 ฟั ง ก์ ชั น ที่ ไ ม่ มี ก ารคื น ค่ า กลั บ แต่ ไ ม่ มี ก ารรั บ ค่ า พารามิ เ ตอร์
(Function Return Value with No Parameters)
ฟั ง ก์ ชั น ที่ มี ก ารคื น ค่ า กลั บ แต่ ไ ม่ มี ก ารรั บ ค่ า พารามิ เ ตอร์
(Function Return Value with No Parameters) เป็นฟังก์ชันที่สร้างขึ้น
โดยไม่มีการรับค่าข้อมูล (พารามิเตอร์) ใด ๆ จากฟังก์ชันที่เรียกใช้งาน
และเมื่ อ ฟั ง ก์ ชั น ท างานเสร็ จ จะมี ก ารคื น ค่ า ข้ อ มู ล กลั บ ไปให้ ฟั ง ก์ ชั น ที่
เรียกใช้งาน ซึ่งมีรูปแบบการสร้างฟังก์ชัน ดังนี้
typeReturn functionName (void)
{
statements;
return varNameReturn;
}
11. 3 ฟั ง ก์ ชั น ที่ มี ก ารคื น ค่ า กลั บ และมี ก ารรั บ ค่ า พารามิ เ ตอร์
(Function Return Value with Parameters)
ฟั ง ก์ ชั น ที่ มี ก ารคื น ค่ า กลั บ และมี ก ารรั บ ค่ า พารามิ เ ตอร์
(Function Return Value with Parameters) เป็นฟังก์ชันที่สร้างขึ้นโดย
มี ก ารรับค่าข้อมูล (พารามิ เตอร์ ) จากฟั ง ก์ ชั น ที่เรีย กใช้งาน และเมื่ อ
ฟังก์ชันทางานเสร็จจะมีการคืนค่าข้อมูลกลับไปให้ฟังก์ชันที่เรียกใช้งาน
ซึ่งมีรูปแบบการสร้างฟังก์ชัน ดังนี้
typeReturn functionName (typeParameter_1 varName_1, …, typeParameter_n varName_n)
{
statements;
return varNameReturn;
}
12. โดยที่
functionName เป็นชื่อฟังก์ชันที่ต้องการสร้าง
typeParameter_n เป็นชนิดข้อมูลที่ต้องการรับจากฟังก์ชันที่เรียกใช้
varName-n เป็นชื่อตัวแปรที่ใช้รับข้อมูลจากฟังก์ชันที่เรียกใช้งาน
typeReturn เป็นชนิดข้อมูลที่ต้องการคืนค่ากลับให้ฟังก์ชันที่เรียกใช้งาน
statements เป็นชุดคาสั่งภายในฟังก์ชัน
varNameReturn เป็นชื่อตัวแปรที่คืนค่ากลับมาให้ฟังก์ชันที่เรียกใช้งาน
ซึ่งมีชนิดข้อมูลเดียวกันกับ
13. การส่งค่าผ่านพารามิเตอร์
สามารถทาได้ 2 รูปแบบคือ การส่งข้อมูลแบบส่งผ่านค่า และการส่งข้อมูล
แบบส่งผ่านตัวอ้างอิง
การส่ ง ข้ อ มู ล แบบส่ ง ผ่ า นค่ า การท างานของการส่ ง ข้ อ มู ล แบบ
ส่งผ่านตัวอ้างอิง (Call by Reference)
(Call by Value) คือ เมื่อมีการ คือ เมื่อมีการเรียกใช้งานฟังก์ชันและมี
เรียกใช้งานฟังก์ชันและมีการ การส่งข้อมูลให้ฟังก์ชัน โดยที่ฟังก์ชันที่
ส่ ง ข้ อ มู ล ใ ห้ ฟั ง ก์ ชั น โ ด ย ถู ก เรี ย กใช้ ง านจะมี ตั ว แปรมารั บ
ฟั ง ก์ ชั น ที่ ถู ก เรี ย กใช้ ง านจะมี ตาแหน่งที่อยู่ของข้อมูล หรือก็คือใช้ตัว
ตัวแปรมารับค่าข้อมูล ซึ่งการ แปรพอยน์เตอร์มารับตาแหน่งที่อยู่ของ
กระทาใด ๆ กับตัวแปรที่รับค่า ข้อมูลนั่นเอง ซึ่งการกระทาใด ๆ กับ
ตัวแปรที่รับค่าข้อมูลในฟังก์ชันจะมีผล
ข้อมูลในฟังก์ชัน จะไม่มีผลกับ
กับค่าของตัวแปรที่ส่งให้ฟังก์ชันนั้น ๆ
ค่ าของตัว แปรที่ส่ง ให้ฟั งก์ชั น ดัวย
นั้น ๆ
14. ขอบเขตการทางานของตัวแปร
การใช้ ง านตั ว แปร มี ข อบเขตการใช้ ง านแตกต่ า งกั น 2
รูปแบบคือ
• Local Variable เป็นตัวแปรที่มีการประกาศใช้งานภายใน
ฟังก์ชัน ซึ่งไม่สามารถเรียกใช้งานนอกฟังก์ชันได้
• Global Variables เป็นตัวแปรที่มีการประกาศใช้งานตั้งแต่
ต้ น โปรแกรม ซึ่ ง สามารถเรี ย กใช้ ง านในส่ ว นใดของ
โปรแกรมก็ได้
15. ฟังก์ชันแบบเรียกตัวเอง (recursive function)
ฟังก์ชันที่มีการเรียกตัวเองโดยให้พารามิเตอร์ที่แตกต่างกันออกไป เช่น การหา
Factorial หรือการหา Fibonacci
n! = n * (n-1)! factorial(n) = n * factorial(n-1)
5!
5 * 4!
4 * 3!
3 * 2!
2 * 1!
1
18. ! ข้อควรระวัง :
ฟังก์ชันแบบเรียกตัวเอง จาเป็นจะต้องมี if statement เพื่อ
ใช้ในการตัดสินใจว่าฟังก์ชันจะเรียกตัวเองต่อไป หรือ หยุดเพื่อ
ส่งค่ากลับ
19. ฟังก์ชันมาตรฐานที่ภาษา C ได้สร้างมาให้แล้ว
(Standard Library Function)
ฟังก์ชันมาตรฐาน เป็นฟังก์ชันที่ผู้ผลิตคอมไพล์เลอร์
เขี ย นขึ้ น เพื่ อ ผู้ ใ ช้ น าไปใช้ ใ นการเขี ย นโปรแกรม
เพื่อให้เขียนโปรแกรมได้สะดวกและง่ายขึ้น บางครั้ง
อาจเรียกว่า library functions ปกติฟังก์ชันเหล่านี้
จะจัดเก็บไว้ใน header files ดังนั้นผู้ใช้จะต้องรู้ว่า
ฟังก์ชันนั้นอยู่ใน header file ใด จึงจะนาไปเรียกใช้
ในส่วนต้นของโปรแกรม ด้วย #include <header
file.h> ได้ เช่น #include<stdio.h>
20. ไลบราลีฟังก์ชันการคานวณทางคณิตศาสตร์
จะอยู่ในไลบราลี math.h
ไลบราลีฟงก์ชน
ั ั คาอธิบาย
sin(x) เป็นฟังก์ชันหาค่า sin ของมุม โดยที่ x เป็นมุมที่ต้องการหา มีหน่วยเป็นเรเดียน
cos(x) เป็นฟังก์ชันหาค่า cos ของมุม โดยที่ x เป็นมุมที่ต้องการหา มีหน่วยเป็นเรเดียน
tan(x) เป็นฟังก์ชันหาค่า sin ของมุม โดยที่ x เป็นมุมที่ต้องการหา มีหน่วยเป็นเรเดียน
sqrt(x) เป็นฟังก์ชันหาค่ารากที่สอง โดยที่ x เป็นตัวแปรหรือค่าคงที่ ซึ่งเป็นจานวนเต็มบวก หรือ
จานวนเต็มศูนย์
pow(x, y) เป็นฟังก์ชันหาค่ายกกาลัง โดยที่ x เป็นตัวแปรหรือค่าคงที่ ซึ่งเป็นเลขฐาน และเป็นจานวนเต็ม
บวก หรือจานวนเต็มศูนย์
log(x) เป็นฟังก์ชันหาค่า log ฐาน n โดยที่ x เป็นตัวแปรหรือค่าคงที่ ซึ่งเป็นจานวนเต็มบวก หรือ
จานวนเต็มศูนย์
log10(x) เป็นฟังก์ชันหาค่า log ฐาน 10 โดยที่ x เป็นตัวแปรหรือค่าคงที่ ซึ่งเป็นจานวนเต็มบวก หรือ
จานวนเต็มศูนย์
fabs(x) เป็นฟังก์ชันหาค่าสมบูรณ์ โดยที่ x เป็นตัวแปรหรือค่าคงที่
21. ไลบราลีฟังก์ชันสาหรับข้อความ (String Library)
จะอยู่ในไลบราลี string.h
ไลบราลีฟังก์ชน
ั คาอธิบาย
strcpy(str1, str2) เป็นฟังก์ชันสาหรับคดลอกข้อความจากตัวแปร str2 มาเก็บที่ตัวแปร str1
strcat(str1, str2) เป็นฟังก์ชันสาหรับเชื่อมต่อข้อความ โดยนาค่าตัวแปร str2 มาต่อท้ายตัวแปร
str1 และเก็บค่าไว้ที่ตัวแปร str1
strcmp(str1, str2) เป็นฟังก์ชันสาหรับเปรียบเทียบความยาวข้อความ ถ้าความยาวข้อความในตัวแปร
str1 ยาวกว่าตัวแปร str2 จะได้ผลลัพธ์เป็นจริง
strcmpi(str1, str2) เป็นฟังก์ชันสาหรับเปรียบเทียบข้อความ
•ถ้าข้อความในตัวแปร str1 เหมือนตัวแปร str2 จะได้ผลลัพธ์เป็นศูนย์
•ถ้าข้อความในตัวแปร str1 น้อยกว่าตัวแปร str2 เมื่อเรียงลาดับตัวอักษรจะได้
ผลลัพธ์เป็นค่าลบ
•ถ้าข้อความในตัวแปร str1 มากกว่าตัวแปร str2 เมื่อเรียงลาดับตัวอักษรจะได้
ผลลัพธ์เป็นค่าบวก
strlen(str) เป็นฟังก์ชันสาหรับหาความยาวข้อความ โดยที่ str เป็นตัวแปรชนิดข้อความหรือ
ค่าคงที่
22. ที่มา : คู่มืออบรมครูวิทยาศาสตร์ คณิตศาสตร์ คอมพิวเตอร์ โลก ดาราศาสตร์ และอวกาศ ระดับมัธยมศึกษาตอนปลาย
หนังสือเรียนรายวิชาเพิ่มเติม การเขียนโปรแกรมเบื้องต้นด้วยภาษา C บริษทซัคเซสมีเดีย
คู่มือเรียนเขียนโปรแกรมภาษา สานักพิมพ์ IDC PREMIER