ในบทนี้คุณจะได้เรียนรู้เกี่ยวกับฟังก์ชันในภาษา 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 | cmath.h | get square root of number |
floor | cmath.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 การสร้างและการใช้งานฟังก์ชันในพื้นฐาน
ไม่มีความคิดเห็น:
แสดงความคิดเห็น