สื่อวีดิทัศน์การสอน เรื่อง :: ฟังก์ชัน ::
———————————————————————————————————————————
ฟังก์ชัน (Function)
ฟังก์ชัน (Function) เป็นการเขียนคำสั่งหลาย ๆ คำสั่งมารวมกันไว้ภายในเครื่องหมาย { } เพื่อให้
คำสั่งเหล่านั้นทำงานตามวัตถุประสงค์ หรือเป้าหมายของการทำงาน และมีการตั้งชื่อกลุ่มคำสั่งใหม่ เรียกว่า
ชื่อฟังก์ชัน (Function Name) ประโยชน์ของการเขียนฟังก์ชันนั้น เพื่อทำให้ไม่ต้องเขียนชุดคำสั่งเดิม ๆ หลายครั้ง และช่วยให้การเขียนคำสั่งที่มีความซับซ้อนมีประสิทธิภาพมากขึ้น และมักจะนำการเขียนฟังก์ชันไปใช้กับการหาคำตอบของคำนวณเพื่อหาค่า หรือลักษณะของงานที่มีการเรียกใช้งานบ่อย ๆ เช่น การเขียนโปรแกรมเพื่อหาค่าภาษีมูลค่าเพิ่ม การคำนวณหาพื้นที่สี่เหลี่ยมเป็นต้น
(แหล่งข้อมูล... คู่มือเรียนรู้ภาษาซีด้วยตนเอง / ผศ.รุ่งทิวา เสาร์สิงห์)
———————————————————————————————————————————
ประเภทของฟังก์ชัน
ฟังก์ชันที่ใช้ในภาษาซีนั้น สามารถแบ่งออกเป็น 2 ประเภทใหญ่ คือ
1. ฟังก์ชันมาตรฐาน (Standard Function)
เป็นฟังก์ชันที่มีมาพร้อมกับตัวแปลภาษา C ที่สามารถเรียกใช้งานได้ โดยไม่ต้องเขียนขึ้นเอง
เช่น ฟังก์ชันคำนวณทางคณิตศาสตร์ ฟังก์ชันในการแสดงผลข้อมูล ฟังก์ชันจัดการเกี่ยวกับข้อความ
เป็นต้น
โดยฟังก์ชันเหล่านี้ สามารถเรียกได้อีกอย่างว่าไลบรารีฟังก์ชัน (Library Function)
2. ฟังก์ชันที่ผู้ใช้สร้างขึ้นเอง (User-Define Function)
เป็นฟังก์ชันที่ผู้ใช้งานสร้างขึ้นมาเอง ซึ่งส่วนใหญ่เขียนขึ้นมาเพื่อแก้ไขปัญหา การคำนวณ
ตามสูตรต่าง ๆ และตอบสนองกับความต้องการในการใช้งานซึ่งในภาษา C ไม่มีมาให้ ซึ่งฟังก์ชัน
ประเภทนี้ จะมีโครงสร้างดังนี้
ประเภทนี้จะมีโครงสร้างดังนี้
Type Function_Name (arg1,arg2,…,argN)
Type arg1;
Type arg2;
Type argN;
{
Var_Type Var_Name1;
Var_Type Var_Name2;
Statement1;
Statement2;
StatementN;
return(Value);
} |
อธิบาย
Type |
เป็นประเภทของผลลัพธ์ของฟังก์ชันที่ได้จากการทำงานตัวอย่างเช่น ฟังก์ชันที่ใช้หาค่าภาษีมูลค่าเพิ่ม (VAT) นั้น ผลลัพธ์ที่ได้จากการคำนวณ หากเป็นเลข ทศนิยม ก็จะต้องกำหนดประเภทของฟังก์ชัน (Type) เป็น float แต่ถ้าผู้ใช้งานไม่กำหนดค่าใด ๆ ให้กับฟังก์ชัน ค่ามาตรฐานที่จะถูกกำหนดคือ เลขจำนวนเต็ม (Int) |
Var_Type |
เป็นประเภทของตัวแปร ซึ่งผู้ใช้งานจะต้องกำหนดประเภทของตัวแปรด้วย เพื่อให้ระบบรับรู้ว่ากำลังดำเนินการกับตัวแปรประเภทใดอยู่ |
Var_Name |
เป็นการระบุชื่อตัวแปรที่ต้องการใช้งาน |
return |
เป็นคำสั่งที่ใช้ในการส่งผลลัพธ์จากการทำงานของฟังก์ชันนั้น กลับไปยังคำสั่งที่เรียกใช้งาน ซึ่งค่าของ Value คือ ค่าผลลัพธ์ที่ได้จากการทำงานในฟังก์ชันนั้น สามารถเป็นค่าคงที่ หรือตัวแปรได้และจะต้องเป็นประเภท (Type) เดียวกันกับประเภทของฟังก์ชันที่ได้ประกาศไว้ตอนต้น หากฟังก์ชันใดไม่มี
การส่งค่ากลับคืนก็ไม่จำเป็นต้องระบุคำสั่ง return นี้ |
ตัวอย่างโปรแกรม
คุณครูต้องการให้นักเรียนแสดงข้อความทั้งหมด 4 บรรทัด
โดยบรรทัดแรกให้แสดงข้อความว่า
Hello everyone, บรรทัดที่สองให้แสดงเครื่องหมาย * จำนวน 20 ตัว บนจอภาพ บรรทัดที่สามให้
แสดงการแนะนำ ชื่อ - นามสกุล ของนักเรียน เช่น My name is Thanphisit Khunyodying
และบรรทัดที่สี่ ให้แสดงเครื่องหมาย * จำนวน 20 ตัว บนจอภาพ จึงให้นักเรียนเขียนโปรแกรมเพื่อ
แสดงผลข้อมูล ดังนี้
“ให้นักเรียนเขียนโปรแกรมโดยใช้ฟังก์ชันที่ชื่อ star20( ) ในการแสดงข้อความเป็นตัวอักษรสอง
บรรทัด แสดงข้อความว่า Hello everyone เมื่อแสดงข้อความหนึ่งบรรทัดแล้วจะแสดงเครื่องหมาย
* จำนวน 20 ตัว จากนั้นจะแสดงข้อความเป็นตัวอักษรในบรรทัดต่อไป เป็นการแนะนำ ชื่อ-นามสกุล
ของนักเรียน จากนั้นให้แสดงเครื่องหมาย * อีก 20 ตัว”
วิเคราะห์ปัญหา (Analysis)
สิ่งที่โจทย์กำหนด :: กำหนดให้ฟังก์ชัน star20( ) แสดงเครื่องหมาย * จำนวน 20 ตัวด้วยคำสั่ง
while (x<=20) ในบรรทัดที่สองและบรรทัดที่สี่ และกำหนดให้ฟังก์ชัน main( ) แสดงข้อความว่า
Hello everyone ในบรรทัดแรก และแสดงข้อความแนะนำ ชื่อ-นามสกุล ของนักเรียน เช่น
My name is Thanphisit Khunyodying ในบรรทัดที่สี่
บนจอภาพ
สิ่งที่โจทย์ต้องการ :: แสดงข้อความว่า Hello everyone,
ในบรรทัดแรก บรรทัดที่สองแสดง
เครื่องหมาย * จำนวน 20 ตัว บรรทัดที่สาม แสดงการแนะนำชื่อ-นามสกุล ของนักเรียน เช่น My name
is Thanphisit Khunyodying ในบรรทัดที่สี่ และแสดงเครื่องหมาย * จำนวน 20 ตัว บนจอบภาพ
การแก้ปัญหา (Problem Solving) ตามแนวทางการคิดเชิงคำนวณ โดยการคิดแบบ "ขั้นตอนวิธี" (Algorithm) ดังนี้
Pseudo Code |
Flowchart |
Algorithm Function star20( )
1. Start
2. int x=0
3. while (x<=20)
3.1 Print *
3.2 x++
4. Print ("\n");
5. End
|
|
Algorithm Function main( )
1. Start
2. Print Hello everyone,
3. Call Function star20( )
4. Print My name is Thanphisit Khunyodying
5. Call Function star20( )
6. End
|
|
เขียนโปรแกรม (Coding)
บรรทัดที่ |
โปรแกรม |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 |
#include <stdio.h>
void star20( )
{ int x=0; while (x<=20) { printf("*"); x++; } printf("\n");
}
int main( )
{ printf("Hello everyone, \n");
star20( ); printf("My name is Thanphisit Khunyodying \n");
star20( );
} |
อธิบายโปรแกรม
บรรทัดที่ 1 |
เรียกใช้ไลบรารีฟังก์ชัน stdio.h |
บรรทัดที่ 2 |
สร้างฟังก์ชัน star20( ) ขึ้นเอง |
บรรทัดที่ 3 |
เริ่มต้นการทำงานของฟังก์ชัน star20( ) ด้วย { |
บรรทัดที่ 4 |
กำหนดค่าตัวแปร x เท่ากับ 0 |
บรรทัดที่ 5 |
กำหนดการวนรอบเมื่อ x น้อยกว่าหรือเท่ากับ 20 ถ้าเงื่อนไขเป็นจริง
ให้ทำงานที่บรรทัดที่ 6 ถึง 9 |
บรรทัดที่ 6 |
เริ่มต้นการทำงานของคำสั่ง while ด้วย { |
บรรทัดที่ 7 |
แสดงเครื่องหมาย * หนึ่งตัว |
บรรทัดที่ 8 |
เพิ่มค่าตัวแปร x ขึ้นอีก 1 |
บรรทัดที่ 9 |
สิ้นสุดการทำงานของคำสั่ง while ด้วย } |
บรรทัดที่ 10 |
ขึ้นบรรทัดใหม่ 1 บรรทัด |
บรรทัดที่ 11 |
สิ้นสุดการทำงานของฟังก์ชัน star20( ) ด้วยเครื่องหมาย } |
บรรทัดที่ 12 |
เข้าสู่การทำงานของโปรแกรมหลักด้วย int main( ) |
บรรทัดที่ 13 |
เริ่มต้นการทำงานของโปรแกรมหลัก int main( ) ด้วยเครื่องหมาย { |
บรรทัดที่ 14 |
แสดงข้อความ Hello everyone, บนจอภาพ พร้อมขึ้นบรรทัดใหม่ |
บรรทัดที่ 15 |
เรียกใช้ฟังก์ชัน star20( ) |
บรรทัดที่ 16 |
แสดงข้อความ My name is Thanphisit Khunyodying พร้อมขึ้นบรรทัดใหม่ |
บรรทัดที่ 17 |
เรียกใช้ฟังก์ชัน star20( ) |
บรรทัดที่ 18 |
สิ้นสุดการทำงานของโปรแกรมหลัก int main( ) ด้วยเครื่องหมาย } |
ผลลัพธ์บนจอภาพ
Hello everyone,
********************
My name is Thanphisit Khunyodying
******************** |
จากการแสดงผลลัพธ์นี้ จะทำให้เห็นประโยชน์ของการเขียน ฟังก์ชันอย่างง่ายไว้ใช้งานเพราะ
หากไม่มีฟังก์ชัน จะต้องเขียนโปรแกรมเพิ่มเพื่อสร้างเครื่องหมาย * อีก 20 ตัว การที่เขียนเป็นฟังก์ชัน
ก็จะทำให้ สามารถเรียกกลุ่มคำสั่งหรือฟังก์ชันนั้นมาใช้ใหม่ได้
(แหล่งข้อมูล... คู่มือการเขียนโปรแกรมภาษา C ฉบับผู้เริ่มต้น / ประภาพร ช่างไม้)
การทดสอบการทำงานของโปรแกรมจากเว็บ https://repl.it/languages/c
คลิกเครื่องหมาย เพื่อดูผลผลลัพธ์การทำงานของโปรแกรมด้านล่าง
(ลิงค์สำรอง https://repl.it/repls/AmusingYummyFiles)
———————————————————————————————————————————
|