วันพฤหัสบดีที่ 14 กันยายน พ.ศ. 2560

ฟังก์ชั่นในภาษาc

ฟังก์ชันในภาษา C

สำหรับเนื้อหาในบทนี้จะกล่าวถึงฟังก์ชันในภาษา C โดยจะประกอบไปด้วยเนื้อหาหลัก ๆ คือ เรื่องที่หนึ่ง ฟังก์ชันมาตรฐาน เป็นฟังก์ชันที่บริษัทที่ผลิตภาษา C ได้เขียนขึ้นและเก็บไว้ใน header file ภาษา C คือเก็บไว้ในแฟ้มที่มีนามสกุล *.h ต่าง ๆ ส่วนเรื่องที่สอง เป็นฟังก์ชันที่เขียนขึ้นหรือเรียกอีกอย่างว่าโปรแกรมย่อย ที่ผู้เขียนโปรแกรมเขียนขึ้นมาใช้งานอย่างใดอย่างหนึ่งตามความต้องการของงานนั้น ๆ โดยรายละเอียดของแต่ละฟังก์ชันมีดังต่อไปนี้
7.1 ฟังก์ชันมาตรฐาน (standard functions)
เป็นฟังก์ชันที่บริษัทที่ผลิตภาษา C ได้เขียนขึ้นและเก็บไว้ใน header file ภาษา C คือเก็บไว้ในแฟ้มที่มีนามสกุล *.h ต่าง ๆ เมื่อต้องการใช้ฟังก์ชันใด จะต้องรู้ว่าฟังก์ชันนั้นอยู่ใน header file ใดจากนั้นจึงค่อยใช้คำสั่ง #include<header file.h> เข้ามาในส่วนตอนต้นของโปรแกรม จึงจะสามารถใช้ฟังก์ชันที่ต้องการได้ ซึ่งฟังก์ชันมาตรฐานเป็นฟังก์ชันที่บริษัทผู้ผลิต C compiler เขียนขึ้นเพื่อให้ผู้ใช้นำไปช่วยในการเขียนโปรแกรมทำให้การเขียนโปรแกรมสะดวกและง่ายขึ้น บางครั้งเราอาจจะเรียกฟังก์ชันมาตรฐานว่า ”ไลบรารีฟังก์ชัน” (library functions)
ตัวอย่างที่ 7.1 แสดงตัวอย่างฟังก์ชันมาตรฐาน เช่น ฟังก์ชัน pow(x,y) คือ ฟังก์ชันที่ใช้หาค่ายกกำลังของ xy โดยที่ตัวแปร x และตัวแปร y มีชนิดเป็น double ซึ่งฟังก์ชัน pow(x,y) จะถูกเก็บไว้ใน header file ที่ชื่อว่า math.h ดังนั้นจึงต้องใช้คำสั่ง #include<math.h> แทรกอยู่ในส่วนตอนต้นของโปรแกรมเหนือฟังก์ชัน main( ) จึงจะสามารถเรียกใช้ฟังก์ชัน pow(x,y) มาใช้งานภายในโปรแกรมนี้ได้
สำหรับฟังก์ชันมาตรฐานที่จะกล่าวถึงในหัวข้อนี้จะกล่าว เฉพาะฟังก์ชันมาตรฐานที่จำเป็น และเรียกใช้งานบ่อย ๆ เท่านั้น ซึ่งมีดังต่อไปนี้
7.1.1 ฟังก์ชันทางคณิตศาสตร์ (mathematic functions)
เป็นฟังก์ชันที่ใช้สำหรับการคำนวณทางคณิตศาสตร์ และก่อนที่จะใช้ฟังก์ชันประเภทนี้ จะต้องใช้คำสั่ง #include <math.h> แทรกอยู่ตอนต้นของโปรแกรม และตัวแปรที่จะใช้ฟังก์ชันประเภทนี้จะต้องมีชนิด (type) เป็น double เนื่องจากผลลัพธ์ที่ได้จากฟังก์ชันประเภทนี้จะได้ค่าส่งกลับของข้อมูลเป็น double เช่นกัน
ฟังก์ชันทางคณิตศาสตร์ที่ควรทราบ มีดังนี้
acos(x) asin(x) atan(x)
sin(x) cos(x) tan(x)
sqrt(x) exp(x) pow(x,y)
log(x) log10(x) ceil(x)
floor(x) fabs(x)

1) ฟังก์ชัน acos(x)
เป็นฟังก์ชันที่ใช้คำนวณหาค่า arc cosine ของ x โดยที่ x เป็นค่ามุมในหน่วยเรเดียน (radian)
รูปแบบ
acos(x);

