ในบทนี้นักเรียนจะได้เรียนรู้เกี่ยวกับฟังก์ชันในภาษา C เบื้องต้น เช่น ฟังก์ชันที่สร้างมากับภาษา และฟังก์ชันที่สร้างขึ้นเอง
ฟังก์ชัน คือส่วนของโปรแกรมที่ถูกเขียนขึ้นเพื่อทำหน้าที่เฉพาะของมัน ฟังก์ชันในภาษา C นั้นจะมีฟังก์ชันที่มากับภาษา และฟังก์ชันที่ผู้ใช้สร้างขึ้นเอง ในบทนี้เราจะพูดเกี่ยวกับฟังก์ชันที่จะสร้างขึ้นเองเป็นส่วนมาก
ฟังก์ชันในภาษา C #
ในภาษา C มีฟังก์ชันต่างๆ มากมายที่เราสามารถใช้ได้ เพื่อทำหน้าที่ต่างๆ ที่ต้องการ ในการใช้ฟังก์ชันโดยปกติต้อง include header file ของฟังก์ชันนั้นมาด้วย ตารางข้างล่างเป็นตัวอย่างฟังก์ชันบางส่วนในภาษา C
Function name | Library | Usage |
---|---|---|
scanf | stdio.h | getting keyboard input |
printf | stdio.h | display text to screen |
getch | conio.h | get character input |
sqrt | math.h | get square root of number |
floor | math.h | floor floating point of number to int |
strlen | stdio.h | get 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 การสร้างและการใช้งานฟังก์ชันในพื้นฐาน