CProgramming

บทที่ 5 ฟังก์ชัน

ฟังก์ชัน (Function)

ฟังก์ชันในภาษาซี มีอยู่ 2 ลักษณะ คือ

  1. ฟังก์ชันสำเร็จรูป
  2. ฟังก์ชันที่สร้างขึ้นเพื่อใช้งาน

แต่ในเอกสารนี้จะพูดถึงเรื่องฟังก์ชันที่สร้างขึ้นเพื่อใช้งาน

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

<ชนิดการส่งค่ากลับ> ชื่อฟังก์ชัน(ชนิดตัวแปรสำหรับรับค่ามาจากฟังก์ชัน main);

และรูปแบบการเขียนฟังก์ชันเพื่อใช้งานมีรูปแบบดังต่อไปนี้

<ชนิดการส่งค่ากลับ> ชื่อฟังก์ชัน(ชนิดตัวแปรสำหรับรับค่ามาจากฟังก์ชัน main){
   คำสั่งต่างๆ;
   <การส่งค่ากลับ;>
}

การทำงานของฟังก์ชันมีลักษณะสำคัญ 4 รูปแบบ

  1. ฟังก์ชันที่ไม่มีการรับค่าและส่งค่ากลับ โดยปกติมักเป็นฟังก์ชันที่เรียกใช้งานเพียงอย่างเดียว ไม่จำเป็นต้องมีการคำนวณอะไร มีรูปแบบดังต่อไปนี้
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;
}
  1. ฟังก์ชันที่ไม่มีการรับค่าแต่มีการส่งค่ากลับ เป็นฟังก์ชันที่มีการเรียกใช้งานโดยไม่ต้องมีการส่งค่าให้ฟังก์ชัน แต่จะมีการส่งค่ากลับออกมาจากฟังก์ชัน มีรูปแบบดังต่อไปนี้
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;
}
  1. ฟังก์ชันที่มีการรับค่าแต่ไม่มีส่งค่ากลับ เป็นฟังก์ชันที่มีการส่งค่าให้ฟังก์ชันแต่ไม่มีการส่งค่ากลับมา อาจเขียนลักษณะสั่งให้ฟังก์ชันคำนวณหรือประมวลผลเพื่อแสดงผลลัพธ์ในทันที มีรูปแบบดังต่อไปนี้
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;
}
  1. ฟังก์ชันที่มีการรับค่าและส่งค่ากลับ ต้องมีการส่งค่าไปให้ฟังก์ชันและฟังก์ชันก็ต้องมีการส่งค่ากลับมาให้ฟังก์ชัน 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.

ใจกลางของอุปสรรคนั้น มีโอกาสซ่อนอยู่

อัลเบิร์ต ไอน์สไตน์

บทที่ 7 โครงสร้าง (Prev Lesson)
(Next Lesson) บทที่ 6 พอยเตอร์
Back to CProgramming

No Comments

Give a comment