2) ฟังก์ชัน asin(x)
เป็นฟังก์ชันที่ใช้คำนวณหาค่า arc sine ของ x โดยที่ x เป็นค่ามุมในหน่วยเรเดียน
รูปแบบ
asin(x);

3) ฟังก์ชัน atan(x)
เป็นฟังก์ชันที่ใช้คำนวณหาค่า arc tan ของ x โดยที่ x เป็นค่ามุมในหน่วย
เรเดียน

รูปแบบ
atan(x);

4) ฟังก์ชัน sin(x)
เป็นฟังก์ชันที่ใช้คำนวณหาค่า sine ของ x โดยที่ x เป็นค่ามุมในหน่วยเรเดียน
รูปแบบ
sin(x);

5) ฟังก์ชัน cos(x)
เป็นฟังก์ชันที่ใช้คำนวณหาค่า cosine ของ x โดยที่ x เป็นค่ามุมในหน่วย
เรเดียน
รูปแบบ
cos(x);


6) ฟังก์ชัน tan(x)
เป็นฟังก์ชันที่ใช้คำนวณหาค่า tan ของ x โดยที่ x เป็นค่ามุมในหน่วยเรเดียน
รูปแบบ
tan(x);

เพื่อความเข้าใจการใช้งานฟังก์ชัน acos(x), asin(x), atan(x), sin(x), cos(x) และ tan(x) มากยิ่งขึ้น ให้ศึกษาโปรแกรมตัวอย่างต่อไปนี้
โปรแกรมตัวอย่างที่ 7.1 แสดงการใช้งานฟังก์ชัน acos(x), asin(x), atan(x), sin(x), cos(x) และ tan(x)


/* math1.c */
#include<stdio.h> /* บรรทัดที่ 1 */
#include<math.h> /* บรรทัดที่ 2 */
#include<conio.h> /* บรรทัดที่ 3 */
void main(void) /* บรรทัดที่ 4 */
{ /* บรรทัดที่ 5 */
double r, pi = 3.141592654; /* บรรทัดที่ 6 */
r = pi/180; /* บรรทัดที่ 7 */
clrscr(); /* บรรทัดที่ 8 */
printf("%f\n",asin(r)); /* บรรทัดที่ 9 */
printf("%f\n",acos(r)); /* บรรทัดที่ 10 */
printf("%f\n",atan(r)); /* บรรทัดที่ 11 */
printf("%f\n",sin(r)); /* บรรทัดที่ 12 */
printf("%f\n",cos(r)); /* บรรทัดที่ 13 */
printf("%f\n",tan(r)); /* บรรทัดที่ 14 */
printf("\nPress any key back to program ..."); /* บรรทัดที่ 15 */
getch(); /* บรรทัดที่ 16 */
} /* บรรทัดที่ 17 */



ผลลัพธ์ที่ได้จากโปรแกรม


คำอธิบายโปรแกรม
จากโปรแกรมตัวอย่างที่ 7.1 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
บรรทัดที่ 9 คำสั่ง printf("%f\n",asin(r)); ฟังก์ชันคำนวณหาค่า arc sin ของตัวแปร r โดย r เป็นมุมในหน่วยเรเดียน และแสดงผลลัพธ์ที่ได้ออกจอภาพ
บรรทัดที่ 10 คำสั่ง printf("%f\n",acos(r)); ฟังก์ชันคำนวณหาค่า arc cosine ของตัวแปร r โดย r เป็นมุมในหน่วยเรเดียน และแสดงผลลัพธ์ที่ได้ออกจอภาพ
บรรทัดที่ 11 คำสั่ง printf("%f\n",atan(r)); ฟังก์ชันคำนวณหาค่า arc tan ของตัวแปร r โดย r เป็นมุมในหน่วยเรเดียน และแสดงผลลัพธ์ที่ได้ออกจอภาพ
บรรทัดที่ 12 คำสั่ง printf("%f\n",sin(r)); ฟังก์ชันคำนวณหาค่า sine ของตัวแปร r โดย r เป็นมุมในหน่วยเรเดียน และแสดงผลลัพธ์ที่ได้ออกจอภาพ
บรรทัดที่ 13 คำสั่ง printf("%f\n",cos(r)); ฟังก์ชันคำนวณหาค่า cosine ของตัวแปร r โดย r เป็นมุมในหน่วยเรเดียน และแสดงผลลัพธ์ที่ได้ออกจอภาพ
บรรทัดที่ 14 คำสั่ง printf("%f\n",tan(r)); ฟังก์ชันคำนวณหาค่า tan ของตัวแปร r โดย r เป็นมุมในหน่วยเรเดียน และแสดงผลลัพธ์ที่ได้ออกจอภาพ
บรรทัดที่ 15 และ 16 พิมพ์ข้อความให้กดคีย์ใด ๆ เพื่อกลับสู่โปรแกรม และหยุดรอรับค่าใด ๆ เช่น กด enter จะกลับเข้าสู่โปรแกรม
7) ฟังก์ชัน sqrt(x)
เป็นฟังก์ชันที่ใช้หาค่ารากที่ 2 (square root) ของค่าคงที่หรือตัวแปร x โดยที่ x จะต้องเป็นค่าคงที่ชนิดตัวเลขหรือตัวแปรที่มีค่าไม่ติดลบ
รูปแบบ
sqrt(x); 
8) ฟังก์ชัน exp(x)
เป็นฟังก์ชันที่ใช้หาค่า ex โดยที่ x เป็นค่าคงที่หรือตัวแปรที่จะใช้เป็นค่ายกกำลังของ e โดยที่ e มีค่าประมาณ 2.718282
รูปแบบ
exp(x);
9) ฟังก์ชัน pow(x,y)
เป็นฟังก์ชันที่ใช้หาค่า xy
โดยที่

