ฟังก์ชัน

27 June 2015

ในบทนี้คุณจะได้เรียนรู้เกี่ยวกับฟังก์ชันในภาษา C เบื้องต้น เช่น ฟังก์ชันที่สร้างมากับภาษา และฟังก์ชันที่สร้างขึ้นเอง

ฟังก์ชัน คือส่วนของโปรแกรมที่ถูกเขียนขึ้นเพื่อทำหน้าที่เฉพาะของมัน ฟังก์ชันในภาษา C นั้นจะมีฟังก์ชันที่มากับภาษา และฟังก์ชันที่ผู้ใช้สร้างขึ้นเอง ในบทนี้เราจะพูดเกี่ยวกับฟังก์ชันที่จะสร้างขึ้นเองเป็นส่วนมาก

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

ในภาษา C มีฟังก์ชันต่างๆ มากมายที่เราสามารถใช้ได้ เพื่อทำหน้าที่ต่างๆ ที่ต้องการ ในการใช้ฟังก์ชันโดยปกติต้อง include header file ของฟังก์ชันนั้นมาด้วย ตารางข้างล่างเป็นตัวอย่างฟังก์ชันบางส่วนในภาษา C

Function nameLibraryUsage
scanfstdio.hgetting keyboard input
printfstdio.hdisplay text to screen
getchconio.hget character input
sqrtmath.hget square root of number
floormath.hfloor floating point of number to int
strlenstdio.hget characters' length

ตัวอย่างการใช้ฟังก์ชันที่มากับภาษา C

sqrt(25); //5
floor(1.34); //1

การประกาศฟังก์ชัน

เนื้อหาที่เราจะเน้นในบทนี้คือฟังก์ชันที่ผู้ใช้สร้างขึ้นเอง ในภาษา C นั้น คุณสามารถสร้างฟังก์ชันของคุณเอง เพื่อที่จะให้ทำงานตามที่ต้องการได้ แนวคิดของฟังก์ชันก็คือนำโค้ดกลับมาใช้ใหม่โดยที่ไม่ต้องเขียนโปรแกรมใหม่ทั้งหมด ก่อนที่เราจะใช้ฟังก์ชันมันจำเป็นต้องถูกประกาศก่อน ซึ่งรูปแบบการประกาศฟังก์ชันในภาษา C:

type name (parameter1, parameter2, ...)
{
    statements
}

type เป็นประเภทของฟังก์ชันที่ต้องการประกาศ ซึ่งขึ้นกับค่าผลลัพธ์ของฟังก์ชันเป็นอะไร คุณสามารถประกาศ function type ได้เหมือนกับ primitive datatype เช่น int, float, char และอื่นๆ สำหรับฟังก์ชันที่ไม่มีการส่งค่ากลับจะมี type เป็น void

name เป็นชื่อของฟังก์ชันที่คุณต้องการสร้าง ในการตั้งชื่อฟังก์ชันมันมีกฏเช่นเดียวกันเหมือนกับการตั้งชื่อตัวแปร ชื่อของฟังก์ชันเป็นสิ่งที่เราจะใช้เมื่อต้องการใช้งานฟังก์ชัน

parameters เป็นตัวแปรที่ส่งเข้ามาในฟังก์ชัน พารามิเตอร์เป็นทางเลือกซึ่งสามารถมีหรือไม่ก็ได้

statement เป็นคำสั่งของโปรแกรมเพื่อที่จะให้ฟังก์ชันทำงานและได้ผลลัพธ์ที่ต้องการ

มาดูตัวอย่างของฟังก์ชันหา factorial ของตัวเลขที่เราจะสร้างขึ้นเอง

#include <stdio.h>

int myFactorial(int);

int main()
{
    int myNumber = 5;
    printf("%d face is %d", myNumber, myFactorial(myNumber));
    return 0;
}

int myFactorial(int n)
{
    int result = 1, i;
    for (i = 1; i <= n; i++)
    {
        result *= i;
    }
    return result;
}

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

และนี่เป็นผลลัพธ์ของโปรแกรม

5 face is 120

ฟังก์ชันพารามิเตอร์

ฟังก์ชันพารามิเตอร์เป็นพารามิเตอร์ที่ส่งเข้ามาในฟังก์ชัน โดยจะเป็นลำดับของตัวแปรที่ส่งเข้ามา พารามิเตอร์จะมีความสัมพันธ์กับอาร์กิวเมนต์ของฟังก์ชัน จากตัวอย่างก่อนหน้า ในฟังก์ชันหา factorial นั้นมีพารามิเตอร์คือ n มาดูตัวอย่างของฟังก์ชันพรารามิเตอร์

#include <stdio.h>

float area(float, float);

int main()
{
    float width = 8;
    float height = 5.4;

    printf("Area is %.2f", area(width, height));

    return 0;
}

float area(float w, float h)
{
    return w * h;
}

ในตัวอย่าง เราได้สร้างฟังก์ชันในการหาพื้นที่ของกล่องสี่เหลี่ยม ในการที่จะหาพื้นที่เราต้องการความกว้างและความยาว สังเกตว่าพารามิเตอร์ของฟังก์ชันนี่จะมีสองอัน คือ w และ h ซึ่งมีประเภทเป็น float และฟังก์ชันนี้ได้ return ค่าที่เป็น float กลับไปเช่นกัน เมื่อรันโปรแกรมจะได้ผลลัพธ์ดังนี้

Area is 43.20

นอกจากนี้ยังชันยังสามารถที่จะไม่มีพารามิเตอร์ได้

ฟังก์ชันอาร์กิวเมนต์

ฟังก์ชันอาร์กิวเมนต์ เป็นค่าของตัวแปรที่จะส่งเข้าไปในฟังก์ชัน ซึ่งจะต้องสอดคล้องกับฟังก์ชันพารามิเตอร์ ในตัวอย่างของคำสั่ง area(width, height) สังเกตุว่าฟังก์ชันอาร์กิวเมนต์จะมีสองตัว และประเภทของฟังก์ชันจะตรงกับลำดับของฟังก์ชันพารามิเตอร์ที่เราได้สร้างไว้

ค่า return ของฟังก์ชัน

ในการเขียนฟังก์ชันนั้น ส่วนมากจำเป็นต้องมีการส่งค่ากลับ โดยการใช้คำสั่ง return โดยในการประกาศฟังก์ชัน ประเภทของฟังก์ชันบ่งบอกถึงประเภทค่าที่ต้องการส่งกลับ จากในตัวอย่าง

float area(float, float);

สังเกตุว่า function type จะเป็น float นั่นหมายความว่าฟังก์ชันนี้จะมีค่าที่ส่งกลับเป็นเลขจำนวนจริง

นอกจากนี้ ในภาษา C เรายังสามารถสร้างฟังก์ชันที่ไม่มีค่า return ได้ โดยให้มี function type เป็น void มาดูตัวอย่าง

#include <stdio.h>

void introduce(char s[])
{
    printf("My name is %s\n", s);
}
void sayHello(char s[])
{
    printf("Hello %s\n", s);
}

int main()
{
    char name[] = "Mateo";

    introduce(name);
    sayHello("Tommy");
    return 0;
}

ผลลัพธ์เมื่อรันโปรแกรม

My name is Mateo
Hello Tommy

ในบทนี้คุณได้เรียนรู้เกี่ยวกับฟังก์ชันในภาษา C การสร้างและการใช้งานฟังก์ชันในพื้นฐาน

บทความนี้เป็นประโยชน์หรือไม่?Yes·No