หน่วยที่ 6 การสร้างฟังก์ชั่นในภาษาซี

หน่วยที่ 6 การสร้างฟังก์ชั่น (Function) ในภาษาซี

                   โปรแกรมภาษาซีทุกโปรแกรมจะต้องมีฟังก์ชัน main() เสมอ ในการเขียนโปรแกรมถ้าหากในฟังก์ชัน main() ไม่มีการรีเทิร์นค่า หรือไม่มีการคืนค่ากลับ โปรแกรมก็ยังคงทำงานได้ แต่ในการเขียนโปรแกรมที่ดีนั้นใน main() ควรมีการคืนค่าด้วย 

                    โปรแกรมคอมพิวเตอร์ส่วนใหญ่ที่ใช้งานจริง มักจะเป็นโปรแกรมขนาดใหญ่ เกินกว่าที่จะเขียนรวมๆ กันในฟังก์ชันหลัก main() จึงต้องสร้างฟังก์ชั่นขึ้นมาเองเพื่อสะดวกในการเรียกใช้งานและลดเวลาในการเขียนโปรแกรม

                     ฟังก์ชัน (function) เป็นกลุ่มคำสั่งที่สร้างขึ้นมาเพื่อใช้ทำงานอย่างใดอย่างหนึ่ง สามารถเรียกขึ้นมาใช้ได้หลายครั้งทำให้โปรแกรมดูง่ายขึ้น สามารถปรับปรุงแก้ไขโปรแกรมได้ง่ายขึ้น ในการเขียนโปรแกรมภาษาซีต้องมีฟังก์ชัน main() เสมอ

                    ถ้าต้องการให้โปรแกรมทำงานใดๆ ฟังก์ชัน main() จะไปเรียกใช้ฟังก์ชันอื่นๆ ให้โปรแกรมทำงาน ในภาษาซีมีไลบราลีฟังก์ชัน (library function) สำหรับเก็บค่าฟังก์ชันต่างๆ ให้เราเลือกใช้งานอยู่ในไฟล์นามสกุล  .h หรือที่เรียกว่า header file เช่น ฟังก์ชัน printf() จะเก็บไว้ใน stdio.h 

ฟังก์ชั่นแบ่งตามที่มาของฟังก์ชั่นสามารถแบ่งออกได้เป็นสองประเภท คือ

  1. ฟังก์ชันมาตรฐาน (Standard Function) เป็นฟังก์ชันที่มีมากับตัวแปลภาษา (Compiler) ฟังก์ชันมาตรฐานเป็นฟังก์ชันที่มีอยู่แล้ว และเก็บไว้ใน library เช่น ฟังก์ชันรับค่า (scanf) ฟังก์ชันแสดงผล (printf) เป็นต้น ในการใช้งานเราต้องเรียกใช้ #include เพื่อเรียกไฟล์ส่วนหัวของโปรแกรมที่เก็บฟังชั่นที่ต้องการเรียกใช้งานขึ้นมาก่อน จึงสามารถใช้งานฟังก์ชันนั้นๆได้ เช่น ฟังก์ชัน printf() ฟังก์ชัน scanf() จะเก็บไว้ใน stdio.h
  2. ฟังก์ชันที่เขียนขึ้นเอง  (User-defined Function) เป็นฟังก์ชันหรือโปรแกรมย่อยที่ผู้ใช้สร้างขึ้นมาเพื่อใช้ในกา่รเขียนโปรแกรม เพื่อทำงานใดงานหนึ่ง ซึ่งทำให้โปรแกรมดูง่ายขึ้น และลดความซับซ้อนลง

ข้อดีของการเขียนโปรแกรมโดยใช้ฟังก์ชั่น

  1. เพื่อให้โปรแกรมเมอร์มีความสะดวก และรวดเร็วในการเขียนโปรแกรมไม่ต้องเขียนคำสั่ง (Statement) ซ้ำๆซากๆ
  2. ง่ายต่อการแก้ไขถ้าหาก ฟังก์ชัน มีการผิดพลาด เราก็แก้ไข Source code ในส่วนของ ฟังก์ชัน เท่านั้น Source code ในส่วนของการเรียกใช้ ฟังก์ชัน เราไม่ต้องแก้ไขตาม
  3. สามารถนำกลับมาใช้ใหม่ได้ ในกรณีที่ทำงานเป็นทีม เราอาจจะให้โปรแกรมเมอร์คนหนึ่งเขียน ฟังก์ชัน ขึ้นมา 1 ฟังก์ชัน และให้คนที่เหลือในทีมนำไปใช้ หรือ ถึงไม่ได้ทำงานเป็นทีม เราก็อาจจะเขียน ฟังก์ชัน มา 1 ฟังก์ชัน และใช้ในหลายๆ โปรแกรมได้
  4. ทำให้ Source code มีขนาดสั้นลง

