กลุ่มที่ 6...
TRANSCRIPT
โปรแกรมย่�อย่และฟั งก�ชั�นมาตรฐาน
โปรแกรมย่�อย่
ประเภทของโปรแกรมย่�อย่ประเภทของโปรแกรมย่�อย่ (Procedure) เป�นส่�วนหน� ง
ของโปรแกรม ม!หน"าท! เฉพาะต�วโดย่แย่กการท&างานออกจาก โปรแกรมอย่�างอ(ส่ระ
การเข!ย่นโปรแกรมท! ม!การท&างานแบบโปรแกรมย่�อย่จะชั�วย่ลดความซั�บซั"อนของโปรแกรม ซั� งจะท&าให"ส่ามารถแก"ไขและเพ( มเต(ม การท&างานของโปรแกรมได"ง�าย่ข�/น ในบางคร�/งโปรแกรมหล�กจะม!การส่�งข"อม0ลไปท&างานในโปรแกรมย่�อย่ด"วย่ โดย่ข"อม0ลน�/นจะเก1บอย่0�ในร0ป ต�วแปรพ(เศษเร!ย่กว�า พาราม(เตอร� (Parameter)
การใช้�ฟั�งก�ช้�นมาตรฐานภาษาซี�
ส่&าหร�บเน4/อหาในบทน!/จะกล�าวถ�งฟั งก�ชั�นในภาษา C โดย่จะ ประกอบไปด"วย่เน4/อหาหล�ก ๆ ค4อ เร4 องท! หน� ง ฟั งก�ชั�นมาตรฐาน
เป�นฟั งก�ชั�นท! บร(ษ�ทท! ผล(ตภาษา C ได"เข!ย่นข�/นและเก1บไว"ในheader file ภาษา C ค4อเก1บไว"ในแฟั7มท! ม!นามส่ก8ล *.h ต�าง ๆ
ส่�วนเร4 องท! ส่อง เป�นฟั งก�ชั�นท! เข!ย่นข�/นหร4อเร!ย่กอ!กอย่�างว�า โปรแกรมย่�อย่ ท! ผ0"เข!ย่นโปรแกรมเข!ย่นข�/นมาใชั"งานอย่�างใดอย่�าง
หน� งตามความต"องการของงานน�/น ๆ โดย่ราย่ละเอ!ย่ดของแต�ละฟั งก�ชั�นม!ด�งต�อไปน!/
ฟั งก�ชั�นมาตรฐาน (standard functions)
เป�นฟั งก�ชั�นท! บร(ษ�ทท! ผล(ตภาษา C ได"เข!ย่นข�/นและเก1บไว" ใน header file ภาษา C ค4อเก1บไว"ในแฟั7มท! ม!นามส่ก8ล *.h ต�าง
ๆ เม4 อต"องการใชั"ฟั งก�ชั�นใด จะต"องร0 "ว�าฟั งก�ชั�นน�/นอย่0�ใน header file ใดจากน�/นจ�งค�อย่ใชั"ค&าส่� ง #include<header file.h> เข"ามาใน
ส่�วนตอนต"นของโปรแกรม จ�งจะส่ามารถใชั"ฟั งก�ชั�นท! ต"องการได" ซั� งฟั งก�ชั�นมาตรฐานเป�นฟั งก�ชั�นท! บร(ษ�ทผ0"ผล(ต C compiler
เข!ย่นข�/นเพ4 อให"ผ0"ใชั"น&าไปชั�วย่ในการเข!ย่นโปรแกรมท&าให"การเข!ย่น โปรแกรมส่ะดวกและง�าย่ข�/น บางคร�/งเราอาจจะเร!ย่กฟั งก�ชั�น
” ” มาตรฐานว�า ไลบราร!ฟั งก�ชั�น (library functions)
ส่&าหร�บฟั งก�ชั�นมาตรฐานท! จะกล�าวถ�งในห�วข"อน!/จะกล�าว เฉพาะ ฟั งก�ชั�นมาตรฐานท! จ&าเป�น และเร!ย่กใชั"งานบ�อย่ ๆ เท�าน�/น ซั� งม!ด�งต�อ
ไปน!/
ฟั�งก�ช้�นทางคณิ ตศาสตร� (mathematic functions) เป�นฟั งก�ชั�นท! ใชั"ส่&าหร�บการค&านวณทางคณ(ตศาส่ตร� และก�อน
ท! จะใชั"ฟั งก�ชั�นประเภทน!/ จะต"องใชั"ค&าส่� ง #include <math.h> แทรก อย่0�ตอนต"นของโปรแกรม และต�วแปรท! จะใชั"ฟั งก�ชั�นประเภทน!/จะต"องม!
ชัน(ด (type) เป�น double เน4 องจากผลล�พธ์�ท! ได"จากฟั งก�ชั�นประเภทน!/ จะได"ค�าส่�งกล�บของข"อม0ลเป�น double เชั�นก�น
1) ฟั�งก�ช้�น acos(x) เป�นฟั งก�ชั�นท! ใชั"ค&านวณหาค�า arc cosine ของ x โดย่ท! x เป�นค�าม8มในหน�วย่
เรเด!ย่น (radian) ร#ปแบบ acos(x);
2) ฟั�งก�ช้�น asin(x) เป�นฟั งก�ชั�นท! ใชั"ค&านวณหาค�า arc sine ของ x โดย่ท! x เป�นค�าม8มในหน�วย่
เรเด!ย่นร#ปแบบ asin(x);
3) ฟั�งก�ช้�น atan(x) เป�นฟั งก�ชั�นท! ใชั"ค&านวณหาค�า arc tan ของ x โดย่ท! x เป�นค�าม8มในหน�วย่
เรเด!ย่น ร#ปแบบ atan(x);
4) ฟั�งก�ช้�น sin(x) เป�นฟั งก�ชั�นท! ใชั"ค&านวณหาค�า sine ของ x โดย่ท! x เป�นค�าม8มในหน�วย่เรเด!ย่น
ร#ปแบบ sin(x);5) ฟั�งก�ช้�น cos(x)
เป�นฟั งก�ชั�นท! ใชั"ค&านวณหาค�า cosine ของ x โดย่ท! x เป�นค�าม8มในหน�วย่เรเด!ย่นร#ปแบบ cos(x);
6) ฟั�งก�ช้�น tan(x) เป�นฟั งก�ชั�นท! ใชั"ค&านวณหาค�า tan ของ x โดย่ท! x เป�นค�าม8มในหน�วย่เรเด!ย่น
ร#ปแบบ tan(x);
โปรแกรมต�วอย่�าง แส่ดงการใชั"งานฟั งก�ชั�น 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 */
ผลล�พธ์�ท! ได"จากโปรแกรม
ส่ามารถอธ์(บาย่การท&างานของโปรแกรมท! ส่&าค�ญ ๆ ได"ด�งน!/
บรรท�ดท�' 9 ค&าส่� ง printf("%f\n",asin(r)); ฟั งก�ชั�นค&านวณหาค�า arc sin ของต�วแปร r โดย่ r เป�นม8มในหน�วย่เรเด!ย่น และแส่ดงผลล�พธ์�ท! ได"ออกจอภาพ
บรรท�ดท�' 10 ค&าส่� ง printf("%f\n",acos(r)); ฟั งก�ชั�นค&านวณหาค�า arc cosine ของต�วแปร r โดย่ r เป�นม8มในหน�วย่เรเด!ย่น และแส่ดงผลล�พธ์�ท! ได"ออกจอภาพ
บรรท�ดท�' 11 ค&าส่� ง printf("%f\n",atan(r)); ฟั งก�ชั�นค&านวณหาค�า arc tan ของต�วแปร r โดย่ r เป�นม8มในหน�วย่เรเด!ย่น และแส่ดงผลล�พธ์�ท! ได"ออกจอภาพ
บรรท�ดท�' 12 ค&าส่� ง printf("%f\n",sin(r)); ฟั งก�ชั�นค&านวณหาค�า sine ของต�วแปร r โดย่ r เป�นม8มในหน�วย่เรเด!ย่น และแส่ดงผลล�พธ์�ท! ได"
ออกจอภาพ บรรท�ดท�' 13 ค&าส่� ง printf("%f\n",cos(r)); ฟั งก�ชั�นค&านวณหาค�า
cosine ของต�วแปร r โดย่ r เป�นม8มในหน�วย่เรเด!ย่น และแส่ดงผลล�พธ์�ท! ได"ออกจอภาพ
บรรท�ดท�' 14 ค&าส่� ง printf("%f\n",tan(r)); ฟั งก�ชั�นค&านวณหาค�า tan ของต�วแปร r โดย่ r เป�นม8มในหน�วย่เรเด!ย่น และแส่ดงผลล�พธ์�ท! ได"
ออกจอภาพ บรรท�ดท�' 15 และ 16 พ(มพ�ข"อความให"กดค!ย่�ใด ๆ เพ4 อกล�บส่0�โปรแกรม
และหย่8ดรอร�บค�าใดๆ เชั�น กด enter จะกล�บเข"าส่0�โปรแกรม
7) ฟั�งก�ช้�น sqrt(x) เป�นฟั งก�ชั�นท! ใชั"หาค�ารากท! 2 (square root) ของค�าคงท! หร4อ
ต�วแปร x โดย่ท! x จะต"องเป�นค�าคงท! ชัน(ดต�วเลขหร4อต�วแปรท! ม!ค�าไม�ต(ดลบร#ปแบบ sqrt(x);
8) ฟั�งก�ช้�น exp(x) เป�นฟั งก�ชั�นท! ใชั"หาค�า ex โดย่ท! x เป�นค�าคงท! หร4อต�วแปรท! จะใชั"
เป�นค�าย่กก&าล�งของ e โดย่ท! e ม!ค�าประมาณ 2.718282ร#ปแบบ exp(x);
9) ฟั�งก�ช้�น pow(x,y) เป�นฟั งก�ชั�นท! ใชั"หาค�า xy โดย่ท!
x เป�นค�าคงท! หร4อต�วแปรท! ใชั"เป�นต�วฐานซั� งจะต"องม!ค�ามากกว�าศ0นย่�y เป�นค�าคงท! หร4อต�วแปรท! ใชั"เป�นค�าย่กก&าล�ง
ร#ปแบบ pow(x, y);
โปรแกรมต�วอย่�าง แส่ดงการใชั"งานฟั งก�ชั�น 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 */
ผลล�พธ์�ท�'ได�จากโปรแกรม
จากโปรแกรมต�วอย่�าง ส่ามารถอธ์(บาย่การท&างานของโปรแกรมท! ส่&าค�ญ ๆ ได"ด�งน!/ บรรท�ดท�' 8 ค.าส�'ง printf("%.4f\n",pow(x,y)); ฟั งก�ชั�นค&านวณหา
ค�า xy โดย่ท! x เป�นค�าคงท! หร4อต�วแปรท! ใชั"ต�วฐานซั� งจะต"องม!ค�า มากกว�าศ0นย่� และ y เป�นค�าคงท! หร4อต�วแปรท! ใชั"เป�นค�าย่กก&าล�ง
และแส่ดงผลท! ได"ออกจอภาพ บรรท�ดท�' 9 ค.าส�'ง printf("%.4f\n",sqrt(z)); ฟั งก�ชั�นค&านวณหาค�า
รากท! ส่อง (square root) ของค�าคงท! หร4อต�วแปร z โดย่ท! z จะ ต"องเป�นค�าคงท! ชัน(ดต�วเลขหร4อต�วแปรท! ม!ค�าไม�ต(ดลบ และแส่ดง
ผลท! ได"ออกจอภาพ บรรท�ดท�' 10 ค&าส่� ง printf("%.4f\n",exp(y)); ฟั งก�ชั�นค&านวณหาค�า
ey โดย่ท! y เป�นค�าคงท! หร4อต�วแปรท! จะใชั"เป�นค�าย่กก&าล�งของ e โดย่ท! e ม!ค�าประมาณ 2.718282 และแส่ดงผลท! ได"ออกจอภาพ
บรรท�ดท! 11 และ 12 พ(มพ�ข"อความให"กดค!ย่�ใด ๆ เพ4 อกล�บส่0� โปรแกรม และหย่8ดรอร�บค�าใด ๆ เชั�น กด enter จะกล�บเข"าส่0�
โปรแกรม
10) ฟั งก�ชั�น log(x) เป�นฟั งก�ชั�นท! ใชั"หาค�า log ฐาน n (natural logarithm) ของค�า
คงท! หร4อต�วแปร x โดย่ท! x เป�นค�าคงท! หร4อต�วแปรท! ม!ค�าเป�นลบไม�ได"ร0ปแบบ log(x);
11) ฟั งก�ชั�น log10(x) เป�นฟั งก�ชั�นท! ใชั"หาค�า log ฐาน 10 ของค�าคงท! หร4อต�วแปร x
โดย่ท! x เป�นค�าคงท! หร4อต�วแปรท! ม!ค�าเป�นลบไม�ได"ร0ปแบบ log10(x);
โปรแกรมต�วอย่�างแสดงการใช้�งานฟั�งก�ช้�น 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 */
ผลล�พธ์�ท! ได"จากโปรแกรม
จากโปรแกรมต�วอย่�าง ส่ามารถอธ์(บาย่การท&างานของโปรแกรมท! ส่&าค�ญ ๆ ได"ด�งน!/
บรรท�ดท�' 8 ค.าส�'ง printf(“%.4f\n”,log(n)); ฟั งก�ชั�นท! ใชั"หาค�า log ฐาน n (natural logorithm) ของค�าคงท! หร4อต�วแปร n โดย่ท! n
เป�นค�าคงท! หร4อต�วแปรท! ม!ค�าเป�นลบไม�ได" และแส่ดงผลท! ได"ออก จอภาพ
บรรท�ดท�' 9 ค.าส�'ง printf("%.4f\n",log10(m)); ฟั งก�ชั�นท! ใชั"หาค�าlog ฐาน 10 ของค�าคงท! หร4อต�วแปร m โดย่ท! m เป�นค�าคงท! หร4อ
ต�วแปรท! ม!ค�าเป�นลบไม�ได" และแส่ดงผลท! ได"ออกจอภาพ บรรท�ดท�' 10 และ 11 พ(มพ�ข"อความให"กดค!ย่�ใด ๆ เพ4 อกล�บส่0�
โปรแกรม และหย่8ดรอร�บค�าใด ๆ เชั�น กด enter จะกล�บเข"าส่0�โปรแกรม
12) ฟั�งก�ช้�น ceil(x) เป�นฟั งก�ชั�นท! ใชั"ในการป ดเศษทศน(ย่มข�/นของต�วแปร x ถ"า x เป�น
ต�วเลขจ&านวนทศน(ย่ม แต�ถ"า x เป�นเลขจ&านวนเต1มจะไม�ม!การป ดเศษทศน(ย่มร#ปแบบ ceil(x);
13) ฟั�งก�ช้�น floor(x) เป�นฟั งก�ชั�นท! ใชั"ในการต�ดเศษทศน(ย่มท(/งของต�วแปร x ถ"า x เป�น
ต�วเลขจ&านวนทศน(ย่ม แต�ถ"า x เป�นเลขจ&านวนเต1มจะไม�ม!การต�ดเศษทศน(ย่มท(/ง ร#ปแบบ floor(x);
โปรแกรมต�วอย่�าง แสดงการใช้�งานฟั�งก�ช้�น 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 */
ผลล�พธ์�ท�'ได�จากโปรแกรม
จากโปรแกรมต�วอย่�าง สามารถอธ์ บาย่การท.างานของโปรแกรมท�' ส.าค�ญ ๆ ได�ด�งน�2 บรรท�ดท�' 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 พ(มพ�ข"อความให"กดค!ย่�ใด ๆ เพ4 อกล�บส่0�โปรแกรม
และหย่8ดรอร�บค�าใด ๆ เชั�น กด enter จะกล�บเข"าส่0�โปรแกรม
14. ฟั�งก�ช้�น fabs(x) เป�นฟั งก�ชั�นท! ใชั"หาค�าส่�มบ0รณ� (absolute value) ของค�าคงท! หร4อ
ต�วแปร x โดย่ท! x เป�นค�าคงท! หร4อต�วแปรท! เก1บค�าต�วเลขจ8ดทศน(ย่มท! ม!ค�าบวกหร4อลบก1ได"ร#ปแบบ fabs(x);
โปรแกรมต�วอย่�าง แส่ดงการใชั"งานฟั งก�ชั�น 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 */
ผลล�พธ์�ท�'ได�จากโปรแกรม จากโปรแกรมต�วอย่�าง ส่ามารถอธ์(บาย่การท&างานของโปรแกรมท!
ส่&าค�ญ ๆ ได"ด�งน!/ บรรท�ดท�' 8 และ 9 ใชั"ฟั งก�ชั�น fabs( ) หาค�าส่�มบ0รณ� (absolute value)
ของค�าคงท! หร4อต�วแปร x และ y และแส่ดงผลออกท! จอภาพ ตามล&าด�บ
บรรท�ดท�' 10 และ 11 พ(มพ�ข"อความให"กดค!ย่�ใด ๆ เพ4 อกล�บส่0�โปรแกรม และหย่8ดรอร�บค�าใด ๆ เชั�น กด enter จะกล�บเข"าส่0�โปรแกรม
ฟั�งก�ช้�นเก�'ย่วก�บต�วอ�กษร (character functions) เป�นฟั งก�ชั�นท! ใชั"ก�บข"อม0ลท! ม!ชัน(ดเป�น single char ( ใชั"เน4/อท! 1
byte) เท�าน�/น และก�อนท! จะใชั"ฟั งก�ชั�นประเภทน!/จะต"องใชั"ค&าส่� ง#include<ctype.h> แทรกอย่0�ตอนต"นของโปรแกรม จ�งจะส่ามารถเร!ย่กใชั"ฟั งก�ชั�นประเภทน!/ได"
ฟั งก�ชั�นท! เก! ย่วก�บต�วอ�กษรท! ควรทราบ ม!ด�งน!/isalnum(ch) isalpha(ch) isdigit(ch) islower(ch) isupper(ch) tolower(ch) toupper(ch)isspace(ch) isxdigit(ch)
ม!ราย่ละเอ!ย่ดของฟั งก�ชั�นแต�ละฟั งก�ชั�นด�งต�อไปน!/1) ฟั�งก�ช้�น isalnum(ch)
เป�นฟั งก�ชั�นท! ใชั"ตรวจส่อบว�าข"อม0ลท! เก1บไว"ในต�วแปร ch เป�นต�ว อ�กษรหร4อต�วเลข (letter or digit) ถ"าข"อม0ลท! เก1บไว"เป�นต�วอ�กษร
หร4อต�วเลขก1จะส่�งค�ากล�บท! เป�นจ&านวนเต1มท! ม!ค�าไม�เท�าก�บศ0นย่� มาย่�งฟั งก�ชั�น และถ"าข"อม0ลท! เก1บไว"ในต�วแปร ch ไม�ได"เก1บต�ว
อ�กษรหร4อต�วเลขก1จะส่�งค�ากล�บท! ม!ค�าเป�นศ0นย่�มาย่�งฟั งก�ชั�นร#ปแบบ isalnum(ch);
2) ฟั�งก�ช้�น isalpha(ch) เป�นฟั งก�ชั�นท! ใชั"ตรวจส่อบว�าข"อม0ลท! เก1บไว"ในต�วแปร ch เป�นต�ว
อ�กษร (letter) หร4อไม� ถ"าใชั�ฟั งก�ชั�นน!/จะให"ค�าส่�งกล�บเป�น เลขจ&านวนเต1มท! ไม�เท�าก�บศ0นย่� ถ"าไม�ใชั�ฟั งก�ชั�นน!/จะให"ค�าส่�งกล�บมา
เป�นเลขศ0นย่� (0)ร#ปแบบ isalpha(ch);
3) ฟั�งก�ช้�น isdigit(ch) เป�นฟั งก�ชั�นท! ใชั"ตรวจส่อบว�าข"อม0ลท! เก1บไว"ในต�วแปร ch เป�น
ต�วเลข 0 ถ�ง 9 หร4อไม� ถ"าใชั�ฟั งก�ชั�นน!/จะให"ค�าส่�งกล�บเป�น เลขจ&านวนเต1มท! ไม�เท�าก�บศ0นย่� ถ"าไม�ใชั�ฟั งก�ชั�นน!/จะไม�ม!การส่�งค�า
กล�บ ร#ปแบบ isdigit(ch);
โปรแกรมต�วอย่�าง แสดงการใช้�งานฟั�งก�ช้�น isalnum(ch), isalpha(ch) และisdigit(ch)
/* char1.c */#include<stdio.h> /* บรรท�ดท! 1 */#include<ctype.h> /* บรรท�ดท! 2 */#include<conio.h> /* บรรท�ดท! 3 */void main(void) /* บรรท�ดท! 4 */{ /* บรรท�ดท! 5 */ char ch1 = '6', ch2 = 'K', ch3 = '*'; /* บรรท�ดท! 6 */ clrscr( ); /* บรรท�ดท! 7 */ printf("%d\n",isalnum(ch1)); /* บรรท�ดท! 8 */ printf("%d\n",isalnum(ch2)); /* บรรท�ดท! 9 */ printf("%d\n",isalnum(ch3)); /* บรรท�ดท! 10 */ printf("%d\n",isalpha(ch1)); /* บรรท�ดท! 11 */ printf("%d\n",isalpha(ch2)); /* บรรท�ดท! 12 */ printf("%d\n",isalpha(ch3)); /* บรรท�ดท! 13 */ printf("%d\n",isdigit(ch1)); /* บรรท�ดท! 14 */ printf("%d\n",isdigit(ch2)); /* บรรท�ดท! 15 */ printf("%d\n",isdigit(ch3)); /* บรรท�ดท! 16 */ printf("\nPress any key back to program ..."); /* บรรท�ดท! 17 */ getch(); /* บรรท�ดท! 18 */} /* บรรท�ดท! 19 */
ผลล�พธ์�ท! ได"จากโปรแกรม
จากโปรแกรมต�วอย่�าง สามารถอธ์ บาย่การท.างานของโปรแกรมท�'ส.าค�ญ ๆ ได�ด�งน�2
บรรท�ดท�' 8 ถ3ง 10 ใชั"ฟั งก�ชั�น isalnum( ) ใชั"ตรวจส่อบว�าข"อม0ลท! เก1บไว"ใน ต�วแปร ch1, ch2 และ ch3 ตามล&าด�บ เป�นต�วอ�กษรหร4อต�วเลข ซั� งถ"า
ข"อม0ลท! เก1บไว"เป�นต�วอ�กษรหร4อต�วเลขจะส่�งค�ากล�บท! เป�นจ&านวนเต1มท! ม!ค�า ไม�เท�าก�บศ0นย่�มาย่�งฟั งก�ชั�น แต�ถ"าข"อม0ลในต�วแปรไม�ได"เก1บต�วอ�กษรหร4อ
ต�วเลขจะส่�งค�าศ0นย่�กล�บมาย่�งฟั งก�ชั�น แล"วแส่ดงผลท! ได"ออกมาจอภาพ บรรท�ดท�' 11 ถ3ง 13 ใชั"ฟั งก�ชั�น isalpha( ) ใชั"ตรวจส่อบว�าข"อม0ลในต�วแปร
ch1, ch2 และ ch3 ตามล&าด�บ เป�นต�วอ�กษรหร4อไม� ถ"าใชั�ฟั งก�ชั�นจะให"ค�า กล�บเป�นเลขจ&านวนเต1มท! ไม�เท�าก�บศ0นย่� ถ"าไม�ใชั�ฟั งก�ชั�นจะให"ค�ากล�บเป�น
ศ0นย่� แล"วแส่ดงผลท! ได"ออกจอภาพ บรรท�ดท�' 14 ถ3ง 16 ใชั"ฟั งก�ชั�น isdigit( ) ใชั"ตรวจส่อบว�าข"อม0ลท! เก1บใน ต�วแปร ch1, ch2 และ ch3 ตามล&าด�บ เป�นต�วเลข 0 ถ�ง 9 หร4อไม� ถ"าใชั�
ฟั งก�ชั�นจะให"ค�ากล�บเป�นเลขจ&านวนเต1มท! ไม�เท�าก�บศ0นย่� ถ"าไม�ใชั�ฟั งก�ชั�นจะไม�ม!การส่�งค�ากล�บ
บรรท�ดท�' 17 และ 18 พ(มพ�ข"อความให"กดค!ย่�ใด ๆ เพ4 อกล�บส่0�โปรแกรม และ หย่8ดรอร�บค�าใด ๆ เชั�น กด enter จะกล�บเข"าส่0�โปรแกรม
4) ฟั งก�ชั�น islower(ch) เป�นฟั งก�ชั�นท! ใชั"ตรวจส่อบว�าข"อม0ลท! เก1บไว"ในต�วแปร ch เป�นต�ว
อ�กษรต�วเล1กหร4อไม� ถ"าใชั�ให"ส่�งค�ากล�บเป�นเลขจ&านวนเต1มท! ไม� เท�าก�บศ0นย่� ถ"าไม�ใชั�ฟั งก�ชั�นน!/จะให"ค�าส่�งกล�บเป�นเลขศ0นย่� (0)
ร0ปแบบ islower(ch);5) ฟั งก�ชั�น isupper(ch)
เป�นฟั งก�ชั�นท! ใชั"ตรวจส่อบว�าข"อม0ลท! เก1บไว"ในต�วแปร ch เป�นต�ว อ�กษรต�วใหญ�หร4อไม� ถ"าใชั�ให"ส่�งค�ากล�บเป�นเลขจ&านวนเต1มท! ไม�
เท�าก�บศ0นย่� ถ"าไม�ใชั�ฟั งก�ชั�นน!/จะให"ค�าส่�งกล�บเป�นเลขศ0นย่� (0)ร#ปแบบ isupper(ch);
6) ฟั งก�ชั�น tolower(ch) เป�นฟั งก�ชั�นท! ใชั"เปล! ย่นต�วอ�กษรต�วใหญ�ท! เก1บไว"ในต�วแปร ch ให"
เป�นอ�กษรต�วเล1กร0ปแบบ tolower(ch);
7) ฟั งก�ชั�น toupper(ch) เป�นฟั งก�ชั�นท! ใชั"เปล! ย่นต�วอ�กษรต�วเล1กท! เก1บไว"ในต�วแปร ch ให"
เป�นอ�กษรต�วใหญ�ร#ปแบบ toupper(ch);
โปรแกรมต�วอย่�าง แส่ดงการใชั"งานฟั งก�ชั�น islower(ch), isupper(ch), tolower(ch) และ toupper(ch)
/* char2.c */#include<stdio.h> /* บรรท�ดท! 1 */
#include<ctype.h> /* บรรท�ดท! 2 */#include<conio.h> /* บรรท�ดท! 3 */void main(void) /* บรรท�ดท! 4 */{ /* บรรท�ดท! 5 */ char ch1 = 'm', ch2 = 'N'; clrscr( ); /* บรรท�ดท! 6 */ printf("%d\t%d\n",islower(ch1),islower(ch2)); /* บรรท�ดท! 7 */ printf("%d\t%d\n",isupper(ch1),isupper(ch2)); /* บรรท�ดท! 8 */ printf("%c\t%c\n",tolower(ch1),toupper(ch2)); /* บรรท�ดท! 9 */ printf("\nPress any key back to program ..."); /* บรรท�ดท! 10 */ getch(); /* บรรท�ดท! 11 */} /* บรรท�ดท! 12 */
ผลล�พธ์�ท! ได"จากโปรแกรม
จากโปรแกรมต�วอย่�าง ส่ามารถอธ์(บาย่การท&างานของโปรแกรมท! ส่&าค�ญ ๆ ได"ด�งน!/
บรรท�ดท�' 7 ใชั"ฟั งก�ชั�น islower( ) ตรวจส่อบต�วอ�กษรท! เก1บไว"ในต�วแปรch1 และ ch2 เป�นต�วอ�กษรต�วพ(มพ�เล1กหร4อไม� ถ"าใชั�ฟั งก�ชั�นจะให"ค�า
กล�บเป�นเลขจ&านวนเต1มท! ไม�เท�าก�บศ0นย่� ถ"าไม�ใชั�ฟั งก�ชั�นจะให"ค�ากล�บ เป�นเลขศ0นย่� แล"วแส่ดงผลออกท! จอภาพ
บรรท�ดท�' 8 ใชั"ฟั งก�ชั�น isupper( ) ตรวจส่อบต�วอ�กษรท! เก1บไว"ในต�วแปรch1 และ ch2 เป�นต�วอ�กษรต�วพ(มพ�ใหญ�หร4อไม� ถ"าใชั�ฟั งก�ชั�นจะให"ค�า
กล�บเป�นเลขจ&านวนเต1มท! ไม�เท�าก�บศ0นย่� ถ"าไม�ใชั�ฟั งก�ชั�นจะให"ค�ากล�บ เป�นเลขศ0นย่� แล"วแส่ดงผลออกท! จอภาพ
บรรท�ดท�' 9 ใชั"ฟั งก�ชั�น tolower( ) ใชั"เปล! ย่นต�วอ�กษรต�วพ(มพ�ใหญ�ท! เก1บ ไว"ในต�วแปร ch1 ให"เป�นต�วอ�กษรต�วพ(มพ�เล1ก และใชั"ฟั งก�ชั�น
toupper( ) ใชั"เปล! ย่นต�วอ�กษรต�วพ(มพ�เล1กท! เก1บไว"ในต�วแปร ch2 ให" เป�นต�วอ�กษรต�วพ(มพ�ใหญ� แล"วแส่ดงผลออกจอภาพ
บรรท�ดท�' 10 และ 11 พ(มพ�ข"อความให"กดค!ย่�ใด ๆ เพ4 อกล�บส่0�โปรแกรม และหย่8ดรอร�บค�าใด ๆ เชั�น กด enter จะกล�บเข"าส่0�โปรแกรม
8) ฟั�งก�ช้�น isspace(ch) เป�นฟั งก�ชั�นท! ใชั"ตรวจส่อบว�าค�าข"อม0ลท! อย่0�ในต�วแปร ch ม!ค�าเป�น
whitespace หร4อไม� (whitespace) ได"แก� space, tab, vertical tab, formfeed, carriage return และ new line ถ"าเป�น whitespace
เพ!ย่งแค�ต�วใดต�วหน� ง ฟั งก�ชั�นน!/จะให"ค�าส่�งกล�บท! เป�นเลขจ&านวนเต1ม ท! ไม�เท�าก�บศ0นย่�ถ"าไม�ป�น whitespace ฟั งก�ชั�นน!/จะให"ค�าส่�งกล�บเป�น
เลขศ0นย่� (0)ร#ปแบบ isspace(ch);
9) ฟั�งก�ช้�น isxdigit(ch) เป�นฟั งก�ชั�นท! ใชั"ตรวจส่อบว�าข"อม0ลต�วเลขท! อย่0�ในต�วแปร ch เป�น
ต�วเลขฐานส่(บหก (0-9, A-F, หร4อ a-f) หร4อไม� ถ"าใชั�ฟั งก�ชั�นน!/จะม! การส่�งค�ากล�บต�วเลขท! ไม�เท�าก�บศ0นย่�มาย่�งฟั งก�ชั�น ถ"าไม�ใชั�ฟั งก�ชั�น
น!/จะส่�งค�าเป�นต�วเลขศ0นย่�กล�บมาย่�งฟั งก�ชั�นร0ปแบบ isxdigit(ch);
โปรแกรมต�วอย่�าง แส่ดงการใชั"งานฟั งก�ชั�น isspace(ch) และisxdigit(ch)
/* char3.c */#include<stdio.h> /* บรรท�ดท! 1 */
#include<ctype.h> /* บรรท�ดท! 2 */#include<conio.h> /* บรรท�ดท! 3 */void main(void) /* บรรท�ดท! 4 */{ /* บรรท�ดท! 5 */ char ch1 = '\0', ch2 = '\n', ch3 = '\t', ch4 = 'J' ; /* บรรท�ดท! 6 */ clrscr( ); /* บรรท�ดท! 7 */ printf("%d\t%d\n",isspace(ch1),isspace(ch2)); /* บรรท�ดท! 8 */ printf("%d\t%d\n",isspace(ch3),isxdigit(ch4)); /* บรรท�ดท! 9 */ printf("\nPress any key back to program ..."); /* บรรท�ดท! 10 */ getch(); /* บรรท�ดท! 11 */} /* บรรท�ดท! 12 */
ผลล�พธ์�ท! ได"จากโปรแกรม
จากโปรแกรมต�วอย่�าง ส่ามารถอธ์(บาย่การท&างานของโปรแกรมท! ส่&าค�ญ ๆ ได"ด�งน!/
บรรท�ดท�' 8 ใช้�ฟั�งก�ช้�น isspace( ) ตรวจส่อบว�าข"อม0ลท! อย่0�ในต�วแปรch1 และ ch2 ม!ค�าเป�น whitespace หร4อไม� ถ"าเป�นฟั งก�ชั�นจะให"ค�า
กล�บท! เป�นเลขจ&านวนเต1มท! ไม�เท�าก�บศ0นย่� ถ"าไม�ใชั�ฟั งก�ชั�นจะให"ค�ากล�บ เป�นเลขศ0นย่� แล"วแส่ดงผลท! ได"ออกจอภาพ
บรรท�ดท�' 9 ใช้�ฟั�งก�ช้�น isspace( ) ตรวจส่อบว�าข"อม0ลท! อย่0�ในต�วแปรch3 ม!ค�าเป�น whitespace หร4อไม� ถ"าเป�นฟั งก�ชั�นจะให"ค�ากล�บท! เป�น
เลขจ&านวนเต1มท! ไม�เท�าก�บศ0นย่� ถ"าไม�ใชั�ฟั งก�ชั�นจะให"ค�ากล�บเป�นเลข ศ0นย่� แล"วแส่ดงผลท! ได"ออกจอภาพ และใชั"ฟั งก�ชั�น isxdigit( ) ตรวจ
ส่อบว�าข"อม0ลต�วเลขท! อย่0�ในต�วแปร ch4 ว�าเป�นต�วเลขฐานส่(บหกหร4อ ไม� ถ"าใชั�ฟั งก�ชั�นจะส่�งค�ากล�บเป�นต�วเลขท! ไม�เท�าก�บศ0นย่� ถ"าไม�ใชั�
ฟั งก�ชั�นจะส่�งต�วเลขศ0นย่�กล�บมาย่�งฟั งก�ชั�น บรรท�ดท�' 10 และ 11 พ(มพ�ข"อความให"กดค!ย่�ใด ๆ เพ4 อกล�บส่0�โปรแกรม
และหย่8ดรอร�บค�าใด ๆ เชั�น กด enter จะกล�บเข"าส่0�โปรแกรม
ฟั�งก�ช้�นเก�'ย่วก�บสตร ง (string functions)
เป�นฟั งก�ชั�นท! ใชั"ก�บข"อม0ลชัน(ดส่ตร(ง (string) โดย่ก�อนท! จะ ใชั"ฟั งก�ชั�นประเภทน!/จะต"องใชั"ค&าส่� ง #include<string.h> แทรกอย่0�
ตอนต"นของโปรแกรมเส่!ย่ก�อน จ�งจะเร!ย่กใชั"ฟั งก�ชั�นประเภทน!/ได"
ฟั�งก�ช้�นท�'เก�'ย่วข�องก�บสตร งท�'ควรทราบ ม!ด�งน!/strlen(s) strcmp(s1,s2)strcpy(s) strcat(s1,s2)
ส่&าหร�บราย่ละเอ!ย่ดของฟั งก�ชั�นแต�ละฟั งก�ชั�นได"เคย่กล�าว มาแล"วในบทท! 5 เก! ย่วก�บ array และ string จ�งไม�ขอกล�าวซั&/าอ!ก
นางสาวกาญจนา ถ3กจร#ญ เลขท�' 21
ส่มาชั(ก
นางสาวร4จ รา ต�2งม�'น เลขท�' 24
นางสาวขว�ญจ รา โพธ์ 5ล�อม เลขท�' 28
นางสาวจ ดาภา บ.าร4งวงศ� เลขท�' 29
นางสาวณิ�ฐฐา ศร�อ นทร� เลขท�' 30
นางสาวส4ธ์ ดา มากม� เลขท�' 33
นางสาวเกสรา ว�จนะ เลขท�' 38
คร0ท! ปร�กษาราย่ว(ชัา
คร#ทรงศ�กด 5 โพธ์ 5เอ�'ย่ม โรงเร�ย่นเฉล มพระเก�ย่รต สมเด7จพระ
ศร�นคร นทร� กาญจนบ4ร