ฟังก์ชัน (Function)
ฟังก์ชันในภาษาซี มีอยู่ 2 ลักษณะ คือ
- ฟังก์ชันสำเร็จรูป
- ฟังก์ชันที่สร้างขึ้นเพื่อใช้งาน
แต่ในเอกสารนี้จะพูดถึงเรื่องฟังก์ชันที่สร้างขึ้นเพื่อใช้งาน
ฟังก์ชันเป็นการแบ่งการทำงานของโปรแกรมหลักออกมาเป็นส่วนๆ เพื่อให้ง่ายต่อการแก้ไขและเรียกใช้งาน ฟังก์ชันควรวางไว้ก่อนฟังก์ชัน main แต่ถ้าวางไว้หลังฟังก์ชัน main จะต้องทำการประกาศ prototype ของฟังก์ชันเสียก่อน รูปแบบการประกาศฟังก์ชัน prototype มีดังนี้
<ชนิดการส่งค่ากลับ> ชื่อฟังก์ชัน(ชนิดตัวแปรสำหรับรับค่ามาจากฟังก์ชัน main);
และรูปแบบการเขียนฟังก์ชันเพื่อใช้งานมีรูปแบบดังต่อไปนี้
<ชนิดการส่งค่ากลับ> ชื่อฟังก์ชัน(ชนิดตัวแปรสำหรับรับค่ามาจากฟังก์ชัน main){ คำสั่งต่างๆ; <การส่งค่ากลับ;> }
การทำงานของฟังก์ชันมีลักษณะสำคัญ 4 รูปแบบ
- ฟังก์ชันที่ไม่มีการรับค่าและส่งค่ากลับ โดยปกติมักเป็นฟังก์ชันที่เรียกใช้งานเพียงอย่างเดียว ไม่จำเป็นต้องมีการคำนวณอะไร มีรูปแบบดังต่อไปนี้
void func(void){ คำสั่งต่างๆ ; }
ตัวอย่างที่ 45 การสร้างฟังก์ชันโดยมีการประกาศ prototype
#include<stdio.h> void label(void); int main(){ label(); return 0; } void label(void){ printf("\t\t\t ******************\n"); printf("\t\t\t * Samsen Company *\n"); printf("\t\t\t ******************\n"); }
ตัวอย่างที่ 46 การสร้างฟังก์ชันโดยไม่มีการประกาศ prototype
#include<stdio.h> void label(void){ printf("\t\t\t ******************\n"); printf("\t\t\t * Samsen Company *\n"); printf("\t\t\t ******************\n"); } int main(){ label(); return 0; }
- ฟังก์ชันที่ไม่มีการรับค่าแต่มีการส่งค่ากลับ เป็นฟังก์ชันที่มีการเรียกใช้งานโดยไม่ต้องมีการส่งค่าให้ฟังก์ชัน แต่จะมีการส่งค่ากลับออกมาจากฟังก์ชัน มีรูปแบบดังต่อไปนี้
int func(void){ คำสั่งต่างๆ ; return ค่าที่ต้องการส่งกลับ; }
ตัวอย่างที่ 47
#include<stdio.h> float pi(void){ return 22.0/7.0; } int main(){ float r; scanf("%f",&r); printf("Area = %.2f\n",pi()*r*r); return 0; }
- ฟังก์ชันที่มีการรับค่าแต่ไม่มีส่งค่ากลับ เป็นฟังก์ชันที่มีการส่งค่าให้ฟังก์ชันแต่ไม่มีการส่งค่ากลับมา อาจเขียนลักษณะสั่งให้ฟังก์ชันคำนวณหรือประมวลผลเพื่อแสดงผลลัพธ์ในทันที มีรูปแบบดังต่อไปนี้
void func(int ,…){ คำสั่งต่างๆ ; }
ตัวอย่างที่ 48
void add(int a,int b){#include<stdio.h> printf("sum = %d\n",a+b); } int main(){ int x,y; scanf("%d%d",&x,&y); add(x,y); return 0; }
- ฟังก์ชันที่มีการรับค่าและส่งค่ากลับ ต้องมีการส่งค่าไปให้ฟังก์ชันและฟังก์ชันก็ต้องมีการส่งค่ากลับมาให้ฟังก์ชัน main มีรูปแบบดังต่อไปนี้
int func(int ,…){ คำสั่งต่างๆ ; return ค่าที่ต้องการส่งกลับ; }
ตัวอย่างที่ 49
float avg(int a,int b,int c){#include<stdio.h> return (float)(a+b+c)/3.0; } int main(){ int x,y,z; scanf("%d%d%d",&x,&y,&z); printf("Average 3 number : %.2f\n",avg(x,y,z)); return 0; }
——
In the middle of difficulty lies opportunity.
ใจกลางของอุปสรรคนั้น มีโอกาสซ่อนอยู่
อัลเบิร์ต ไอน์สไตน์
No Comments