ฟังก์ชันมาตรฐาน (Standard function)

                     ฟังก์ชันมาตรฐานจะถูกเก็บไว้ใน library ซึ่งการเรียกฟังก์ชันขึ้นมาใช้นั้น ต้องทราบก่อนว่าฟังก์ชันนั้นเก็บอยู่ใน library ใด จากนั้นเรียก library ผ่านคำสั่ง #include แล้วตามด้วยชื่อ library นั้น ที่ส่วนหัวของโปรแกรม

                    ผู้เขียนโปรแกรมต้องเข้าใจว่าฟังก์ชันที่จะใช้นั้นต้องรับค่าใด เมื่อทำฟังก์ชันแล้วจะคืนค่าใดออกมา ตัวอย่าง การใช้ฟังก์ชันทางคณิตศาสตร์ที่น่าสนใจ โดยการเรียกใช้ฟังก์ชันเหล่านี้จะต้องเรียก library math.h ขึ้นมาก่อน

                     การใช้ฟังก์ชันทางคณิตศาสตร์ math.h ฟังก์ชันทางคณิตศาสตร์ส่วนใหญ่แล้วจะรับตัวเลขทศนิยม (float หรือ double) เข้าไปและคืนค่าออกมาเป็นเลขทศนิยม สำหรับตัวอย่างฟังก์ชันและการใช้งาน ฟังก์ชันทางคณิตศาสตร์ math.h ได้แก่

  • sqrt(x) ใช้หารากที่สองของจำนวนเต็ม x  เช่น  sqrt(900.00) = 30.0
  • exp(x) ใช้หาค่า Exponential (ex)  เช่น  exp(1.0) = 2.718282
  • log(x) ใช้หาค่า log ฐาน e  เช่น  log(2.718282) = 1.0
  • log10(x) ใช้หาค่า log ฐาน 10  เช่น  log10(100.0) = 2.0                 
  • fabs(x) ใช้หาค่าสัมบูรณ์ของ x  เช่น  fabs(-5.0) = 5.0
  • ceil(x) ใช้ปัดเศษเลขทศนิยมของตัวแปร x  เช่น  ceil(9.1) = 10.0
  • floor(x) ใช้ตัดเศษเลขทศนิยมของตัวแปร x  เช่น  floor(7.8) = 7.0
  • pow(x,y) ใช้หาค่า x ยกกำลัง y  เช่น  pow(2,3) = 8.0
  • sin(x) ใช้หาค่า sine ของ x  เช่น  sin(90.0) = 1.0
  • cos(x) ใช้หาค่า cosine ของ x  เช่น  cos(0.0) = 1.0
  • tan(x) ใช้หาค่า tangent ของ x  เช่น  tan(0.0) = 0.0
  •  

          ตัวอย่างโปรแกรม ใช้หารากที่สองของจำนวนเต็ม

          //โดยเรียกใช้ฟังก์ชั่น sqrt(x) กำหนดค่า x = 1234321

#include <stdio.h>
#include <math.h>

int main()
{
  double x = 1234321;
  double result = sqrt(x);
  printf("The square root of %.2lf is %.2lf\n", x, result);
  return 0;
}

 


ฟังก์ชันที่เขียนขึ้นเอง  (User-defined Function) หรือ การสร้างฟังก์ชัน

ตัวอย่าง การสร้างฟังก์ชั่น BSS

  • #include<stdio.h>
  • void BSS()
  • {   printf("User-defined Function");   }
  • main()
  • {    BSS(); 
  •       getch();  return 0;
  • }

          คำอธิบาย การสร้างฟังก์ชั่น BSS ฟังก์ชันนี้ชื่อว่า BSS() จะไม่มีการส่งค่ากลับ โดยประกาศว่า void และไม่มีการผ่านค่าพารามีเตอร์ จะทำงานเมื่อคอมพิวเตอร์เรียกใช้ฟังชันก์ BSS() เครื่องจะพิมพ์ User-defined Function