x เป็นค่าคงที่หรือตัวแปรที่ใช้เป็นตัวฐานซึ่งจะต้องมีค่ามากกว่าศูนย์
y เป็นค่าคงที่หรือตัวแปรที่ใช้เป็นค่ายกกำลัง
รูปแบบ
pow(x, y);

เพื่อความเข้าใจการใช้งานฟังก์ชัน sqrt(x), exp(x) และ pow(x, y) มากยิ่งขึ้นให้ศึกษาโปรแกรมตัวอย่างต่อไปนี้
โปรแกรมตัวอย่างที่ 7.2 แสดงการใช้งานฟังก์ชัน sqrt(x), exp(x) และ pow(x, y)


/* math2.c */
#include<stdio.h> /* บรรทัดที่ 1 */
#include<math.h> /* บรรทัดที่ 2 */
#include<conio.h> /* บรรทัดที่ 3 */
void main(void) /* บรรทัดที่ 4 */
{ /* บรรทัดที่ 5 */
double x = 2.5, y = 7.0, z = 21.5; /* บรรทัดที่ 6 */
clrscr( ); /* บรรทัดที่ 7 */
printf("%.4f\n",pow(x,y)); /* บรรทัดที่ 8 */
printf("%.4f\n",sqrt(z)); /* บรรทัดที่ 9 */
printf("%.4f\n",exp(y)); /* บรรทัดที่ 10 */
printf("\nPress any key back to program ..."); /* บรรทัดที่ 11 */
getch(); /* บรรทัดที่ 12 */
} /* บรรทัดที่ 13 */


ผลลัพธ์ที่ได้จากโปรแกรม


คำอธิบายโปรแกรม
จากโปรแกรมตัวอย่างที่ 7.2 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
บรรทัดที่ 8 คำสั่ง printf("%.4f\n",pow(x,y)); ฟังก์ชันคำนวณหาค่า xy โดยที่ x เป็นค่าคงที่หรือตัวแปรที่ใช้ตัวฐานซึ่งจะต้องมีค่ามากกว่าศูนย์ และ y เป็นค่าคงที่หรือตัวแปรที่ใช้เป็นค่ายกกำลัง และแสดงผลที่ได้ออกจอภาพ
บรรทัดที่ 9 คำสั่ง printf("%.4f\n",sqrt(z)); ฟังก์ชันคำนวณหาค่ารากที่สอง (square root) ของค่าคงที่หรือตัวแปร z โดยที่ z จะต้องเป็นค่าคงที่ชนิดตัวเลขหรือตัวแปรที่มีค่าไม่ติดลบ และแสดงผลที่ได้ออกจอภาพ
บรรทัดที่ 10 คำสั่ง printf("%.4f\n",exp(y)); ฟังก์ชันคำนวณหาค่า ey โดยที่ y เป็นค่าคงที่หรือตัวแปรที่จะใช้เป็นค่ายกกำลังของ e โดยที่ e มีค่าประมาณ 2.718282 และแสดงผลที่ได้ออกจอภาพ
บรรทัดที่ 11 และ 12 พิมพ์ข้อความให้กดคีย์ใด ๆ เพื่อกลับสู่โปรแกรม และหยุดรอรับค่าใด ๆ เช่น กด enter จะกลับเข้าสู่โปรแกรม
10) ฟังก์ชัน log(x)
เป็นฟังก์ชันที่ใช้หาค่า log ฐาน n (natural logarithm) ของค่าคงที่หรือตัวแปร x โดยที่ x เป็นค่าคงที่หรือตัวแปรที่มีค่าเป็นลบไม่ได้
รูปแบบ
log(x);

