สื่อวีดิทัศน์การสอน เรื่อง :: ฟังก์ชัน ::   

———————————————————————————————————————————

ฟังก์ชัน (Function) 1
         ฟังก์ชัน (Function) เป็นการเขียนคำสั่งหลาย ๆ คำสั่งมารวมกันไว้ภายในเครื่องหมาย { } เพื่อให้
คำสั่งเหล่านั้นทำงานตามวัตถุประสงค์ หรือเป้าหมายของการทำงาน และมีการตั้งชื่อกลุ่มคำสั่งใหม่ เรียกว่า
ชื่อฟังก์ชัน (Function Name) ประโยชน์ของการเขียนฟังก์ชันนั้น เพื่อทำให้ไม่ต้องเขียนชุดคำสั่งเดิม ๆ หลายครั้ง และช่วยให้การเขียนคำสั่งที่มีความซับซ้อนมีประสิทธิภาพมากขึ้น และมักจะนำการเขียนฟังก์ชันไปใช้กับการหาคำตอบของคำนวณเพื่อหาค่า หรือลักษณะของงานที่มีการเรียกใช้งานบ่อย ๆ เช่น การเขียนโปรแกรมเพื่อหาค่าภาษีมูลค่าเพิ่ม การคำนวณหาพื้นที่สี่เหลี่ยมเป็นต้น

(แหล่งข้อมูล...  คู่มือเรียนรู้ภาษาซีด้วยตนเอง / ผศ.รุ่งทิวา เสาร์สิงห์)

———————————————————————————————————————————

ประเภทของฟังก์ชัน 1
         ฟังก์ชันที่ใช้ในภาษาซีนั้น สามารถแบ่งออกเป็น 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)


———————————————————————————————————————————