11) ฟังก์ชัน log10(x)
เป็นฟังก์ชันที่ใช้หาค่า log ฐาน 10 ของค่าคงที่หรือตัวแปร x โดยที่ x เป็นค่าคงที่หรือตัวแปรที่มีค่าเป็นลบไม่ได้
รูปแบบ
log10(x);

เพื่อความเข้าใจการใช้งานฟังก์ชัน log(x) และ log10(x) มากยิ่งขึ้น ให้ศึกษาโปรแกรมตัวอย่างต่อไปนี้
โปรแกรมตัวอย่างที่ 7.3 แสดงการใช้งานฟังก์ชัน log(x) และ log10(x)


/* math3.c */
#include<stdio.h> /* บรรทัดที่ 1 */
#include<math.h> /* บรรทัดที่ 2 */
#include<conio.h> /* บรรทัดที่ 3 */
void main(void) /* บรรทัดที่ 4 */
{ /* บรรทัดที่ 5 */
double m = 10.0, n = 3.0; /* บรรทัดที่ 6 */
clrscr( ); /* บรรทัดที่ 7 */
printf("%.4f\n",log(n)); /* บรรทัดที่ 8 */
printf("%.4f\n",log10(m)); /* บรรทัดที่ 9 */
printf("\nPress any key back to program ..."); /* บรรทัดที่ 10 */
getch(); /* บรรทัดที่ 11 */
} /* บรรทัดที่ 12 */


ผลลัพธ์ที่ได้จากโปรแกรม

คำอธิบายโปรแกรม
จากโปรแกรมตัวอย่างที่ 7.3 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
บรรทัดที่ 8 คำสั่ง printf(“%.4f\n”,log(n)); ฟังก์ชันที่ใช้หาค่า log ฐาน n (natural logorithm) ของค่าคงที่หรือตัวแปร n โดยที่ n เป็นค่าคงที่หรือตัวแปรที่มีค่าเป็นลบไม่ได้ และแสดงผลที่ได้ออกจอภาพ
บรรทัดที่ 9 คำสั่ง printf("%.4f\n",log10(m)); ฟังก์ชันที่ใช้หาค่า log ฐาน 10 ของค่าคงที่หรือตัวแปร m โดยที่ m เป็นค่าคงที่หรือตัวแปรที่มีค่าเป็นลบไม่ได้ และแสดงผลที่ได้ออกจอภาพ
บรรทัดที่ 10 และ 11 พิมพ์ข้อความให้กดคีย์ใด ๆ เพื่อกลับสู่โปรแกรม และหยุดรอรับค่าใด ๆ เช่น กด enter จะกลับเข้าสู่โปรแกรม
12) ฟังก์ชัน ceil(x)
เป็นฟังก์ชันที่ใช้ในการปัดเศษทศนิยมขึ้นของตัวแปร x ถ้า x เป็นตัวเลขจำนวนทศนิยม แต่ถ้า x เป็นเลขจำนวนเต็มจะไม่มีการปัดเศษทศนิยม
รูปแบบ
ceil(x);
13) ฟังก์ชัน floor(x)
เป็นฟังก์ชันที่ใช้ในการตัดเศษทศนิยมทิ้งของตัวแปร x ถ้า x เป็นตัวเลขจำนวนทศนิยม แต่ถ้า x เป็นเลขจำนวนเต็มจะไม่มีการตัดเศษทศนิยมทิ้ง
รูปแบบ
floor(x);
เพื่อความเข้าใจการใช้งานฟังก์ชัน ceil(x) และ floor(x) มากยิ่งขึ้น ให้ศึกษาโปรแกรมตัวอย่างต่อไปนี้
โปรแกรมตัวอย่างที่ 7.4 แสดงการใช้งานฟังก์ชัน ceil(x) และ floor(x)


/* math4.c */
#include<stdio.h> /* บรรทัดที่ 1 */
#include<math.h> /* บรรทัดที่ 2 */
#include<conio.h> /* บรรทัดที่ 3 */
void main(void) /* บรรทัดที่ 4 */
{ /* บรรทัดที่ 5 */
clrscr(); /* บรรทัดที่ 6 */
printf("%.4f\n", ceil(9.8765)); /* บรรทัดที่ 7 */
printf("%.4f\n", ceil(-3.7654)); /* บรรทัดที่ 8 */
printf("%.4f\n", ceil(80)); /* บรรทัดที่ 9 */
printf("%.4f\n", floor(7.9876)); /* บรรทัดที่ 10 */
printf("%.4f\n", floor(-3.321)); /* บรรทัดที่ 11 */
printf("%.4f\n", floor(180)); /* บรรทัดที่ 12 */
printf("\nPress any key back to program ..."); /* บรรทัดที่ 13 */
getch(); /* บรรทัดที่ 14 */
} /* บรรทัดที่ 15 */



ผลลัพธ์ที่ได้จากโปรแกรม

คำอธิบายโปรแกรม
จากโปรแกรมตัวอย่างที่ 7.4 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
บรรทัดที่ 7 คำสั่ง printf(“%.4f\n”,ceil(9.8765)); ฟังก์ชันที่ใช้ในการปัดเศษทศนิยมขึ้นของตัวเลข 9.8765 และแสดงผลออกที่จอภาพ
บรรทัดที่ 8 คำสั่ง printf(“%.4f\n”,ceil(-3.7654)); ฟังก์ชันที่ใช้ในการปัดเศษทศนิยมขึ้นของตัวเลข -3.7654 และแสดงผลออกที่จอภาพ
บรรทัดที่ 9 คำสั่ง printf(“%.4f\n”,ceil(80)); ฟังก์ชันที่ใช้ในการปัดเศษทศนิยมขึ้นของตัวเลข 80 และแสดงผลออกที่จอภาพ
บรรทัดที่ 10 คำสั่ง printf(“%.4f\n”,floor(7.9876)); ฟังก์ชันที่ใช้ในการตัดเศษทศนิยมทิ้งของตัวเลข 7.9876 และแสดงผลออกที่จอภาพ
บรรทัดที่ 11 คำสั่ง printf(“%.4f\n”,floor(-3.321)); ฟังก์ชันที่ใช้ในการตัดเศษทศนิยมทิ้งของตัวเลข -3.321 และแสดงผลออกที่จอภาพ
บรรทัดที่ 12 คำสั่ง printf(“%.4f\n”,floor(180)); ฟังก์ชันที่ใช้ในการตัดเศษทศนิยมทิ้งของตัวเลข 180 และแสดงผลออกที่จอภาพ
บรรทัดที่ 13 และ 14 พิมพ์ข้อความให้กดคีย์ใด ๆ เพื่อกลับสู่โปรแกรม และหยุดรอรับค่าใด ๆ เช่น กด enter จะกลับเข้าสู่โปรแกรม
14. ฟังก์ชัน fabs(x)
เป็นฟังก์ชันที่ใช้หาค่าสัมบูรณ์ (absolute value) ของค่าคงที่หรือตัวแปร x โดยที่ x เป็นค่าคงที่หรือตัวแปรที่เก็บค่าตัวเลขจุดทศนิยมที่มีค่าบวกหรือลบก็ได้
รูปแบบ
fabs(x);
เพื่อความเข้าใจการใช้งานฟังก์ชัน fabs(x) มากยิ่งขึ้น ให้ศึกษาโปรแกรมตัวอย่างต่อไปนี้
โปรแกรมตัวอย่างที่ 7.5 แสดงการใช้งานฟังก์ชัน fabs(x)


/* math5.c */
#include<stdio.h> /* บรรทัดที่ 1 */
#include<math.h> /* บรรทัดที่ 2 */
#include<conio.h> /* บรรทัดที่ 3 */
void main(void) /* บรรทัดที่ 4 */
{ /* บรรทัดที่ 5 */
double x = 123.4567, y = -891.2345; /* บรรทัดที่ 6 */
clrscr(); /* บรรทัดที่ 7 */
printf("Absolute value of x = %.5f\n",fabs(x)); /* บรรทัดที่ 8 */
printf("Absolute value of y = %.5f\n",fabs(y)); /* บรรทัดที่ 9 */
printf("\nPress any key back to program ..."); /* บรรทัดที่ 10 */
getch(); /* บรรทัดที่ 11 */
} /* บรรทัดที่ 12 */

ไม่มีความคิดเห็น:

แสดงความคิดเห็น

ระบบปฏิบัติการคืออะไร

ระบบปฏิบัติการคืออะไร      ระบบปฏิบัติการ ( Operating System)       จะประกอบไปด้วยชุดโปรแกรมที่ทำหน้าที่ในการควบคุม จัดสรรทรัพยากร...